查看: 6576|回复: 14
收起左侧

[病毒样本] 【骗钱杀毒软件(fsg花花伪壳器)】

[复制链接]
ranguangning
头像被屏蔽
发表于 2008-8-11 21:17:05 | 显示全部楼层 |阅读模式




采用FSG v1.10 (Eng) -> dulek/xt [Overlay] 花花伪壳器进行加壳,因此红伞不杀,但是壳运行完以后在内存中释放关键恶意文件的时候红伞会报



手脱【FSG(压缩壳)】方法步骤   【当然也可以直接去看雪下载unfsg来脱,不过是2.0版本,本威胁是1.10版本】
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
文件名称:脱壳记录
目标程序:FSG加壳程序
操作环境:Windows XP-SP2
使用工具:Ollydbg 1.10版、ImportREC
编写作者:Coderui
编写时间:2007-6-14
--------------------------------------------------------------------------------------------------------------

手动脱壳之快速技巧
**************************************************************************
FSG1.33:(有时这个技巧不行,上面紧接的不是转跳)
OD载入,CTRL+B搜索5655,上面紧接的转跳(JN)地址就是OEP了
CTRL+G直接到OEP,F4,然后DUMP并修复
最后就是优化一下大小
**************************************************************************
FSG2.0:
OD载入,两次F8,看右下角堆栈窗口
紧接LoadLibraryA上面的就是OEP值
CTRL+G直接到OEP,F4,然后DUMP并修复
最后就是优化一下大小
**************************************************************************

手动脱壳之单步跟踪
(1):FSG v2.0版
**************************************************************************
OD设置:不忽略任何异常。(如果程序用OD运行不起来,自动就退出了,那么就设置忽略所有异常)。
00400154 >  8725 74A24100   XCHG DWORD PTR DS:[41A274],ESP   -->载入后到这里,F8单步进入。

0040015A    61              POPAD                           
0040015B    94              XCHG EAX,ESP
0040015C    55              PUSH EBP
0040015D    A4              MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
0040015E    B6 80           MOV DH,80
00400160    FF13            CALL DWORD PTR DS:[EBX]
00400162  ^ 73 F9           JNB SHORT FSG2_0.0040015D       -->没有回跳,按F8
00400164    33C9            XOR ECX,ECX
00400166    FF13            CALL DWORD PTR DS:[EBX]
00400168    73 16           JNB SHORT FSG2_0.00400180       -->没有回跳,按F8
0040016A    33C0            XOR EAX,EAX
0040016C    FF13            CALL DWORD PTR DS:[EBX]
0040016E    73 1F           JNB SHORT FSG2_0.0040018F       -->跳到0040018F

F8来到了0040018F处:
0040018F    AC              LODS BYTE PTR DS:[ESI]
00400190    D1E8            SHR EAX,1
00400192    74 2D           JE SHORT FSG2_0.004001C1        -->没有回跳,按F8
00400194    13C9            ADC ECX,ECX
00400196    EB 18           JMP SHORT FSG2_0.004001B0       -->跳到004001B0处
00400198    91              XCHG EAX,ECX
00400199    48              DEC EAX
0040019A    C1E0 08         SHL EAX,8
0040019D    AC              LODS BYTE PTR DS:[ESI]
0040019E    FF53 04         CALL DWORD PTR DS:[EBX+4]
004001A1    3B43 F8         CMP EAX,DWORD PTR DS:[EBX-8]
004001A4    73 0A           JNB SHORT FSG2_0.004001B0
004001A6    80FC 05         CMP AH,5
004001A9    73 06           JNB SHORT FSG2_0.004001B1
004001AB    83F8 7F         CMP EAX,7F
004001AE    77 02           JA SHORT FSG2_0.004001B2
004001B0    41              INC ECX                         -->到这里了
004001B1    41              INC ECX
004001B2    95              XCHG EAX,EBP
004001B3    8BC5            MOV EAX,EBP
004001B5    B6 00           MOV DH,0
004001B7    56              PUSH ESI                        ; FSG2_0.00416393
004001B8    8BF7            MOV ESI,EDI
004001BA    2BF0            SUB ESI,EAX
004001BC    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004001BE    5E              POP ESI
004001BF  ^ EB 9F           JMP SHORT FSG2_0.00400160       -->回跳到00400160处,用F4跳试到下一行
004001C1    5E              POP ESI                         -->F8继续
004001C2    AD              LODS DWORD PTR DS:[ESI]     
004001C3    97              XCHG EAX,EDI
004001C4    AD              LODS DWORD PTR DS:[ESI]
004001C5    50              PUSH EAX
004001C6    FF53 10         CALL DWORD PTR DS:[EBX+10]
004001C9    95              XCHG EAX,EBP
004001CA    8B07            MOV EAX,DWORD PTR DS:[EDI]
004001CC    40              INC EAX
004001CD  ^ 78 F3           JS SHORT FSG2_0.004001C2        -->没有回跳,按F8
004001CF    75 03           JNZ SHORT FSG2_0.004001D4       -->这里千万不要再F8了,不信自己试一下。用F4跳试到下一行
004001D1  - FF63 0C         JMP DWORD PTR DS:[EBX+C]        ; FSG2_0.004010CC这是Win98记事本程序的入口点F8进入
004001D4    50              PUSH EAX
  
