HOME > 보안정보 > 최신보안동향
Security Information
문의사항
작성자 관리자 날짜 2010-06-25
제목 데이터베이스의 취약점

 

 < 데이터베이스의 취약점 >



데이터베이스는 안전한가 ?

이번에는 데이터베이스가 관리포트를 인터넷에서 접속이 가능하게 오픈 해 놓았을 경우에 발생하는 문제에 대해서 조사한 결과를 소개하려 한다. 대부분의 데이터베이스 관리자의 계정과 패스워드는 취약한 것으로 설정이 되어 있었다.

Oracle (1521/tcp)
SQL Server (1433/tcp)
MySQL (3306/tcp)
PostgreSQL (5432/tcp)

위에 표시되어 있는 번호가 각 데이터베이스의 관리 포트 번호 이다. 이러한 포트에 대해서 외부에서 접속이 가능하도록 열어놓을 필요는 없을 것이다. 하지만 일년에도 수 차례 관리포트를 이용해서 데이터베이스에 접속하는 사고가 발생하고 있다. 이러한 사고의 원인으로는 대체적으로 데이터베이스 서버에 대한 접근제어가 이루어지지 않았기 때문이다. 아래의 그래프는 데이터베이스가 공격 받은 수를 그래프로 표시한 것 이다.

데이터베이스 별 공격 횟수 (2009.10. ~2010.04. / LAC조사)
[그림1] 데이터베이스 별 공격 횟수 (2009.10~2010.04/LAC조사)

위의 그래프에서 알 수 있듯이 “데이터베이스 별 공격 횟수” 는 SQL Server > MySQL > Oracle > PostgreSQL 순으로 SQL Server에 대한 공격이 가장 많은 것을 확인 할 수 있었다. 반면에 PostgreSQL은 해당 데이터베이스를 운영하고 있는 사용자도가 적어서도 있겠지만, 공격자에게 있어서 그다지 매력적이지 않은 환경인 것으로 보인다. 데이터베이스에 대한 접근 제어를 하지 않는 사용자에게는 PostgreSQL이 가장 좋은 환경일 지도 모른다.

 

SQL Server에 대한 공격


SQL Server가 공격을 받았을 경우에 실행되는 명령어는 아래와 같다. 공격자는 취약한 패스워드를 이용해서 데이터베이스에 접속하여 해당 명령들을 실행시키고 있다.

SQL Server에 대한 공격 명령 예제
[그림2] SQL Server에 대한 공격 명령 예제

각 행은 어떤 역할을 하고 있는지 알아보자.

- 1행, 2행 : 함수 정의
- 3행 : 명령어의 실행
- 4행~17행 : “&”으로 연결되는 OS 명령
- 5행~11행 : Setuply.sys라는 파일에 FTP 명령을 추가하여 명령 파일 생성
- 12행 : FTP명령 파일을 인수로 지정하여 FTP 접속을 실행
* 3행~18행 : 보기 쉽게 하기 위해 행 바꿈을 넣었지만 실제로는 1줄의 SQL명령임

FTP 서버에서 「nb.exe, 730.exe」 2가지의 파일을 가져 온다.
각 파일명을 「ne.exe→setuply.exe」, 「730.exe→tcpser10.exe」로 변경 후 저장한다.
그 후 setuply.exe와 tcpser10.exe를 실행하고, 각각의 실행 파일을 삭제 한다.
실행된 프로그램은 봇(Bot) 프로그램으로서 공격자는 봇을 통해 데이터베이스 서버를 자유롭게 조작할 수 있다. 이 후 데이터베이스 서버는 접속 하여 사용 하는 다른 IP(사용자)주소로 봇을 전파시켜 버린다.

 

MySQL에 대한 공격

다음으로는 MySQL에 대한 공격에 대해서 알아보자. MySQL은 SQL Server와 마찬가지로 취약한 패스워드를 이용해서 접속하여 아래의 명령을 실행시켰다.

MySQL에 대한 공격 명령 예제
[그림3] MySQL에 대한 공격 명령 예제

위의 그림을 보면 다음과 같은 순서로 공격이 이루어 지고 있는 것을 알 수 있다.

1. 로그인 후 변수 등의 설정을 실시해서 특정 테이블을 초기화
2. Concat을 사용하여 악성 프로그램을 텍스트 형식으로 전송
3. 전송한 텍스트 파일을 실행 파일로 변환
4. VB스크립트를 작성하여 외부 서버에 있는 k.exe를 취득해서 실행
5. 공격 흔적 삭제

SQL Server에 대한 공격과 마찬가지로 SQL 명령과 OS 명령들을 조합하여 외부 서버에 있는 실행 파일을 가져온다. 외부에서 실행파일을 가져오는 방법으로는 SQL Server에서는 FTP를 사용했지만, MySQL에서는 VB스크립트를 이용해서 HTTP를 통해 가져올 수 있었다.


각 공격 형태를 보았을 때 형태는 다르지만 데이터베이스에서 의심스러운 통신이 발생하고 있다는 사실에는 차이가 없다. 이번에는 데이터베이스의 관리포트에 대한 공격에 대해서 알아보았다. 하지만 데이터베이스에 연결할 수 있는 IP주소가 제한이 되어 있다면 사용자는 위의 공격에 대해서 걱정할 필요는 없어질 것 이다.
하지만 “일반적으로 일어나지 않는다” 라고 생각되는 공격들이 JSOC에서 관측되고 있는 현실을 고려해보면 데이터베이스에 대한 접근제어를 실시하는 것이 바람직하다고 생각된다.

 


작성자: 카와구치 히로시 (川口 洋) 
               주식회사 LAC 
 
 
원문보기