일반적인 악성코드는 vmware에서 실행이안되고
패킹을 해제하지않으면 안된다
패킹이 되있나 안되있나 방법은
peview로 확인을 해보면됩니다.
악성코드 분석 3
▲ upx packing 해제
upx.exe -d Malware3.exe -o Malware3_unpacked.exe
size증가가됬고
upx.exe는 포터블 익스포터블이라하고
실행시에는 다해제가 되긴하지만 정적분석이 불가능 하기떄문에 해제를 합니다.
upx.exe를 이용해서 해제를합니다.
이 사이즈가 커진이유는 코드들의 압축을 다 풀었다고 생각하면됩니다.
패킹이 해제된 파일을 보니까 이제 이상한 upx0 upx1이 사라진 것을 알게됬습니다.
30초뒤에 시작이된다고하는데 그이유는 그냥 악성코드가 바로 실행되지 않기 때문이다.
sniff hit을 보게되면
dns 쿼리도 발생이되면서
구글 dns랑 208.67.220.220이란게 적혀있는데
악성코드 서버가 아닐지 의심을해봅니다.
svc.exe가 변조될 가능성이다
pid 1756가 포트번호들을 열고있습니다.
근데 service 인 64to32가 관여하고있는거같습니다.
utx는 동시실행 방지하는 것이다.
svchost를 이용해서 net을 실행시킨거같다.
그리고 메모리 덤프를 진행하고
이 파일을 window10 으로 옮기고 나서
메모리 포렌식을 진행합니다.
vol.exe -f tak3.raw pstree
imageinfo 는 딱히 xp라서 프로파일러를
붙일필요는 없을거같다
아까본 pid 1756를 유심히 봐야될거같다
vol.exe -f 3.raw malfind -p 1756
해보니까 뭐 조작은되지않았다 나옵니다
vol.exe -f tak3.raw dumpregistry --dump-dir=./
rega로 열어보니까
보안서 비스일 가능성이있지만 그렇지않다.
dll을 보는데 64to32.dll이 있는데 이게딱보니 처음보고 이상한거같다
64to32.dll 을 호출한 놈이 누군지 찾으면된다.
pid가 644놈을 호출하는게 저 64to32.dll이라고생각한다.
vol.exe -f tak3.raw ldrmodules -p 1756
을해보면
여기서 64to32.dll을 호출하는데
vol.exe -f 3.raw filescan > 1.txt
64to32.dll을 찾았고
vol.exe -f 3.raw dumpfiles -Q 0x000000000a15c378 --dump-dir=./
으로 64to32.dll 을 뺴내서
virus total에 넣어보니까
바이러스에 검출에 성공했다.,
=============================
======================================================
아까 unpacking된것을 정적 분석하기위에
정적분석은 무조건 패킹이 해제된 상태에서 열어야하니까
패킹안된것을
ida로 열어봅니다.
백신이 있는것은 실행안되게 막아놨다. 백신이있으면 실행조차 안되게막아놨다.
▲ 백신 탐지 우회기법이 적용되어 있는지 확인하고, 어떤 동작을 수행하는지 분석
- IDA - Strings 탭에 보면 백신 이름에 대한 문자열(AYAgent.exe, V3Ltray.exe 등)이
정의되어 있다. 해당 주소로 이동 - 참조점(xref - 4037A0)으로 가면,
exe 이름을 가져와서 DeleteFile 명령을 수행하는 것을 확인
찾고자 하는 문자열을 우클릭하고
jump to xref to operand를 누르고 ok를 누르면 점프가된다
이렇게 점프가되고
push는 메모리에 alayc을 올리고 v3를 메모리에올리고
그래도 밑으로내려보면
밑으로내리니까 filename을 불러놓고
filea를 삭제한다.
정리해보자면 v3 tray를 메모리에넣고 filename변수에넣고 filename 을가져와서결과적으론
delete해버린다
실행되는 순간 파일명이 있으면 백신을 삭제한다.
백신을 실행 못시키게 제일 중요한파일을 삭제해버리는 겁니다.
실행파일을 강제로 삭제해버리는 것입니다.
운좋으면 삭제가되겠지만 100퍼센트 삭제가되는것은 아닙니다.
참고로 일반게스트 계정이면 권한이 없으니까 안될수도있습니다.
jump를 한뒤에
▲ 서비스에 등록된 이름과 시스템 명령어
- IDA - Strings 탭에 보면 svchost.exe -k netsvc 가 정의되어 있다. 해당 주소로 이동
service에선 악성코드가없었는데
에지스트리를등록하고
service 를 64.32로 변경하고
함수를실행해서
- 참조점(xref - 4032F0)에 가면 서비스 이름 확인(64to32)
- servicename 정의 후 레지스트리 등록(SYSTEM\\CurrentControlSet.....)
▲ 프로그램 실행 후 가장 먼저 호출되는 함수의 역할은?
- WinMain 함수의 call 401000을 보면 CreateMutex(중복 실행 방지)를 먼저 수행
'악성코드 및 포렌식' 카테고리의 다른 글
악성코드 분석 5 - WannaCry 랜섬웨어 (0) | 2021.02.04 |
---|---|
악성코드 분석 4 - dropper (0) | 2021.02.03 |
악성코드 분석 2 - 통신 포트를 찾는 과정 (0) | 2021.02.03 |
악성코드 분석 1 - http cashe control attack (0) | 2021.02.02 |
악성코드 분석 시작 (0) | 2021.02.02 |