악성코드 분석 환경 구축 (3)

보안/악성코드 분석 2012. 6. 28. 15:05

네트워크 트래픽 캡처와 분석

 앞의 설정으로 윈도우에서 모든 패킷은 컨트롤러로 가게 된다. 

이제 컨트롤러에서 이 패킷을 잡아서 분석을 해야하는데, 패킷 캡처(지나가는 패킷 잡기), 분석 프로그램은 세 가지가 있다. wireshark, tshark, tcpdump. 그리고 부가적으로 특정 의심 트래픽에 대해 경고를 위해 Snort IDS도 사용된다.


 wireshark

  wireshark는 네트워크 프로토콜 분석기로, 단순 패킷 캡처뿐만 아니라, 수백 개의 프로토콜에 대해 심층 분석을 할 수 있다.

  설치 방법 : $sudo apt-get install wireshark 

  (※ 인터넷이 연결되야겠죠 ? 앞에 host-only 모드서 NAT으로 바꾸고 설치해주세요.) 

- 그림 1. wireshark 설치 -


 tshark

  tshark는 wireshark의 CUI 모드라 생각하면 된다.

  설치 방법 : $sudo apt-get install tshark

- 그림 2. tshark 설치 -


  실습 : eth0 인터페이스에서 60초 동안 패킷을 캡처하는 방법 => $sudo tshark -i eth0 -a duration:60 -w output.pcap


   패킷을 캡쳐하면, 나온 결과물을 wireshark나, tshark로 분석하면 된다.(※ ㅜ ㅜ 다운받은 tshark가 버그가 있어서 실습해보진 못했네요 ㅠ)


 tcpdump

  wireshark나 tshark 같은 확장 프로토콜 분석기를 포함하고 있진 않지만, 옛날부터 사랑을 받아온 도구로 기본적인 패킷캡처와 분석을 한다.


  설치방법 : $sudo apt-get install tcpdump (※ 이미 설치되어 있을 수도 있다.)


  실습 : eth0 인터페이스에서 172.16.172.138로 오가는 패킷을 캡처하는 방법 

  => $sudo tcpdump -i eth0 -s 0 -w output.pcap host 172.16.172.138

- 그림 3. tcpdump 실습 -


 Snort IDS

  위까지 이제 패킷캡쳐, 분석은 끝나고 부가적인 '특정 의심 트래픽'에 대한 경고를 위해 Snort IDS를 설치한다. 운영 환경에서 IDS가 존재한다면, 기업 네트워크에서 동일하거나 유사한 악성코드가 존재할 경우 어떤 종류의 경고가 발생하는지를 알 수 있다.


  설치 및 시그니처 추가

   step 1. $sudo apt-get install snort

- 그림 4. Snort IDS 설치 -


   step 2. 처음 설치시 기본 설저으로 본인의 네트워크 대역을 적어주자

- 그림 6. Snort IDS 설정 -


   step 3. $sudo wget -P /etc/snort/rules http://rules.emergingthreats.net/open/snort-2.9.0/emerging-all.rules

- 그림 7. 시그니처 다운 -


   (※ 위의 그림은 시그니처를 다운받는 방법에 관한 그림이고, 다른 시그니처를 파일을 얻어서 설치하실분은 http://rules.emergingthreats.net에 접속하여, 원하는 시그니처를 받아서 업데이트해보아요.)


   step 4. $sudo echo 'include $RULE_PATH/emerging-all.rules' >> /etc/snort/snort.conf

- 그림 8. 시그니처 추가 -


   (※ 저는 sudo를 같이 써서 추가하려 했는데, 자꾸 허가거부가 떠서 걍 sudo -s를 이용해서 시그니처 추가했습니다.)


   step 5. $sudo /etc/init.d/snort start 

- 그림 9. Snort 서비스 실행 -


  여기까지 새로운 시그니처가 추가되고 서비스도 올라가 있는 상태이다. 

 로그는 /var/log/snort에 항상 남고, 기본적으로 IDS 시그니처에 탐지되면 

 'alert'라는 탐지된 패킷의 정보를 가진 파일이 생긴다. 

  추가적으로 더 적용해야하는 부분은 아래와 같다

  - 필요에 따라 시그니처와 전체 룰셋을 활성화하거나 비활성화하기

  - 업데이트된 시그니처 유지를 위한 oinkmaster 설정하기

  - MySQL 데이터베이스에 로그와 경고를 작성하기 위해 --with-mysql 플래그를 사용한 Snort 컴파일하기. 이 경우 BASE를 설치한 후 웹 인터페이스로 경고를 열람하고 분석할 수 있다.


INetSim


 위의 과정까지 패킷을 잡아서 분석까지 했다. 이제 이 패킷을 또 어떻게 하느냐? 

 INetSim 이라는 프로그램을 이용하여, 악성코드가 생성한 트래픽을 로깅한다. INetSim는 기본적인 악성코드 트래픽 로깅(IDS 시그니처나 방화벽, 웹 프로시 로그에서 찾을 수 있는 정보)과 악성코드가 자주 통신하는 다양한 서비스를 시뮬레이션 할 수 있다.


 설치하기

  step 1. http://www.inetsim.org/requirements.html 로 접속하여 자신에게 없는 라이브러리를 다운받아서 설치

- 그림 10. 라이브러리 설치 -


  step 2. $wget http://www.inetsim.org/downloads/inetsim-1.2.tar.gz

그림 11. inetsim 다운로드 -


  step 3. $sudo groupadd inetsim

- 그림 12. inetsim 그룹추가 -


  step 4. $tar -xvf inetsim-1.2.tar.gz

- 그림 13. inetsim 압축풀기 -


  step 5. step 4에서 압축 푼 폴더로 이동하여 $sudo ./setup.sh 명령

- 그림 14. 진짜 설치 -


  step 6. 이제 입맛에 맞게 conf/inetsim.conf 파일의 설정을 변경하는데, 기본적으로 INetSim이 실행되고 있는 컨트롤러 시스템의 IP 주소 변경 (conf 폴더로 이동 후 $vi inetsim.conf)

- 그림 15. 설정 변경(1) -

   위의 그림과 같이 'service_bind_address [자기 주소]' 형식으로 추가해준다.


  step 7. 아직 설정이 끝나지 않았다. 아래 그림과 같이 redirect_enabled 값을 yes로

- 그림 16. 설정 변경(2) -

   위의 그림과 같이 'redirect_enabled yes' 추가


  step 8. 마지막 설정이다 리다이렉션을 하지 않을포트를 redirect_exclude_port 값으로 추가 대표적으로 22추가. 그래야 SSH로 컨트롤러 접속 가능

- 그림 17. 설정 변경(3) -

   위의 그림과 같이 'redirect_exclude_port tcp:22' 추가


  step 9. $sudo ./inetsim

   드디어 실행이다.. 윈도우에서 악성코드를 실행하면 INetSim은 악성코드 활도에 대한 로그를 기록한다. log/service.log에 기록이 남는다. 예를 들어 윈도우에서 인터넷을 접근했다하면, INetSim 서버가 기본 sample.html로 요청에 대해 응답을 한다. 이는 페이크 모드로 특정 HTML 내용으로 응답하게 하려면 inetsim.conf에서 리얼 모드로 설정한다.




끝 ~






 


'보안 > 악성코드 분석' 카테고리의 다른 글

악성코드 분석 환경 구축 (4)  (0) 2012.07.05
악성코드 분석 환경 구축 (2)  (0) 2012.06.27
악성코드 분석 환경 구축 (1)  (0) 2012.06.27
: