웹해킹은 이제 거의 정형화 되었고 전용 툴을 사용할 수준이 되었습니다. 전용 툴이라고 해도 큰 작업도 아닙니다. 그냥 배치파일 돌리듯 URL을 넣고 엔터 한번 넣고 기다리면 될 정도로 매우 간단해 졌습니다. 사이트에 있는 게시판과 같은 동적 페이지를 하나 잡아 URL을 하나만 넣어주면 되니까 그다지 시간이 걸리는 것도 아닙니다. 해킹하는데 500쿼리 정도를 날립니다. 소요 시간은 약 25분. 30분이 체 안되는 시간동안 DB를 향해 쿼리를 날립니다. 계산해보면 분당 16쿼리를 날린 셈입니다. 이 중에서 절반 이상이 실패하고 성공한 것을 몇개 발견해내면 이제 DB의 구조는 파악 가능합니다. 

 이런 현실이다보니 웹해킹 여부를 발견하는 방법도 점차 쉬워지고 있습니다. 알 수 없는 바이러스나 웜의 세계와는 달리 웹해킹은 프로그램의 이용으로 특정한 유형을 따르게 되고 있습니다. 그렇다보니 이제는 웹해킹을 당했는지 여부를 결정하는데 자세히 볼 필요도 없이 다음과 같은 부분부터 확인하게 되더군요.

이상한 프로세스가 실행되고 있다
 - 이 방법은 대단히 고전적인 수법입니다. 백도어 프로세스를 실행하는거죠. 이와 관련된 글은 다음 글이 있으니 참고하시길 바랍니다.
데이터베이스이 D99_Tmp 테이블이 생성되어 있다
 - 데이터베이스에 종종 D99_Tmp 테이블이 생성되어 있는 경우가 있습니다. 해킹시 임시로 사용하는 테이블로 내용을 보면 주로 C:\ 의 내용, ipconfig /all의 내용, net user 의 내용 등 기본적인 정보를 임시로 저장한 내용이 있습니다.

이 테이블은 꽤나 유명하기 때문에 정보보호진흥원에서 제공하는 웹나이트의 룰에는 추가가 되어 있을 정도입니다.



 하지만, 불행하게도 해킹이 끝난 후 자동으로 삭제하도록 되어 있어서 이 테이블이 없다하여 해킹이 이뤄지지 않았다고 보기에는 무리가 있습니다.
관리자가 모르는 데이터베이스의 백업이 생성되어 있다
 - 데이터베이스의 백업은 잘 하고 계신가요? 혹시 Microsoft SQL Server\MSSQL\BACKUP 에 이상한 파일이 존재하는 경우를 보신 적이 있으신지요? Microsoft SQL Server\MSSQL\BACKUP는 백업이 이뤄지는 기본적인 위치입니다. 기본값으로 백업을 진행했다면, 여기에 백업 파일이 존재한다는 뜻입니다. 실제로 백업을 하면 SQL 서버의 로그에는 백업이 진행되었음을 표시해줍니다.
 
 해킹된 서버의 데이터베이스의 로그를 보면 주기적으로 걸려있는 스케줄 백업 이외에 백업이 진행되었음을 발견할 수 있습니다. 또한 이 백업이 완료된 직후 MRTG에서는 갑작스러운 서버 트래픽의 증가를 볼 수 있습니다. 트래픽의 증가는 데이터베이스를 백업받아서 해커가 자신의 PC로 전송하는 것으로 보이며, 주민등록번호나 암호를 암호화하지 않은 데이터베이스라면 사회 전반적으로 무리를 일으킬 수도 있습니다.

 아주 드물지만 이 데이터베이스 백업 파일과 웹서버 파일을 통체로 압축한 것이 wwwroot 폴더에서 발견되기도 합니다. 백업 파일을 꼭 Microsoft SQL Server\MSSQL\BACKUP에서 찾을 것이 아니라, C:\에 ahcmd라는 파일이 있는지도 확인해보시기 바랍니다. 웹로그에 웹로그에 보니 "backup log MYDBNAME to disk = 'c:\ahcmd' with init--"와 같은 내용이 있더군요.
global.asa 파일 이외에 asa파일이 존재한다
 - IIS에서는 IIS 세팅을 위해 global.asa라는 파일을 지원합니다. 이 파일은 텍스트 파일로 IIS의 기본 세팅을 설정하는데 도움을 주지요. DB의 값이라던가, 세션 내용이라든가... 많은 부분을 설정 할 수 있습니다. 불행하게도 이 파일도 .asp파일과 같이 실행가능 파일이기 때문에 .asp파일과 같은 동작을 합니다.

 대부분의 경우 이 파일은 단 한개만 존재하며, 여러 개를 두는 경우는 거의 없습니다. 하지만, .asa파일은 뭔가 중요한 파일이기 때문에 대부분 건드리지 않지요. 이러한 점을 이용하여 서버에 global.asa파일 이외에 gif.asa나 email.asa같은 파일을 올려두는 경우가 있습니다.

 이런 파일들을 메모장으로 보면 알 수 없는 인코딩되어 알 수 없는 내용으로 되어 있거나, 중국어 문자를 갖고 있는 경우가 많습니다. 이를 풀어보면 웹쉘(WebShell)이지요.
upload 폴더에 .asp나 이상한 파일이 있다
 - 많은 사이트들이 파일 업로드를 지원합니다. 그리고 이 파일 업로드는 매우 종종 악용됩니다. 서버에 .asp파일이 있다면 서버는 이 파일을 다운로드 하게 하거나, 이 파일을 실행시켜버릴 것입니다. 대부분의 경우가 다운로드를 할 수 있도록 하고 있습니다. 하지만, 종종 서버의 설정 상의 실수로 이것이 실행되어 버리는 경우가 있습니다.

 특히, 진짜 경로를 발견해버린다면 종종 실행되는 경우가 있습니다. 예를 들면, 서버에 wwwroot\upload 라는 곳에 파일을 올린다고 가정 했을 때 이 파일의 실제 이름이 test.asp라면, 정상적인 사용자라면 siteurl/download.asp?filename=test.asp와 같은 형식으로 접근할 것입니다. 하지만, siteurl/upload_tmp/test.asp와 같이 접근한다면, 이 파일은 실행될 가능성이 있습니다.

 매우 성공 확률이 낮은 공격법이기는 하지만 대단히 손쉽게 원하는 결과를 얻을 수 있습니다.


 위에 나열한 다섯가지 증상만으로 웹서버가 웹해킹을 당하지 않았다고 막연하게 판단하기는 어렵습니다. 단지 위에 나열한 다섯가지는 자주 볼 수 있는 해킹의 증상일 뿐이지요. 혹시나 자신의 서버가 막연하게 안전하다고 생각하고 계시는 분이 있으시다면, 한번 이런 부분이 있는지 확인해보시기 바랍니다. 재미삼아서 봤다가 의외의 월척(?)이 걸릴 수도 있으니까 말이죠.

 

'Infrastructure' 카테고리의 다른 글

해킹 당한 후 증상들 #2  (0) 2008.11.14
해킹 당한 후 증상들 #1  (0) 2008.11.14
제어판/관리콘솔 실행명령어 리스트  (0) 2008.11.13
간단한 리소스 반환방법  (0) 2008.11.13
SCAN 프로그램  (0) 2008.11.13

+ Recent posts