기초 동적 분석 도구를 이용하여 Lab03-1.exe 파일의 악성코드를 분석해보겠습니다.
실습 전에, 실습에 필요한 파일들을 옮겨놓고 스냅샷을 통해 초기상태를 저장해둡니다.!!! 꼭!!!!!
Lab03-01.exe파일을 분석해보도록 하겠습니다.
1) 악성코드의 임포트 함수와 문자열은 무엇인가?
lab03-01.exe파일을 우클릭 후, CFF Explorer를 통해 임포트 함수를 살펴보겠습니다.
kernel32.dll이 있고, 그 안에 ExitProcess함수만 존재합니다.
해당 함수를 msdn에 검색해보니 어떤 프로세스화 호출 등을 종료하는 함수입니다. 호출 종료함수만 나와있어 무언가 숨겨져있는 것이 있을 것 같고, 어떤 특별한 행위를 한다고 판단하기 어렵습니다. 그래서 한번 패킹이 되어있는지 확인하겠습니다.
section 헤더를 보니 .text, .data부분만 볼 수 있습니다. PEiD로 살펴보니 패킹이 PEncrypt 3.1~~ 으로 패킹이 되어있음을 확인했습니다.
따라서 이 파일은 패킹이 되어있어 정보를 제대로 보긴 어렵겠습니다. 그래도 strings를 통해 어떤 문자열이 있는지 확인해보겠습니다.
strings가 있는 폴더에 실습파일을 옮기고, 커맨드를 이용하여 실행하겠습니다. 결과를 텍스트 파일로 저장하였습니다.
여러 레지스트리가 보이지만, 특히 Run 레지스트리에 들어가는 것들은 부팅시에 이루어지는 것들입니다.
또한 중간에 보이는 url주소도 아마 악성코드가 실행되면서 접근이 될 것이라고 추측할 수 있습니다.
그 외에도 VideoDriver, WinVMX32,, 등의 이름이 나오는 것으로 보아 레지스트리에 등록할 파일명이 이 중에 하나일 수도 있을것이라 추측할 수 있겠습니다.
2) 악성코드임을 의미하는 호스트 기반 표시자는 무엇인가?
호스트 기반 표시자는 감염피씨에서 일어나는 모든 파일행위나 레지스트리 변경 행위를 뜻합니다.
이를 확인하기 위한 첫번째 프로그램은 Process Monitor입니다.
파일을 쓰는 행위를 확인하는 WriteFile, 레지스트리를 모니터링하기 위한 RegSetValue 2개의 필터를 설정합니다.
결과를 보니 strings에서 봤던 문자열들이 보입니다. VideoDriver는 Run레지스트리에 자기 자신을 등록하기 위한 키였습니다.
또한 strings에서 보았던 vmx32to64.exe는 C:\Windows\system32\아래에 생성하기위한 파일 이름이었습니다.
이 vmx32to64파일을 보도록하겠습니다. : 우클릭>Jump to 하면 해당 파일이 있는 폴더로 이동됩니다.
미리 설치되어있는 프로그램을 이용하여, 파일 우클릭> 해시 탭을 통해(MD5를 통해 보는 것과 동일) 이 파일이 원래부터 있던 것인지 확인을 해보았습니다. Lab03-01.exe와 vmx32to64.exe파일의 해시값을 비교해보면 동일한 파일임을 알 수 있습니다.
따라서 lab03-01.exe파일이 자기 자신을 복사해서 C:\Windows\system32\아래에 vmx32to64.exe라는 이름으로 파일을 생성함을 알 수 있습니다.
*system32폴더는 악성코드가 자주 사용하는 폴더인데, 다양한 시스템파일이 있는 곳이라서 분석가가 알아차리기 힘들기 때문입니다.
이제 레지스트리 부분을 보겠습니다. 이전처럼 동일하게 우클릭> Jump to 를 통해 해당 파일이 있는 곳으로 갑니다.
레지스트리 편집기를 통해 볼 수 있는데, VideoDriver를 더블클릭하면 해당 키의 값을 알 수 있습니다.
Run폴더 아래에 있었기 때문에, vmx32to64.exe를 윈도우 부팅시마다 실행하도록 설정이 되었습니다.
이번에는 process monitor에서 Lab03-01.exe가 실행되고있는 것을 보도록 하겠습니다.
view dll을 두번 누르면, 파일에 대한 정보를 보실 수 있습니다.
여기서도 눈에 익은 문자열이 확인됩니다. Strings에서 보았던 WinVMX32를 뮤텍스명에서 볼 수 있었습니다.
3) 악성코드를 인식할 수 있는 유용한 네트워크 기반의 시그니처가 존재하는가? 있다면 무엇인가?
Lab03-01.exe가 사용하는 라이브러리를 먼저 확인해보겠습니다. 파일은 패킹이 되어있어서 제일 처음에 확인해보았던 CFF Explorer에서는 임포트 디렉토리에서 kernel32.dll만 관찰되었습니다. 이 파일이 메모리에 올라가게 되면서 압축이 해제될 것이고, 그 상태에서는 더 많은 코드들이 실행되며 다른 라이브러리도 볼 수 있게 될 것입니다. process explorer를 통해 다른 dll들은 어떤 것이 있는지 확인해보겠습니다.
view dll을 통해 보면 아래에 ws2_32.dll, ws2help.dll, wshbth.dll, wshtcpip.dll의 네트워크 관련 dll을 볼 수 있습니다.
strings에서 www.practicalmalwareanalysis.com을 확인했었는데, 이에 대한 링크를 이용할 가능성이 있습니다.
정확하게 다시 보기 위해 스냅샷을 이용하여 초기세팅으로 돌아갑니다.
wireshark를 실행하고, 우리가 확인해야할 것은 악성코드가 붙는 도메인, 도메인과 관련된 포트번호입니다.
이에 대한 것을 추가해서 보도록하겠습니다.
Info 부분에 우클릭을 하고 column preference> add> destination port를 unresolved를 추가합니다. 적용 후 확인!
설정을 추가하고 Lab03-01.exe파일을 실행시켜봅니다.
strings에서 본 url로 접속을 하고 이후에는 443포트를 통해 어떤 행동을 하는 것을 확인했습니다.
이 정보에 대해 더 자세히 알고싶다면 우클릭> follow tcp stream을 통해 확인합니다.
아래에도 계속 사이트에 접속 후 이러한 데이터를 보내는 것을 알수 있었습니다.
이 데이터를 중간에서 가로채고 확인할 수 있는 방법을 알아보겠습니다.
ApateDNS를 이용하는 방법이 있지만, 조금 어려운감이 있기에 다른방법을 사용해보겠습니다.
다시 초기 스냅샷으로 돌아가서 시작> 실행> drivers를 입력합니다.
폴더 아래에 etc폴더로 들어가면 hosts파일이 보이는데, 이것을 메모장에 드래그앤드롭하여 위와같이 수정하고 저장합니다.
이 hosts파일의 역할은 다음과 같습니다.
www.practicalmalwareanalysis.com 에 접속할 때, 원래는 우리와 연결되어있는 dns서버에 물어보고, dns서버는 ip를 우리에게 알려줍니다. 그런데 여기에 이렇게 입력을 해놓으면 dns서버에 물어보기전에 이 hosts파일을 먼저 참조해서 등록되어있는 ip주소로 들어가게됩니다.
이 상태에서 다시 lab03-01.exe를 실행시키면, 127.0.0.1(로컬pc)의 443 포트(앞에서 해당 포트로 행위이루어지는 것 확인)로 들어오게되겠습니다. netcat을 이용하여 443포트 리스닝을 해보겠습니다.
포트를 443으로 지정하고 리스닝을 합니다. 그리고 lab03-01.exe를 실행시키면 위와같은 데이터가 나타납니다.
wireshark에서는 동일한 데이터를 여러번 보내는 것으로 확인되었는데, 그건 www.practicalmalwareanalysis.com의 443포트가 열려있지 않았기 때문에 여러번 시도한 것이었습니다. 우리는 포트가 열려있었기 때문에 한번 보내진 것입니다.
process explorer로 확인해보면, cmd아래 nc.exe가 실행되고 있습니다. 우클릭 후 properties의 tcp/ip탭에 443포트가 리스닝중인 것을 확인했습니다.
lab03-01.exe파일과 nc.exe의 탭을 보면 실습파일이 443포트로 보내고, 로컬에서 받아주는 것을 확인하였습니다.
이를 통해 네트워크 분석까지 해보았고, 아마 lab03-01.exe파일이 www.practicalmalwareanalysis.com으로 데이터를 보내면, 그에 맞는 어떠한 명령어를 다시 exe파일쪽으로 넘겨준다고 예측할 수 있겠습니다.
'study > 악성코드분석&리버싱' 카테고리의 다른 글
기초 동적 분석, Lab03-03.exe (0) | 2020.05.24 |
---|---|
기초 동적 분석, Lab03-02.dll (0) | 2020.05.23 |
기초 동적 분석, lab01-01.exe, lab01-01.dll (0) | 2020.04.30 |
기초 동적 분석에 필요한 도구 (0) | 2020.04.29 |
기초 정적 분석, lab01-04.exe (0) | 2020.04.25 |