윈도우즈(Windows)에서 볼라틸리티(volatility)를 사용하여 메모리 분석 - 2

이번 포스팅에는 윈도우즈(Windows)에서 볼라틸리티(volatility)를 사용하여 메모리 분석 - 1

에서 알아본 명령어를 통해 실습 덤프 파일을 사용하여 분석을 해 볼것이다. 

실습 덤프 파일은 zeus와 stuxnet을 사용 할 것이며, 이전 포스팅과 연관하여 진행할 예정이므로 
되도록 순서대로 읽어주면 좋겠다.



1. Zeus

먼저 네트워크 통신하고 있는 프로세스부터 알아보자. connscan을 했더니 856번이 통신하고 있는 것을 확인 할 수 있다.




pslist에서 856을 확인해보면 svchost.exe가 856번을 쓰는 것을 확인 할 수 있다. svchost.exe파일은 공격자들의
좋은 먹잇감이 된다. svchost는 보통 통신을 하지 않는데 conncan과 pslist로 파악 할 수 있다.



856번을 malfind한 결과이다. 어셈블리코드를 보면 무언가를 쓰는 것을 알 수 있다.




processdump를 이용하여 프로세스에 대한 dump파일을 구한다.





위에서 구한 덤프 파일을 바이러스 토탈 사이트에 드래그 앤 드랍 등을 이용하여 분석을 한다.






덤프를 분석하여 결과를 준다.





이 결과는 936프로세스에 대한 결과이다.


2. Stuxnet


기존의 pslist에서 특정 프로세스만 출력하고 싶다면 위와 같이 | findstr 을 사용하면 해당되는 값만 출력해줄 수 있다.
위의 명령어는 findstr lsass.exe를 통하여 pslist에 있는 lsass.exe값만 가져오게 된다.




위에 인덱스가 짤렸지만 PID, PPID 순이다.
시간을보면 680번은 2010년 10월에 시작된 것을 알 수 있고 868번과 1928번은 2011년 6월에 시작 됐다.
그리고 868번과 1928번은 같은 PPID(668)을 가진다.




각 프로세스마다 dlllist을 출력한다.




1928이 사용하는 dlllist인데 ASLR을 사용하는 것을 볼 수 있다. ASLR은 악성코드에서 많이 사용된다고 한다.
※ ASLR(Address Space Layout Randomization)
주소를 랜덤하게 배치해주는 기법



1928번 프로세스가 무언가를 쓰는 것을 알 수 있다. 868번도 마찬가지이다. 
680번 프로세스를 열어보면 아무것도 안뜨는 것을 알 수 있다.




3개 프로세스를 procexedump를 한다. 





1928번 프로세스에 대한 결과이다.
680번 프로세스는 4개 정도 탐지된다고 뜨는데 4개정도는 감안할 수 있을 정도라고 보면 되겠다.
868번 프로세스를 검사해도 많이 탐지되는 것을 알 수 있다.




3. 마치며

이번 포스팅과 저번 포스팅을 통하여 볼라틸리티를 사용하여 메모리포렌식하는 것을 알아보았다.
필자도 배워가면서 하는 입장이라 자세히는 모르겠지만, 포렌식은 필수적인 스킬이라고 생각된다.
이번 글을 쓰면서 위의 예제는 기본적으로 다 분석이 된 경우라서 악성코드를 금방 찾을 수 있었지만
실제로 제로데이 공격이나 신종 공격기법같은 경우 쉽사리 찾을 수 없다고 생각되었다.
악성코드를 얼마나 빨리, 정확히 찾아내는게 고급 인력이 되는 지표가 될 것같은 생각이 들었다.
틀린 내용이 있고 더 나은 방법이 있을거라 생각되는데 있다면 필자에게 알려주면 좋겠다.






  1. 1123 2018.08.04 15:18

    덤프 명령어를 뭐 사용하셨나요

+ Recent posts