什么是白加黑技术 免杀技术之白加黑攻击防御技术分析

一、介绍
1. 什么是白加黑
通俗的讲白加黑中的白就是指被杀软列入到可信任列表中的文件。比如说微软自带的系统文件或者一些有有效证书签名的文件,什么是微软文件,或者什么是有效签名文件在后面我们会提到他的辨别方法。黑就是指我们自己的文件,没有有效证书签名,也不是微软文件。通常这种文件会被杀软加入到可疑名单中。
2. 白加黑的作用是什么
在很多的杀软中会对白文件的操作进行放行,如果我们将黑程序和白程序在一个进程中是否就可以绕过一些杀软的检测。
二、如何挖掘利用白文件
1. 思考->解决
问:如果我们想要将我们的黑程序载入到白文件中有什么办法?
答:通常情况下我们可以利用注入去将一个程序执行到另外的程序中。
问:在程序执行的开始,如何加载一个dll。
答:程序加载的时候会优先加载当前文件夹下的文件下的dll,当然这些dll要存在于可执行程序的导入表中。
2. 挖掘白文件
首先我们先去找几个有签名的文件或者微软的可执行文件。
下图就是签名的鉴别方式。必须是正常数字签名才行。
这里有一些我们常用的软件也可以利用,我们尽量去看看目录里面体积小的文件,这样方便我们在攻击的时候投入。
这里我们在steam中找到一个uninstall.exe的exe,用processmonitor可以监控到他执行的时候加载了一个
“c:windowssystem32wow64log.dll” ,那么我们是否可以写一个这个dll放到和他在相同的目录下让他加载我们的wow64log.dll不去加载system32下的wow64log.dll呢?
那么我们去尝试下
3. 如何构造wow64log.dll
首先我们要知道一个exe加载这个dll后他调用了哪些函数,我们要去伪造这些函数,不然他肯定是加载不起来的。有很多方式可以查看比如说lordpe,或者说vs带有的dumpbin。这里我们用dumpbin来看下白程序的导入表,看看wow64log.dll用到了哪些函数。
c:usersadministratordesktop1>dumpbin /imports uninstall.exemicrosoft (r) coff/pe dumper version 14.36.32535.0copyright (c) microsoft corporation. all rights reserved.dump of file uninstall.exefile type: executable image  section contains the following imports:    kernel32.dll                408070 import address table                408614 import name table                     0 time date stamp                     0 index of first forwarder reference                  30b setcurrentdirectoryw                  161 getfileattributesw                  16a getfullpathnamew                  356 sleep                  1df gettickcount                   56 createfilew                  163 getfilesize                  271 movefilew                  31a setfileattributesw                  17e getmodulefilenamew                   46 copyfilew                   b9 exitprocess                  314 setenvironmentvariablew                  1f4 getwindowsdirectoryw                  1d6 gettemppathw                  111 getcommandlinew                  1e8 getversion                  315 seterrormode                  390 waitforsingleobject                  142 getcurrentprocess                   39 comparefiletime                  20a globalunlock                  203 globallock                   6f createthread                  171 getlasterror                   4e createdirectoryw                   69 createprocessw                  2c5 removedirectoryw                  3c3 lstrcmpia                  1d4 gettempfilenamew                  3a4 writefile                  3c6 lstrcpya                  3c7 lstrcpyw                  270 movefileexw                  3be lstrcatw                  1c2 getsystemdirectoryw                  1a0 getprocaddress                  17f getmodulehandlea                  1ff globalfree                  1f8 globalalloc                  1b6 getshortpathnamew                  2dc searchpathw                  3c4 lstrcmpiw                  31f setfiletime                   34 closehandle                   bd expandenvironmentstringsw                  3c1 lstrcmpw                  150 getdiskfreespacew                  3cd lstrlenw                  3ca lstrcpynw                  15a getexitcodeprocess                   d5 findfirstfilew                   dd findnextfilew                   84 deletefilew                  31b setfilepointer                  2b5 readfile                   ce findclose                  274 muldiv                  275 multibytetowidechar                  3cc lstrlena                  394 widechartomultibyte                  19d getprivateprofilestringw                  3aa writeprivateprofilestringw                   f8 freelibrary                  254 loadlibraryexw                  182 getmodulehandlew    user32.dll                408198 import address table                40873c import name table                     0 time date stamp                     0 index of first forwarder reference                  15c getsystemmenu                  248 setclasslongw                  1ae iswindowenabled                   c2 enablemenuitem                  283 setwindowpos                  15a getsyscolor                  16f getwindowlongw                  24d setcursor                  1bd loadcursorw                   38 checkdlgbutton                  13c getmessagepos                  1b9 loadbitmapw                   1c callwindowprocw                  1b1 iswindowvisible                   42 closeclipboard                  24a setclipboarddata                   c1 emptyclipboard                  1f6 openclipboard                  2d8 wsprintfw                  231 screentoclient                  174 getwindowrect                  15d getsystemmetrics                  254 setdlgitemtextw                  114 getdlgitemtextw                  1e3 messageboxindirectw                   2f charprevw                   2a charnexta                  2d7 wsprintfa                   a2 dispatchmessagew                  201 peekmessagew                  10c getdc                  22a releasedc                   c4 enablewindow                  193 invalidaterect                  240 sendmessagew                   8f defwindowprocw                    d beginpaint                   ff getclientrect                   e2 fillrect                   c6 enddialog                  219 registerclassw                  29a systemparametersinfow                   61 createwindowexw                   f9 getclassinfow                   9f dialogboxparamw                   2c charnextw                   e1 exitwindowsex                   99 destroywindow                  1c1 loadimagew                  27a settimer                  287 setwindowtextw                  204 postquitmessage                  292 showwindow                  111 getdlgitem                  1ad iswindow                  281 setwindowlongw                   e5 findwindowexw                  2a4 trackpopupmenu                    9 appendmenuw                   5e createpopupmenu                   bf drawtextw                   c8 endpaint                   56 createdialogparamw                  23f sendmessagetimeoutw                  257 setforegroundwindow    gdi32.dll                40804c import address table                4085f0 import name table                     0 time date stamp                     0 index of first forwarder reference                  20e selectobject                  216 setbkmode                   3d createfontindirectw                  23c settextcolor                   8f deleteobject                  16b getdevicecaps                   29 createbrushindirect                  215 setbkcolor    shell32.dll                40817c import address table                408720 import name table                     0 time date stamp                     0 index of first forwarder reference                   c3 shgetspecialfolderlocation                   bd shgetpathfromidlistw                   7a shbrowseforfolderw                   ad shgetfileinfow                  10b shellexecutew                   9b shfileoperationw    advapi32.dll                408000 import address table                4085a4 import name table                     0 time date stamp                     0 index of first forwarder reference                  1d7 regdeletekeyw                  22f setfilesecurityw                  1ac openprocesstoken                  150 lookupprivilegevaluew                   1c adjusttokenprivileges                  1ed regopenkeyexw                  1e2 regenumvaluew                  1d9 regdeletevaluew                  1cb regclosekey                  1d2 regcreatekeyexw                  205 regsetvalueexw                  1f8 regqueryvalueexw                  1e0 regenumkeyw    comctl32.dll                408038 import address table                4085dc import name table                     0 time date stamp                     0 index of first forwarder reference                   34 imagelist_addmasked                      ordinal 17                   38 imagelist_destroy                   37 imagelist_create    ole32.dll                4082a0 import address table                408844 import name table                     0 time date stamp                     0 index of first forwarder reference                  105 oleuninitialize                   ee oleinitialize                   65 cotaskmemfree                   10 cocreateinstance  summary       21000 .data       36000 .ndata        2000 .rdata       13000 .rsrc        7000 .textc:usersadministratordesktop1> 可以发现这里面并没有wow64log.dll这个导入dll,那么他有可能是动态加载的,也有可能是默认加载的。这样我们就不需要考虑这个dll的导出函数了,直接伪造一个dll即可。
首先我们要知道这个可执行程序32位还是64位,我们可以用die或者x64dbg去查看。
这里看得出来是pe32,那么我们要构造的dll也就是32位的dll。
我们在进程附加的时候去弹出一个信息框
这里我们选择和程序对应的架构。x86编译出来就是pe32。
编译好之后我们和可执行文件放到同目录下去执行文件即可。
很遗憾我们并没有去加载成功我们的dll,此时就说明此文件不是我们可以利用的程序,我们需要去更换程序。我们需要继续去以上步骤去重新找白程序文件。
这里我们找到一个企业微信里面的exe我们再去尝试一下。
可以看出我们先加载了dbghelp.dll我们将我们之前的文件名字改成这个名字看看是否可以运行。
此时看到这个图,不要认为我们又要换白程序了,报错是成功的一大步,到这里就说明我们已经成功百分之90了,这里的问题是我们dll虽然有了但是程序加载我们的dll后调用的函数我们并没有提供,好的我们用dumpbin来看下。
c:usersadministratordesktop1>dumpbin /imports minidump.exemicrosoft (r) coff/pe dumper version 14.36.32535.0copyright (c) microsoft corporation. all rights reserved.dump of file minidump.exefile type: executable image  section contains the following imports:    dbghelp.dll                403108 import address table                403a6c import name table                     0 time date stamp                     0 index of first forwarder reference                   1d minidumpwritedump
这里可以看到我们的dll需要一个minidumpwritedump这个函数,我们在代码中添加一下。
我们编译再去执行下。
这里我们就可以弹出我们的信息框了。
三、如何检测是否为白加黑程序
1. 杀软检测
杀软很容易检测的这些简单的白加黑文件,因为我们找的黑dll是系统自带的文件,杀软只需对比hash就可过了出是不可信文件,一般情况下也不会有程序去伪造系统的dll文件。(这里也好解决我们只需要找一些加载不是系统文件的白程序即可。)
2. 手动检测
手动检测的方式也很简单,我们只需要多注意这种exe只带有一个dll的文件,因为如果是木马的话他一般不会有很多文件,我们可以dll右键属性看看是否有签名,如果没有就很可疑,如果有的话看看签名是否有效,这里也可以用代码去代替这个过程。
以上两种都可以怀疑此程序是可疑程序。


基于Zynq的超清4K视频工具箱支持视频格式为4096x2160/60帧的超高清电视(UHDTV)开发
启扬智能基于QY-IMX6主板的智能电子公交站牌解决方案
家用和工业超声波清洗机有什么区别?
无线充电器NPO贴片电容完全可以使用CBB电容替代
从币安平台币BNB窥探区块链世界价值捕获
什么是白加黑技术 免杀技术之白加黑攻击防御技术分析
C++可调用Callable类型的总结
为什么要使用有源光缆(AOC)?
人脸识别考勤系统在学校应用,是如何提升校园安全的?
双重显示的音频指示器电路
人工智能会是人类发展的新曙光吗?
智能家居未来的重要一步:开发跟踪占用者并自我适应其偏好的自动化系统
TVS保护原理和参数解读
加贺富仪艾电子的低功耗蓝牙传感评估解决方案
紫光国微上半年净利润13.92亿元,同比增长16.22%
用于可变扭矩和恒定扭矩的变速应用中的电机控制PWM模块
区块链对于教育领域有什么可以应用的
大陆未来将押注自动驾驶 虽然预计经济环境不会好转
TCL贬损海信激光电视,赔偿经济损失50万元
解析模拟示波器正确的使用方法