트로이 목마 색출하기
이 글은 SANS Diary의 Detection of Trojan control channels을 번역한 것입니다.
최근 네트워크가 심각하게 해킹 당한 조직과 같이 일한 적이 있습니다. 네트워크 신뢰도는 바닥을 치고 있었지요. 네트워크를 전부 재구축할만한 금전적 여유가 없었지만, 그대로 방치하면 지적 자산의 대부분을 잃을 수 있는 상황이었습니다.
가장 확실한 방법을 쓸 수 없었기 때문에, 다른 기법을 몇 가지 사용해서 감염된 호스트들을 찾아냈습니다. 이 작업을 하면서 외부로 나가는 트래픽 자체에는 신경 쓰지 않았습니다. 데이터 유출 방지 솔루션이 최근 몇 년간 괄목할 만큼 발전하긴 했지만, 여전히 데이터를 몰래 빼낼 수 있는 방법이 많습니다. 그 대신, 시스템에서 활동하고 있는 트로이 목마의 활동 징후를 찾는 것을 목표로 삼았습니다.
- 먼저 현재 네트워크 상황을 잘 파악할 수 있도록 조치했습니다. 이 때는 침입탐지시스템을 설치하느라 비용이 많이 들었지만, DNS 쿼리를 로그로 남기거나 방화벽이 현재 세션을 로그로 남기도록 설정하는 등 간단한 환경 설정 변경만으로도 네트워크 상황 파악에 상당히 도움이 됩니다.
- 네트워크 경계에 IDS를 설치하고 EmergingThreats에서 배포한 바이러스 규칙을 적용해서 알려진 트로이 목마와 각종 변종을 탐지하도록 했습니다. Matt Jonkman과 그의 팀은 정기적으로 최신 버전의 C&C 서버 채널 시그니처 목록을 배포합니다. 이런 시스템을 어떻게 설치하는지 잘 모르시겠다면, BotHunter를 참조하세요
내부 네트워크의 호스트에서 외부로 나가는 모든 DNS 쿼리를 스니핑해서 저장하고, 몇 가지 휴리스틱 기법을 이용해서 조사했습니다.
- 비정상적으로 매우 낮은 TTL(Time To Live) 값을 가진 DNS 응답
- 유동 DNS 프로바이더가 제공하는 도메인 이름이 포함된 DNS 응답
- 예상 TTL 값에 비해 클라이언트가 너무 빈번하게 DNS 쿼리를 전송하는 경우
- 로컬 네임스페이스 범위를 벗어난 호스트 이름에 대한 DNS 요청 (127.0.0.0/8 혹은 0.0.0.0/32, RFC1918 IP스페이스 범위 내, 혹은 조직 내 공인/사설 IP주소 범위 내 임의의 IP주소를 지시하는 리소스 레코드와 함께 응답함.)
- 특정 호스트 이름에 대한 DNS 응답이 리소스 레코드 1개로 구성되어 있고, 24시간 내에 2번 이상 바뀌는 경우
비정상 네트워크 행위 탐지는 매우 강력한 C&C 서버 채널 탐지 도구가 될 수 있습니다. 안타깝게도 비정상 네트워크 행위 탐지는 네트워크가 공격을 당하기 전에 미리 기준선(baseline)을 만들어 두어야 효과적이라는 단점이 있습니다. 그럼에도 불구하고 비정상 네트워크 행위 탐지는 매우 유용하게 사용될 수 있습니다.
- 시그니처를 만들어서 80번 포트와 443 포트의 TCP 세션이 각기 올바른 HTTP나 SSL 트래픽인지 확인합니다. FlowGrep을 쓰거나 프록시 오류 로그를 검토할 수도 있습니다.
- 업무 시간 외에 인터넷에 접속하는 HTTP 연결도 정상 트래픽일 수 있습니다. 소프트웨어 업데이트를 생각해보세요. 이런 류의 정상 접속은 예외로 필터링하고, 그 외의 연결은 해킹인지 확인해야 합니다. 그리고 공격자가 여러분과 같은 시간대에서 공격한다는 보장도 없습니다.
- 원격 웹 서버의 URL이 매개변수만 바뀌면서 반복된다면 HTTP를 경유한 데이터 유출일 가능성이 있습니다.
호스트 쪽으로도 몇 가지 작업을 했습니다. 먼저 예측 탐지 시험(proactive detection test)을 성공적으로 통과한 안티바이러스 회사 (예: AV-Comparatives) 목록을 만들었습니다. 이 시험은 안티바이러스가 오래된 시그니처 데이터베이스로 최근 바이러스를 잡아낼 수 있는지 시험합니다. 우리는 이런 제품들을 구입하고, 각 안티바이러스를 순서대로 실행하면서 모든 로컬 하드 드라이브를 검사하는 라이브 CD를 만들었습니다. 이 CD를 사무실에 배포하고 주말에 돌렸습니다.
이 CD는 검사가 종료되면 중앙의 FTP 서버에 로그와 해당 시스템에서 검색된 모든 수상한 바이너리를 저장했습니다. 그 후 각 샘플을 상세히 분석했습니다. 여기서 악성 코드가 발견되면 시그니처를 만들어 네트워크 침입 탐지 시스템에 추가했습니다.
우리는 중요 시스템에 Sysinternal의 RootkitRevealer를 실행하는 로그온 정책을 배포하고, 보고서를 원격 네트워크 공유 폴더에 전송하도록 했습니다. 보고서를 보고 파일시스템 API가 후킹되지 않았다는 확신을 가지게 되었습니다. 이후 Mandiant의 Red Curtain을 실행해서 수상한 바이너리를 찾았습니다.
여러분이 호스트 탐지 기반 조사 방식이나 네트워크 탐지 기반 조사 방식 중 어느 쪽을 사용해도 상관없습니다만, 조사하면서 특이 사항을 식별하고, 위협의 징후인지 아닌지 판단한 다음, 이전 조사 단계에서 얻은 정보를 적용해보거나 무엇을 추가로 모니터링 해야 할지 알아낼 수 있어야 합니다. 그 후에는 위협원과 위협원이 네트워크에 미치는 영향을 분석해야 합니다. 노드 링크 분석도 좋은 방법 중 하나인데 나중에 다루도록 하겠습니다.
또 다른 아이디어가 있으면 알려주세요.
by euan | 2008-11-20 10:38:43 | 미분류 | 트랙백 (1) | 덧글 (0)
Tracked from nchovy's me2DAY 2008-11-20 10:46:00
트로이 목마 색출하기, 행위 분석 기법을 다루고 있습니다.




