工具
https://github.com/monoxgas/sRDI
https://github.com/0xCuSO4/DHLYK
http://www.downxia.com/downinfo/30809.html
瑾特供版,功能有些残缺,比如不能直接生成服务(exe)
DLL转shellcode

首先用大灰狼生成一个dll
查看一下它的Dllmain
随后我们用dll转shellcode的工具生成一下
这里已经生成了bin格式的shellcode,有些分离免杀加载器便可执行
这里我们把bin文件转成C
会在同目录下生成同名.c文件

我们将其shellcode提取出来

写一个简单的32位的加载器

这时候发现上线成功 当然这个加载器不免杀,连静态火绒都过不了 但是可以结合其他免杀加载器方式
而且我觉得语音监听和视频监控都比较合适找到嫌疑犯 留下证据 cs可能没有这个方便
一键化脚本
import wximport osclass MyFileDropTarget(wx.FileDropTarget):def __init__(self, window):"""Constructor"""wx.FileDropTarget.__init__(self)self.window = windowdef OnDropFiles(self, x, y, filenames):# print(filenames[0])self.window.bjk1.SetValue(filenames[0])class Frame(wx.Frame):def __init__(self):wx.Frame.__init__(self, None, title='', size=(532, 110),name='frame',style=541072384)self.qdck = wx.Panel(self)self.Centre()file_drop_target = MyFileDropTarget(self)self.bjk1 = wx.TextCtrl(self.qdck,size=(313, 33),pos=(30, 17),value='',name='text',style=0)self.bjk1.SetDropTarget(file_drop_target)self.an1 = wx.Button(self.qdck,size=(98, 29),pos=(397, 18),label='运行',name='button')self.an1.Bind(wx.EVT_BUTTON,self.an1_anbdj)def an1_anbdj(self,event):os.system(f"python ConvertToShellcode.py -f fuckyou -i -c {self.bjk1.GetValue()}")binfile=self.bjk1.GetValue().replace('.dll', '.bin')# print(binfile)os.system(f"python bin2c.py {binfile}")class myApp(wx.App):def OnInit(self):self.frame = Frame()self.frame.Show(True)return Trueif __name__ == '__main__':app = myApp()app.MainLoop()
一键化优化版本压缩包:

转出shellcode,bin,hex和powershell格式
内存特征扫描
https://github.com/VirusTotal/yara
从内存中提取特征来制造一个扫描器

多找几个特征以免产生误报
yara扫描规则
rule HunterRule {meta:// KEY = "VALUE"description ="大灰狼远控"strings:// name = "string"$a1="www.jinjin.com"$b1 = "BaiduSdSvc.exe."$b2 = "S-U.ServUDaemon.exe"$b3 = "DUB.exe"$b4 = "1433.exe"$b5 = "S.exe"$b6 = "pfw.exe"$b7 = "MPMon.exe"$b8 = "360tray.exe"$b9 = "AVWatchService.exe"$b10 = "QQ.exe"$b11 = "TrojanHunter.exe"$b12 = "Norton.ccapp.exe"$b13 = "AVWatchService.exe"$b14 = "cleaner8.exe"$b15 = "ad-watch.exe"$b16 = "safedog.exe"$b17 = "FYFireWall.exe"condition:all of ($a*) and 10 of ($b*)}
包含特征a和十个特征b

#遍历扫描一下,可以优化,但是效果达到了import osimport psutildef main():print("开始扫描内存")pids=psutil.pids()for pid in pids:try:os.system(f"yara64.exe dhl.yar {pid}")except:passif __name__ == '__main__':main()print("扫描完成")
