반응형

요즘 악성 파일들이 자주 날라오네요.

분석한 김에 정리한 내용을 올립니다.

 

 

 

doc 파일이라고 보이지만, 파일을 선택해 보면 exe 파일 임을 확인 할 수 있다.

 

해당 파일을 분석 해보면, 랜덤한 문자열을 생성한다.

srand() 이용

 

00401A3F  |.  50            PUSH EAX                                 ; /seed
00401A40  |.  FF15 00714000 CALL DWORD PTR DS:[<&MSVCRT.srand>]      ; \srand

 

랜덤한 문자열을 기반으로 2차 연산 과정을 걸쳐 실행파일 생성

 

 

 

해당 파일을 CreateProcessW를 이용하여 실행 이후 프로그램 종료.

 

gz2gh.exe 파일의 경우는 레지스트리의 "Software\Microsoft\Windows\CurrentVersion\Run\Google_Update"

추가하여 실행시 구동하게 한다.

 

 

외부 C&C 서버로 접속

 

war.geekgalaxy.com

revjj.syshell.org

 

해당 URL은 방화벽으로 차단하는 것이 좋을 것 같다.

(접속 로그를 확인하여, 감염 유무를 모니터링 하는 것도 하나의 방법이다.)

서버에서 kernel.dll 파일을 전송 받음.

 

 

ps ;

서버를 끊어버려서 kernel.dll 파일은 못 구했네요.

해당 파일을 분석 하고 싶은데 ㅎㅎㅎ 실망에선 좀 힘들고..어디 안전하게 받으신 분 있다면 연락주세요.^^/

 

 

 

 

 

 

반응형
반응형

지인에게서 받은 320에 사용한 샘플 파일을 구하였다.

해당 파일을 분석하는 과정에서 스크린샷도 없고 단순 메모장에 정리한 내용을 공유한다.

 

특별히 다른 분석서보다 잘한 것은 없지만,

나도 해봤다는 흔적을 남기는 목적으로 글을 공유한다.

 

 

 004023FA   .  53            PUSH EBX                                 ;  kernel32.7C7D353C