到这里来了:
004010CC      55            DB 55                           ;  CHAR 'U'
004010CD      8B            DB 8B
004010CE      EC            DB EC
004010CF      83            DB 83
  
窗口中右击“Analysis”-->“Analysis Code”或者Ctrl+A,分析代码:
004010CC  /.  55            PUSH EBP                        -->就是OEP,好了,转存一下,就OK了
004010CD  |.  8BEC          MOV EBP,ESP
004010CF  |.  83EC 44       SUB ESP,44
004010D2  |.  56            PUSH ESI
004010D3  |.  FF15 E4634000 CALL DWORD PTR DS:[4063E4]      ; [GetCommandLineA
004010D9  |.  8BF0          MOV ESI,EAX
004010DB  |.  8A00          MOV AL,BYTE PTR DS:[EAX]
004010DD  |.  3C 22         CMP AL,22
004010DF  |.  75 1B         JNZ SHORT FSG2_0.004010FC

现在不要关闭OD,接着修复一下,因为脱壳后我发现不能运行它:
选中004010D3这一行,右击“Follow in Dump”-->“Memory address”或者Ctrl+A:
004010D3  |.  FF15 E4634000 CALL DWORD PTR DS:[4063E4]      ; [GetCommandLineA
  
注意数据窗口中变化:(忘了说了数据窗口中要处于反汇编状态,在里边用滚动条上下翻找就可以看到)
004062E4   .  8378DA77      DD ADVAPI32.RegQueryValueExA     -->输入表的开头,RVA值
004062E8   .  F06BDA77      DD ADVAPI32.RegCloseKey
004062EC   .  E7EBDA77      DD ADVAPI32.RegSetValueExA
004062F0   .  1BC4DC77      DD ADVAPI32.RegOpenKeyA
           .
           .
           .
004064F8   .  27BED177      DD USER32.IsIconic
004064FC   .  1112D277      DD USER32.PostQuitMessage
00406500   .  9CFAD277      DD USER32.TranslateAcceleratorA  -->有人修复大小时在这里计算,是错的。
00406504      FF            DB FF                               程序虽然可以运行,但在使用时程序会崩溃。
00406505      FF            DB FF
00406506      FF            DB FF
00406507      7F            DB 7F
00406508   .  1E313276      DD 7632311E
0040650C   .  89C23376      DD 7633C289
00406510   .  7C863376      DD 7633867C
00406514   .  B1473476      DD 763447B1
00406518   .  D87C3376      DD 76337CD8
0040651C   .  CE003376      DD 763300CE
00406520   .  33253276      DD 76322533                      -->大小应该在这里计算,“DD”表示调用的函数。
00406524      FF            DB FF                               这里函数的功能是(打开、保存对话框的功能),如果不取到这里,使用他们功能时,程序自然会崩溃。

修复时填:
OEP=000010CC
RVA=000062E4
SIZE=00406520-004062E4=23C
先用OD把壳脱掉,再用ImportREC修复文件时所选择的文件应该是OD脱完壳的文件。
说明:(有些程序脱出来不需要修复,也可以正常运行)。
**************************************************************************

(2):FSG v1.31版
**************************************************************************
OD设置:不忽略任何异常。(如果程序用OD运行不起来,自动就退出了,那么就设置忽略所有异常)。
00410304 >  BB D0014000     MOV EBX,NOTEPAD_.004001D0       ;载入后停在这里,我们下硬件断点HR 0012FFA4,然后F9运行。
00410309    BF 00104000     MOV EDI,NOTEPAD_.00401000
0041030E    BE 0CC94000     MOV ESI,NOTEPAD_.0040C90C
00410313    53              PUSH EBX
           .
           .
           .
这时反汇编窗口变为空白,如果按[F8]会提示"不知如何单步,程序异常"。
我们要做的就是不停的按[SHIFT+F9],其中如果出现提示"不知如何单步,程序异常"对话框,就关闭继续,直到反汇编窗口显示出代码为止。(一般需要按5-10次)
           .
           .
           .
7C801D77  /$  8BFF          MOV EDI,EDI                     ;我们会来到这里,然后按[F9]运行
7C801D79  |.  55            PUSH EBP
7C801D7A  |.  8BEC          MOV EBP,ESP
7C801D7C  |.  837D 08 00    CMP DWORD PTR SS:[EBP+8],0
           .
           .
           .
这时反汇编窗口变为空白,如果按[F8]会提示"不知如何单步,程序异常"。
我们要做的就是不停的按[SHIFT+F9],其中如果出现提示"不知如何单步,程序异常"对话框,就关闭继续,直到反汇编窗口显示出代码为止。(一般需要按1-3次)
           .
           .
           .
7C80FC2F > $  6A 18         PUSH 18                         ;我们会来到这里,然后按[F9]运行
7C80FC31   .  68 D8FC807C   PUSH kernel32.7C80FCD8
7C80FC36   .  E8 8B28FFFF   CALL kernel32.7C8024C6
7C80FC3B   .  8365 FC 00    AND DWORD PTR SS:[EBP-4],0
           .
           .
           .
这时反汇编窗口变为空白,如果按[F8]会提示"不知如何单步,程序异常"。
我们要做的就是不停的按[SHIFT+F9],其中如果出现提示"不知如何单步,程序异常"对话框,就关闭继续,直到反汇编窗口显示出代码为止。(一般需要按0-1次)
           .
           .
           .
7C80ADA9   .  8B7D 0C       MOV EDI,DWORD PTR SS:[EBP+C]    ;我们会来到这里,这次要单步[F8]一直向下执行
7C80ADAC   .  BB FFFF0000   MOV EBX,0FFFF
7C80ADB1   .  3BFB          CMP EDI,EBX
7C80ADB3   .^ 0F86 D1F2FFFF JBE kernel32.7C80A08A
7C80ADB9   .  57            PUSH EDI
7C80ADBA   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
7C80ADBD   .  50            PUSH EAX
7C80ADBE   .  FF15 8812807C CALL DWORD PTR DS:[<&ntdll.RtlInitString>
7C80ADC4   .  8D45 0C       LEA EAX,DWORD PTR SS:[EBP+C]
7C80ADC7   .  50            PUSH EAX
7C80ADC8   .  6A 00         PUSH 0
7C80ADCA   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
7C80ADCD   .  50            PUSH EAX
7C80ADCE   >  6A 00         PUSH 0
7C80ADD0   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]
7C80ADD3   .  E8 1CEBFFFF   CALL kernel32.7C8098F4
7C80ADD8   .  50            PUSH EAX
7C80ADD9   .  E8 B7FFFFFF   CALL <JMP.&ntdll.LdrGetProcedureAddress>
7C80ADDE   .  85C0          TEST EAX,EAX
7C80ADE0   .  0F8C F6840000 JL kernel32.7C8132DC
7C80ADE6   .  6A 00         PUSH 0
7C80ADE8   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]
7C80ADEB   .  E8 04EBFFFF   CALL kernel32.7C8098F4
7C80ADF0   .  3945 0C       CMP DWORD PTR SS:[EBP+C],EAX
7C80ADF3   .  0F84 5E5F0300 JE kernel32.7C840D57
7C80ADF9   .  8B45 0C       MOV EAX,DWORD PTR SS:[EBP+C]
7C80ADFC   >  5F            POP EDI
7C80ADFD   .  5B            POP EBX
7C80ADFE   .  C9            LEAVE
7C80ADFF   .  C2 0800       RETN 8                        ;执行到这里,再[F8]一次会返回到别的地方。
7C80AE02   >  837D 10 00    CMP DWORD PTR SS:[EBP+10],0
           .
           .
           .
004103D7    FF37            PUSH DWORD PTR DS:[EDI]
004103D9    AF              SCAS DWORD PTR ES:[EDI]
004103DA    EB 09           JMP SHORT NOTEPAD_.004103E5
004103DC    FE0F            DEC BYTE PTR DS:[EDI]
004103DE  - 0F84 E80CFFFF   JE NOTEPAD_.004010CC          ;看到了吧,JE所指向(跳向)的地址就是真正的程序入口点。
004103E4    57              PUSH EDI
004103E5    55              PUSH EBP
004103E6    FF53 04         CALL DWORD PTR DS:[EBX+4]
004103E9    8906            MOV DWORD PTR DS:[ESI],EAX    ;这次我们来到了这里,开始向上找OEP。
004103EB    AD              LODS DWORD PTR DS:[ESI]
004103EC    85C0            TEST EAX,EAX
004103EE  ^ 75 D9           JNZ SHORT NOTEPAD_.004103C9
004103F0    8BEC            MOV EBP,ESP
004103F2    C3              RETN
004103F3    1B0401          SBB EAX,DWORD PTR DS:[ECX+EAX]
004103F6    0000            ADD BYTE PTR DS:[EAX],AL
004103F8    0000            ADD BYTE PTR DS:[EAX],AL
004103FA    0000            ADD BYTE PTR DS:[EAX],AL
004103FC    0000            ADD BYTE PTR DS:[EAX],AL
004103FE    0088 0100001B   ADD BYTE PTR DS:[EAX+1B000001],CL
           .
           .
           .
插曲:(当我们看到那个真正的程序入口点后,就无法再跟下去了,反正我是跟不进去,呵呵。)
插曲:(网上都没找到关于FSG v1.31版的任何脱文,很奇怪。这种找法是我自己摸索的,试了下脱别的程序加这个版的壳找法也一样,所以放心使用。)

正题:我们记下来OEP地址[004010CC],[SHIFT+F2]重新载入本程序。
      输入命令[HD],把所有硬件断点清楚掉。
      按[SHIFT+G]后填上跟随的表达式[004010CC](也就是转到的地址)。再[F4]运行到当前代码处。
      OK,运行到真正入口停下来了,使用OD脱壳保存吧。保存后的程序无法运行,需要修复输入表(有些程序脱出来不需要修复)。

使用ImportREC修复时填:
OEP=000010CC
RVA=000062E4
SIZE=00406520-004062E4=23C
一切完成后,先用OD把壳脱掉,再用ImportREC修复文件时所选择的文件应该是OD脱完壳的文件。

**************************************************************************
(4):FSG v1.33版
**************************************************************************
脱这个版的记录就不写了,和上边脱FSG v1.31和FSG v1.2版的一模一样。
**************************************************************************
注意:如果在数据窗口中看不到输入表的调用时,我们要使用以下方法去修复。
1:在OD中使程序处于运行状态。
2:在ImportREC显示输入表函数的窗口中右键,选择[高级命令]->[获取API调用]->[两个启发式全部选中]->[确定]。
   然后点显示无效按钮,把无效的指针剪切掉,而不是删除掉。这样就可以[修复转存文件]了。

想看到明文输入表的方法:
    先在数据窗口中Ctrl+G,转到OEP地址处。然后在反汇编窗口中也Ctrl+G,转到OEP地址处,F4执行到入口。
    这样下边数据窗口中就可以找到明文的输入表了。其中数据窗口中要处于反汇编状态。







【以下是运行截图,没用EQ】
















[ 本帖最后由 ranguangning 于 2008-8-11 21:19 编辑 ]
The EQs
发表于 2008-8-11 21:23:37 | 显示全部楼层
C:\Users\Administrator\Desktop\我是伪装来骗钱的杀毒软件.rar » RAR » 我是伪装来骗钱的杀毒软件.exe - a variant of Win32/TrojanDownloader.FakeAlert.GB trojan
qigang
发表于 2008-8-11 21:28:45 | 显示全部楼层

2/0

RS20.57.02未杀!
LQ55
头像被屏蔽
发表于 2008-8-11 21:29:16 | 显示全部楼层
卡巴拦了

检测到: Heur.Trojan.Generic
Palkia
发表于 2008-8-11 21:32:27 | 显示全部楼层
金山 -
woai_jolin
发表于 2008-8-11 21:35:04 | 显示全部楼层
FakeAlert系列太多了
Kitman
发表于 2008-8-11 22:08:25 | 显示全部楼层
The file '########################.exe' has been determined to be 'MALWARE'. Our analysts named the threat TR/Dldr.FraudLoad.NJ. The term "TR/" denotes a trojan horse that is able to spy out data, to violate your privacy or carry out unwanted modifications to the system.Detection will be added to our virus definition file (VDF) with one of the next updates.
kkiingg
发表于 2008-8-11 22:11:10 | 显示全部楼层
金山查不去
BING126
头像被屏蔽
发表于 2008-8-11 22:11:28 | 显示全部楼层
McAfee miss
主动防御
发表于 2008-8-11 22:21:36 | 显示全部楼层
卡巴斯基KIS209 高级虚拟机启发检测出了!
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-5-5 16:59 , Processed in 0.139202 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表