악성 코드 분석 실습
샘플 파일
위 사진은 이번에 분석할 파일입니다.
분석 환경은 Vmware Workstation 17 Pro, Windows 7 Professional K 64bit 운영체제에서 분석을 진행하였습니다.
기초 분석
Dgrep.exe 파일을 Virustotal에서 스캔한 모습
결과를 보면 71개 엔진 중 66 개 엔진이 해당 파일을 악성 파일로 진단한 것을 확인할 수 있다.
조금 더 자세히 각각의 진단명을 살펴보면 Backdoor, Trojan, Win32, Packed, Downloader 라는 진단명이 보이는 것을 확인할 수 있습니다.
위 진단명들을 종합해서 본다면 해당 파일은 Backdoor, Trojan, Downloader 계열 악성코드일 가능성이 높고, 패킹 처리가 되어있을 것으로 예상되었습니다. 또한 해당 파일은 Win32 에서 구동될 것으로 보여집니다.
DETALIS 탭에 들어가 해당 파일에 대해 조금 더 자세하게 알아본 모습
해당 파일의 해시값을 확인할 수 있다.
아래 PEiD packer, Cyren packer, F-PROT packer 를 확인할 수 있는데 이것을 참고해보면 해당파일은 SVK-Protector v1.11 과 UPX 라는 패킹 툴을 이용해 패킹을 하였을 것으로 추정되었다.
RELATIONS 탭에서 분석하려는 파일과 관련된 IP 와 URL 정보를 확인해본 결과입니다.
결과를 보면 해당 파일은 107.163.241.198 라는 IP 및 api.wisemansupport.com 이라는 URL 과 연관이 있을 것으로 의심됩니다.
정적 분석
정적 분석의 경우는 해당 파일을 실행하지 않고 파일의 구조를 분석하는 기법입니다.
Exeinfo PE
Exeinfo PE 로 해당 파일을 스캔한 결과 UPX 라는 패킹 툴로 패킹을 한 것을 확인할 수 있습니다.
PEiD
PEiD 로 스캔한 결과 SVKP 1.11 버전으로 패킹이 된 것을 확인할 수 있습니다.
해당 2개의 패킹 여부를 확인할 수 있는 툴로 스캔한 결과 해당파일은 SVKP와 UPX로 패킹을 한 것으로 보여졌습니다.
패킹이 된 것을 확인하였기 때문에 다른 툴을 사용하기 전 먼저 해당 파일을 언패킹 하는 작업을 진행하였습니다.
RL!dePacker -> 언패킹 툴
RL!dePakcer v1.5 를 사용하여 해당 dgrep.exe 파일을 언패킹을 하였습니다.
사용 방법의 경우 우측 상단 Browse 박스 클릭 후 파일을 불러옵니다.
가운데 하단에 Unpack 박스를 클릭하게 되면 해당파일의 언패킹된 파일이 생성됩니다.
다음으로 위 사진은 dgrep.exe 파일은 언패킹하여 언패킹된 파일을 대상으로 PEiD로 스캔을 해본 결과입니다.
이전 결과와 다르게 Microsoft Visual C++ 을 이용해 제작한 것을 확인할 수 있기 떄문에 언패킹이 된 것을 알 수 있습니다.
BinText
다음으로 파일을 언패킹 하였기 때문에 BinText 툴을 이용해 언패킹된 파일을 스캔해 파일에 포함된 문자열 정보를 확인하였습니다.
결과 cmd.exe 를 이용해 ping 127.0.0.1 -n 2 명령어를 사용하는 것 같은 문자열을 확인하였습니다.
C:\Wiseman.exe 를 설치하여 실행하기 위한 문자열로 의심되는 것을 확인하였습니다.
C:\Windows\System32\rundll32.exe 해당 경로의 파일을 실행하기 위한 문자열로 의심되는 문자열을 확인하였습니다.
RedTom21@HotMail.com 이라는 메일주소를 확인하였는데 해당 악성 파일과 연관된 메일로 추정되었습니다.
체크된 곳을 확인하면 파일에 import 되는 라이브러리 목록을 확인할 수 있었습니다.
라이브리러 목록 중 WS_32.dll 의 경우 네트워크 행위를 할 때 사용되는 라이브러리라고 하기 때문에 해당 파일은 네트워크 행위를 할 가능성이 높을 것으로 추정되었다.
PEView
다음 위 사진은 PEView 툴을 이용해 언패킹한 파일을 열어본 결과입니다.
먼저 4D 5A ( MZ ) 시그니처를 확인할 수 있습니다 해당 시그니처의 경우 exe 파일을 의미하기 때문에 해당 파일은 실행파일인 것으로 확인됩니다.
다음으로 IMAGE_FILE_HEADER 탭의 Time Date Stamp 를 활용해 해당 파일 생성 날짜가 2015.10.09 라는 것을 알 수 있었습니다.
다음으로 세션 헤더 탭을 들어가 해당 파일의 패킹 여부를 확인할 수 있었습니다.
해당 세션 이름은 UPX0 으로 .text .data 와 같이 일반적인 세션 이름은 아닌 것을 확인해 패킹을 의심할 수 있지만, 해당 파일은 언패킹을 진행한 파일이기 때문에 Virtual Size 와 Size of Raw Data 의 값이 같은 것을 확인해서는 원래는 패킹이 되어있는 파일이었지만 언패킹에 성공하였다고 볼 수 있습니다.
마지막으로 해당 파일 IMPORT 라이브러리 목록을 확인할 수 있었습니다.
동적 분석
동적 분석의 경우는 해당 파일을 직접 실행했을 때 변화를 확인하여 분석하는 기법입니다.
위 사진은 동적 분석을 위해 해당 dgrep.exe 파일을 관리자 권한으로 실행하는 모습입니다.
실행 이후 dgrep.exe 파일이 바탕화면에서 사라지는 모습을 확인할 수 있었습니다.
Process Explorer
다음으로 위 사진은 dgrep.exe 를 관리자 권한 실행 후 Process Explorer 의 모습입니다.
dgrep.exe 파일 실행 후 conhost.exe, dgrep.exe, cmd.exe, PING.exe가 프로세스 목록에 생성되는 것을 확인할 수 있었습니다.
이후 위 4가지 프로세스는 사라지고 rundll32.exe, Wiseman.exe 프로세스가 생성되는 것을 확인하였습니다.
rundll32.exe 와 Wiseman.exe 는 프로세스 목록에서 사라지지 않고 계속 실행되는 모습을 마지막으로 확인하였습니다.
Process Monitor
다음 위 사진은 dgrep.exe 파일 실행 후 Process monitor 의 모습입니다.
체크된 곳을 살펴보면 dgrep.exe 실행 후 tqlhb.exe 라는 파일이 C:\Users\Study\Appdata\Local\Temp\ 에 생성되고, 실행되는 것을 확인할 수 있었습니다.
※ 해당 tqlhb.exe 파일은 Process Monitor 로 수 차례 파일을 다시 시작하며 확인해본 결과 파일 이름이 랜덤한 이름으로 생성되는 것을 확인하였음
이후 dgrep.exe 가 cmd.exe 를 실행하는 모습을 확인 하였습니다
위에서 실행된 파일들을 바탕으로 Process Monitor 의 Filter 목록을 추가해 조금더 자세히 분석을 해보았습니다.
먼저 확인된 것은 위에 보이는 것과 같이 cmd.exe 의 행위였습니다.
cmd.exe 프로세스가 Ping 명령어 사용을 위해 PING.EXE 파일을 실행하는 모습을 확인할 수 있었습니다.
다음으로 이전 랜덤한 이름으로 생성된 파일의 프로세스가 dgrep.exe 파일을 삭제하기 위한 함수인SetDispositionInformationFile 이라는 함수를 사용하여 dgrep.exe 파일을 삭제하는 것을 확인하였습니다.
또한 C:\Wiseman.exe 파일과 C:\windows\SystemWOW64\rundll32.exe 파일을 실행하는 것을 확인하였습니다.
또 위에서 실행된 파일을 바탕으로 필터 목록을 추가하여 조금 더 살펴본 결과 아래와 같은 행위를 발견할 수 있었습니다.
rundll32.exe 프로세스가 랜덤한 이름으로 생성된 파일을 삭제하는 모습을 마지막으로 확인할 수 있었습니다.
System Explorer
다음으로 위 사진은 System Explorer 의 Snapshot 기능을 활용해 dgrep.exe 파일 실행 전과 후 생성/제거/수정되는 파일 변화를 확인해본 결과입니다.
그 결과 C:\ 경로에 twral 라는 폴더와 함께 ReadMe.txt, jdjuz.duj 파일, wiseman.exe 파일과 1.txt 파일이 생성된 모습을 확인할 수 있었습니다.
※ 이 중 twral 폴더와 jdjuz.duj 파일은 수 차례 파일을 다시 시작하며 확인해 비교해본 결과 해당 폴더와 파일의 이름은 랜덤한 이름과 확장자로 생성되는 것을 확인할 수 있었습니다.
Autoruns
다음으로 Autoruns 툴을 이용해 dgrep.exe 파일 실행 전과 후 시작프로그램 및 서비스의 변화를 확인해본 결과입니다.
그 결과 EvrMgr 파일과 Wiseman 파일이 부팅 후 자동으로 실행되는 프로그램에 등록된 것을 확인할 수 있었습니다.
Cports
위 2개의 사진은 Cports 툴을 이용해 파일 실행 후 연결되는 네트워크를 모니터링 한 결과입니다.
rundll32.exe 프로세스가 107.163.241.197, 107.163..241.108 해당 2개 IP와 연결을 시도하는 모습을 확인할 수 있었습니다.
하지만 상태를 보면 전송됨 이라는 상태 즉 SYN_SENT 상태를 의미하고 해당 상태에서 변함이 없는 것을 보았을 때 최종 세션 성립에는 실패하는 것으로 보여졌습니다.
Wiseman.exe 프로세스가 3.35.144.12 에 연결을 시도하는 모습도 사진과 같이 확인할 수 있었습니다.
하지만 마찬가지로 SYN_SENT 상태에서 변화가 없는 것을 보아 연결에는 실패하는 것으로 보여졌습니다.
WireShark
WireShark 툴을 이용해 위 Cports 에서 본 IP 들을 바탕으로 조금 더 자세히 분석을 진행해 보았습니다.
107.163.241.197, 107.163.241.198 과 통신하기 위해 SYN 플래그를 각각 6520번 포트와 12354 포트로 보내는 것을 확인할 수 있었습니다.
하지만 RST 플래그가 응답으로 오는 것을 보아서는 연결에 실패하는 것으로 보여졌습니다.
다음 3.35.144.12 같은 경우에도 연결을 시도하는 SYN 플래그를 보내는 것을 확인할 수 있었습니다.
하지만 재전송만 시도할 뿐 연결에는 실패하는 것으로 보여졌습니다.
마지막으로 해당 3.35.144.12 는 이전 Virustotal 에서 본 api.wisemansupport.com 을 nslookup 명령어를 통해 확인해본 결과 해당 URL 의 IP 로 확인이 되었습니다.
결론
dgrep.exe 파일은 Backdoor, Trojan, Dropper ,유형의 악성코드로 추정됩니다.
파일을 실행한 날짜에는 해당 악성코드가 정상적으로 작동하지는 않는 것으로 확인되었습니다.
하지만 api.wisemansupport.com URL과 107.163.241.197, 107.163.241.198 이 복구가 된다면 다시 활동을 재개할 수도 있을 것으로 보여졌습니다.
'보안 관제 관련 > 악성코드 분석 실습' 카테고리의 다른 글
Snort 환경 구성 ( Windows Snort 환경 구성 ) (4) | 2023.01.28 |
---|---|
악성 코드 분석 실습 ( 기초 분석, 정적 분석, 동적 분석 ) (0) | 2022.12.17 |