004023FB   .  55            PUSH EBP                                 ;  kernel32.7C7D0000
004023FC   .  56            PUSH ESI                                 ;  kernel32.7C7D7376
004023FD   .  57            PUSH EDI
004023FE   .  8B6C24 18     MOV EBP, DWORD PTR SS:[ESP+0X18]         ;  ApcRunCm.0040116C
00402402   .  8B45 3C       MOV EAX, DWORD PTR SS:[EBP+0X3C]
00402405   .  FF7405 78     PUSH DWORD PTR SS:[EBP+EAX+0X78]
00402409   .  FF7405 7C     PUSH DWORD PTR SS:[EBP+EAX+0X7C]
0040240D   .  8B5405 78     MOV EDX, DWORD PTR SS:[EBP+EAX+0X78]
00402411   .  03D5          ADD EDX, EBP                             ;  kernel32.7C7D0000
00402413   .  8B4A 18       MOV ECX, DWORD PTR DS:[EDX+0X18]
00402416   .  8B5A 20       MOV EBX, DWORD PTR DS:[EDX+0X20]
00402419   .  03DD          ADD EBX, EBP                             ;  kernel32.7C7D0000
0040241B   .  E3 70         JECXZ 0X0040248D
0040241D   .  49            DEC ECX
0040241E   .  8B348B        MOV ESI, DWORD PTR DS:[EBX+ECX*4]
00402421   .  03F5          ADD ESI, EBP                             ;  kernel32.7C7D0000
00402423   .  33FF          XOR EDI, EDI
00402425   .  FC            CLD
00402426   >  33C0          XOR EAX, EAX
00402428   .  AC            LODSB
00402429   .  3AC4          CMP AL, AH
0040242B   .  74 07         JE 0X00402434
0040242D   .  C1CF 0D       ROR EDI, 0X0D                                  ; 사용하는 함수의 리스트를 암호화 하여, 원래의 문구로 돌리는 중........
00402430      03F8          ADD EDI, EAX
00402432    ^ EB F2         JMP 0X00402426
00402434      3B7C24 1C     CMP EDI, DWORD PTR SS:[ESP+0X1C]
00402438    ^ 75 E1         JNE 0X0040241B
0040243A      8B5A 24       MOV EBX, DWORD PTR DS:[EDX+0X24]    ; 사용할 함수 GetProcAddress 호출 / bp 걸고 분석하면 사용하는 함수들 다 건질 수 있음.
0040243D      03DD          ADD EBX, EBP                             ;  kernel32.7C7D0000
0040243F      66:8B0C4B     MOV CX, WORD PTR DS:[EBX+ECX*2]
00402443      8B5A 1C       MOV EBX, DWORD PTR DS:[EDX+0X1C]
00402446      03DD          ADD EBX, EBP                             ;  kernel32.7C7D0000
00402448      8B048B        MOV EAX, DWORD PTR DS:[EBX+ECX*4]
0040244B      8BD8          MOV EBX, EAX
0040244D      03C5          ADD EAX, EBP                             ;  kernel32.7C7D0000
0040244F      3B5C24 04     CMP EBX, DWORD PTR SS:[ESP+0X04]
00402453      7C 3C         JL 0X00402491
00402455      2B5C24 04     SUB EBX, DWORD PTR SS:[ESP+0X04]
00402459   .  3B1C24        CMP EBX, DWORD PTR SS:[ESP]
0040245C   .  7F 33         JNLE 0X00402491
0040245E   .  807C24 24 00  CMP BYTE PTR SS:[ESP+0X24], 0X00000000
00402463   .  74 28         JE 0X0040248D
00402465   .  807C24 28 00  CMP BYTE PTR SS:[ESP+0X28], 0X00000000
0040246A   .  74 21         JE 0X0040248D
0040246C   .  83EC 10       SUB ESP, 0X10                                        ; 또 다른 DLL 호출
0040246F   .  8BF0          MOV ESI, EAX
00402471   .  8BFC          MOV EDI, ESP
00402473   >  AC            LODSB
00402474   .  AA            STOSB
00402475   .  3C 2E         CMP AL, 0X2E
00402477   .^ 75 FA         JNE 0X00402473
00402479   .  C647 FF 00    MOV BYTE PTR DS:[EDI-0X01], 0X00000000
0040247D   .  54            PUSH ESP
0040247E   .  FF5424 38     CALL DWORD PTR SS:[ESP+0X38]             ;  kernel32.GetProcAddress
00402482   .  56            PUSH ESI                                 ;  kernel32.7C7D7376
00402483   .  50            PUSH EAX
00402484   .  FF5424 40     CALL DWORD PTR SS:[ESP+0X40]
00402488   .  83C4 10       ADD ESP, 0X10
0040248B   .  EB 04         JMP 0X00402491
0040248D   .  33C0          XOR EAX, EAX
0040248F   .  EB 00         JMP 0X00402491
00402491   >  83C4 08       ADD ESP, 0X08
00402494   .  5F            POP EDI
00402495   .  5E            POP ESI                                  ;  kernel32.7C7D7376
00402496   .  5D            POP EBP                                  ;  kernel32.7C7D0000
00402497   .  5B            POP EBX                                  ;  kernel32.7C7D353C
00402498   .  C3            RET

IAT 기록 (004027C1)

호출 순서

OpenFileMappingA -> CreateFileMappingA -> GetWindowsDirectoryA -> strcat -> PathFileExistsA -> InitializeCriticalSection

004011E5   .  57            PUSH EDI                                 ;  ApcRunCm.00402991
004011E6   .  6A 10         PUSH 0X00000010
004011E8   .  53            PUSH EBX
004011E9   .  6A 04         PUSH 0X00000004
004011EB   .  53            PUSH EBX
004011EC   .  6A FF         PUSH 0XFFFFFFFF
004011EE   .  FF96 38030000 CALL DWORD PTR DS:[ESI+0X00000338]       ;  kernel32.CreateFileMappingA
004011F4   .  68 03010000   PUSH 0X00000103
004011F9   .  8D85 F4FEFFFF LEA EAX, DWORD PTR SS:[EBP-0X0000010C]
004011FF   .  50            PUSH EAX
00401200   .  FF96 3C030000 CALL DWORD PTR DS:[ESI+0X0000033C]       ;  kernel32.GetWindowsDirectoryA
00401206   .  8D86 2E050000 LEA EAX, DWORD PTR DS:[ESI+0X0000052E]
0040120C   .  50            PUSH EAX
0040120D   .  8D85 F4FEFFFF LEA EAX, DWORD PTR SS:[EBP-0X0000010C]
00401213   .  50            PUSH EAX
00401214   .  FF96 A8030000 CALL DWORD PTR DS:[ESI+0X000003A8]       ;  msvcrt.strcat
0040121A   .  59            POP ECX                                  ;  ApcRunCm.00402499
0040121B   .  59            POP ECX                                  ;  ApcRunCm.00402499
0040121C   .  8D85 F4FEFFFF LEA EAX, DWORD PTR SS:[EBP-0X0000010C]
00401222   .  50            PUSH EAX
00401223   .  FF96 CC030000 CALL DWORD PTR DS:[ESI+0X000003CC]       ;  shlwapi.PathFileExistsA / C:\Windows\Temp\~v3.log 파일이 있는 유무 확인
00401229   .  85C0          TEST EAX, EAX
0040122B   .  75 6C         JNE 0X00401299
0040122D   .  56            PUSH ESI                                 ;  ApcRunCm.00402499
0040122E   .  FF96 B0020000 CALL DWORD PTR DS:[ESI+0X000002B0]       ;  ApcRunCm.004021B2   / taskkill 을 통한 프로세스 종료

