훈훈훈

Keylogger 기초 분석 본문

정보보안/악성코드

Keylogger 기초 분석

훈훈훈 2018. 10. 8. 01:05


이번에 다룰 주제는 Keylogger 분석입니다. 아직 미숙한 실력인지라 기초적인 분석만 진행하였습니다.

분석은 정적 분석과 동적 분석을 각각 진행 하였고 실습 환경은 Windows 7 64bit 가상 환경에서 진행하였습니다.


1. 분석대상



악성코드 샘플은 www.virusign.com 에서 받았습니다. 해당 사이트에 들어가서 원하는 종류의 악성코드를 검색하면 쉽게 구할 수 있습니다. 


2. 정적 분석


해당 악성코드를 다운받으면 윈도우 미디어플레이어 아이콘을 가진 파일임을 확인 할 수 있습니다.

파일명을 확인했을 때 "SCANDAL" 이라는 문자열과 ".MP4"라는 문자를 확장자를 속이고 있는 것을 

확인 할 수 있다.



'HashCalc'툴을 이용해서 샘플 악성코드의 해쉬 값을 추출해보았다.

그 다음 추출된 MD5 해쉬 값을 이용하여 바이러스 토탈에 검색을 해보았다.



바이러스 토탈에 검색을 했을 때 상당수의 안티바이러스 프로그램이 탐지 하는 것을 확인 할 수 있다.



그 다음으로 'PEID'를 이용하여 샘플 악성코드의 패킹 유무를 확인해보았다. 

이 샘플 악성코드는 패킹이 안되어있는 것을 알 수 있다.



"BinText"를 이용하여 악성코드 내에 있는 문자열들을 확인했다.

수 많은 문자열 중 'Keylogger'라는 단어가 있는 것으로 보았을 때 해당 악성코드는 키로거 기능이 있다는 것을 유추할 수 있다.



위에 그림에서 www.MykeyloggerOnline.com 이라는 의심스러운 URL을 확인 할 수 있다.

따라서 이 악성코드는 저 의심스러운 URL과 TCP 통신을 할 가능성이 있다고 유추할 수 있다.



"Resource Hacker"를 이용하여 악성코드 내 리소스 들을 살펴 보았다. 

살펴본 결과 윈도우 미디어 플레이어 아이콘을 사용한 것을 알 수 있다.



또한 위에 그림에서 파일을 "Windows Media Player"로 정의하고 있는 것을 알 수 있다.



"IDA Pro"를 이용하여 해당 악성코드가 Import하는 API 함수 리스트를 확인할 수 있다.

악성코드 분석을 진행하면서 DLL과 API 함수에 대해 생소했기 때문에 정리를 해보았다.


  Kernel32.dll

  메로리, 파일, 하드웨어 접근과 조작과 같은 기능을 사용 

  Advapi.dll 

  서비스 관리자, 레지스트리 같은 핵심 윈도우 컴포넌트에 접근 가능 

  User32.dll 

  사용자 인터페이스 컴포넌트를 담고 있다. 

  Gdi32.dll /       Gdiplus.dll 

  그래픽 보기와 조작 관련 함수를 담고 있다.

  Wininet.dll

  FTP, HTTP, NTP 같은 프로토콜을 구현한 네트워크 함수를 담고 있다. 

  Ole32.dll

  COM 관련 함수 이외에 OLE 기능을 담고 있다. 

                                                          < DLL 종류 및 기능 >


위의 표를 보았을 때 키로그에서 핵심이 되는 DLL은 User32.dl 임을 알 수 있다.

따라서 키로그 함수에서 Import 하는 API 함수 중 주의 깊에 봐야할 API 함수들을 추려보았다.


 -  SetWindowsHookExA  :  특정 이벤트를 호출할 때 매번 호출하는 후킹 함수 설정

 

 -  RegisterHotKey  :  사용자가 단축키 조합을 누를 때마다 애플리케이션에 전달될 수 있게 단축키를 등록한다.


 -  GetKeyBoardState  :  256개의 가상 키를 지정된 버퍼에 복사


자 이제 이 API 함수들이 실제로 쓰이고 있는지 "IDA Pro"를 이용해 확인해보자



-> Set WindowsHookExA / RegisterHotKey가 call 되는 것을 확인할 수 있다.



-> GetKeyboardState가 call 되는 것을 확인 할 수 있다.


3. 동적 분석



"RegShot"을 이용하여 악성코드 실행 전과 후의 레지스트리 변화를 살펴보았다.

악성코드를 실행 전 1st shot을 클릭하고 악성코드를 실행 후 2nd shot을 클릭 후 Compare을 클릭 하면 

밑에 그림 처럼 notepad에 변경 사항이 입력되는 것을 확인 할 수 있다.



많은 종류의 Key / Value가 추가되고 몇몇 Value 들은 수정된 것을 확인할 수 있다.



"Process Monitor"를 이용하여 악성코드를 실행 후 실행 된 프로세스들을 확인 할 수 있다.

해당 캡쳐화면은 Process Name을 필터링한 결과이다.



"Process Explorer"를 사용하여 악성코드를 실행 후 활성화 된 프로세스들을 확인해 보았다.



활성화 된 프로세스를 클릭 후 TCP/IP 탭을 확인했을 때 의심스러운 IP 주소와 TCP 통신을 하고 있는 것을 확인 할 수 있다.



CMD창에서 'netstat -an' 명령어를 이용해서 포트들을 확인 해보았다. 

확인 결과 의심스러운 IP와 TCP 통신을 하고 있는 것을 알 수 있다.



마지막으로 "Wireshark"를 이용하여 패킷들을 확인해 보았다. 악성코드를 실행 후 발생 된 패킷 중 하나를 확인해보았다. 밑에 그림에서 처럼 정적 분석 때 의심스러웠던 URL과 통신하고 있는 것을 알 수 있다.


Comments