훈훈훈
Keylogger 기초 분석 본문
이번에 다룰 주제는 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과 통신하고 있는 것을 알 수 있다.
'정보보안 > 악성코드' 카테고리의 다른 글
부트 바이러스 : 미켈란젤로 바이러스 정적 분석 (0) | 2018.11.09 |
---|---|
Mini-100 바이러스 분석 (0) | 2018.10.30 |
자바스크립트(JavaScript) 난독화 개념 & 실습 (0) | 2018.10.26 |