C:\Windows\Temp\~v3.log 파일 유무 확인
없을 경우

taskkill /F /IM pasvc.exe 실행
taskkill /F /IM clisvc.exe 실행


0040122E   .  FF96 B0020000 CALL DWORD PTR DS:[ESI+0X000002B0]       ;  ApcRunCm.004021B2
00401234   .  8D46 10       LEA EAX, DWORD PTR DS:[ESI+0X10]
00401237   .  59            POP ECX                                  ;  0012FDC0
00401238   .  50            PUSH EAX
00401239   .  8945 FC       MOV DWORD PTR SS:[EBP-0X04], EAX
0040123C   .  FF96 40030000 CALL DWORD PTR DS:[ESI+0X00000340]       ;  kernel32.InitializeCriticalSection
00401242   .  8D46 28       LEA EAX, DWORD PTR DS:[ESI+0X28]
00401245   .  50            PUSH EAX
00401246   .  8945 F8       MOV DWORD PTR SS:[EBP-0X08], EAX
00401249   .  FF96 40030000 CALL DWORD PTR DS:[ESI+0X00000340]       ;  kernel32.InitializeCriticalSection
0040124F   .  56            PUSH ESI                                 ;  ApcRunCm.00402499
00401250   .  895D 08       MOV DWORD PTR SS:[EBP+0X08], EBX
00401253   .  FF96 5C020000 CALL DWORD PTR DS:[ESI+0X0000025C]       ;  ApcRunCm.0040129E   / GetVersion 확인

이후 Thread를 돌림.

 

더 많은 내용을 확인 하고 싶다면

http://wowhacker.org/files/0320_cyberterror_stolenbyte.pdf

http://asec.ahnlab.com/926

 

반응형
반응형

WER 이라고 하면, Windows 내에서 크래쉬가 발생 또는 응용프로그램이 문제가 발생할 경우 Dump 파일을 생성하여, 해당 파일을 MS 측으로 전달하는 과정을 의미한다.

 

WER의 경우는 MS 쪽으로 오류 정보를 보내겠습니까? 라는 메시지가 바로 WER이다.

해당 WER의 덤프는 유저의 마음대로 설정할 수 있는데, 그 내용이 바로 아래에 나와 있는 주소 이다.

 

http://msdn.microsoft.com/en-us/library/windows/desktop/bb513616(v=vs.85).aspx

 

해당 주소가 가게 되면 LocalDumps 라는 키를 생성하여, 응용프로그램 상의 문제가 발생하는 모든 덤프를 확인 할 수 있다.

 

분석을 하기 위한 준비 단계로 생각되며, 해당 세팅을 할 경우 향후 많은 도움이 될 것으로 판단된다.

 

 

 

LocalDumps.reg

 

각 항목의 정보는 아래와 같다.

 

 

 value

 type

 default value

 DumpFolder

 REG_EXPAND_SZ

 %SystemRoot%\Minidump

 DumpCount

 REG_DWORD

 20

 DumpType

 REG_DWORD

 2

 

DumpFolder : 덤프 파일이 생성될 경로

DumpCount : 덤프 파일 보존 개수 (넘게 되면 오래된 것부터 삭제)

DumpType : 1. 미니덤프 / 2. 전체덤프

 

출처 : windbg로 쉽게 배우는 Windows Debugging - 책

         MS WER 홈페이지 : http://msdn.microsoft.com/en-us/library/windows/desktop/bb513616(v=vs.85).aspx

반응형

+ Recent posts