目录
笔记
下载器:从网上下载代码,在本地运行,通常会用到URLDownLoadtoFileA和WinExec进行下载和运行恶意代码
启动器:一类可执行文件,用来安装运行的
后门:让攻击者通过远程访问来控制计算机的恶意代码,常用的方法是借助80端口的HTTP协议进行通信。
反向shell:从感染机器上发起一个连接给攻击者,
通过CreateProcess的STARTUPINFO的结构来创建套接字并与远程服务器连接。并绑定套接字与cmd.exe标准流。还可以利用隐藏窗口的模式来创建cmd程序。
多线程:涉及一个套接字,两个管道及两个线程的创建。(CreateThread,CreatePipe)CreatePipe绑定一个管道的读写端。CreateThread用来绑定一个管道与标准流
远程控制工具:远程管理一台或多台计算机。
僵尸网络:是被感染主机的一个集合。由一个称为僵尸控制器的机器作为服务器。目标是尽可能多的感染机器,构建一个更大的僵尸网络,来达到传播其他恶意代码或蠕虫或执行分布式拒绝服务攻击(所以僵尸机同时访问同一个站点)。
登录凭证窃密器:窃取一台主机上的登录凭证(窃取登录凭证的程序,转储存放信息的程序,击键记录程序)
GINA拦截:伪造一个类似于msgina.dll功能的dll,将其放在winlogon.exe和msginall.dll中间,实现中间人攻击。
口令hash转储:1.pwdump->注入dll到lsass.exe程序,调用lsaext.dll的Gethash函数来执行口令的提取。在标准的pwdump中的导出函数是GrabHash。但这个函数名会被轻易改变,所以我们要关注与这个导出函数的提取hash的过程,因为要动态解析一些API函数,所以这个函数会首先调用多次GetProAddress。其中samsrv.dll可以访问SAM,这个里面的SamIGetPrivateData函数用来提取哈希,SystemFunction025用来解密hash。
2.PSH工具->whosthere-alt注入一个DLl到lsass.exe来转储SAM。导出的函数是Testdump的函数。这个导出函数会调用secur32.dll的LsaEnumeraLogonSessions函数获取代码清单,再利用GetmoduleHandle。。。。。
击键记录:SetWindowsHookEx挂钩击键记录器
GetAsynKeyState来识别一个按键是被按下还是弹起
GetForegroundWindow对应于当前操作的端口,告诉击键器哪个应用程序正在执行输入
可能出现的字符串:Up/Num Lock/Down/Right/Left/PageDown
存活机制:
Sysinternals帮助找出所有的自启程序
Applnit_DLL->存储在HLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost (user32加载时加载)
值:REG_SZ
Winlogon Notify->HLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
值:Notify
挂钩一个特殊的Winlogon事件,甚至可以在安全模式下运行。
SvcHost DLL->HLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost 服务组被定义的位置
HLM\SOFTWARE\System\CurrentControlSet\Services\ServiceName 服务定义
(值:DisplayName,Description,ImagePath包含服务可执行文件的位置,ServiceDll->Parameters(位置)->start(启动时间))
特洛伊木马化:修改系统二进制文件(修改一个系统文件的函数入口,使他跳转到恶意代码),当被感染的二进制文件下次运行或者加载时,将会强制运行恶意代码。
DLL加载顺序劫持:因为WIndows上的Dll加载有一个默认的规则,就是先在主程序目录下查找B.dll,如果没有就在系统路径下找,如果还没有,就去环境变量路径里找。下面两个链接关于DLL劫持有着更好的叙述。
https://blog.csdn.net/u013761036/article/details/52268500
https://www.cnblogs.com/wayuzhi/p/4152516.html
提权:
利用本地系统已知漏洞和0day漏洞->Metasploit Framework->http://www.metasploit.com
DLL顺序劫持->通过写操作加载到高权集上运行
使用SeDebugPrivilege
访问令牌->一个包含进程安全描述符的对象
|
指定拥有者的访问权限(可以通过AdjustTokenPrivilege来调整访问令牌)
调用函数组合:OpenProcessToken,LookupPrivilegeValueA,LUID结构,AdjustTokenPrivileges
隐藏踪迹:
通过用户态的Rootkit隐藏它的生存机制和运行的进程
IAT Hook->修改函数指针,改变执行流
lnline Hook->修改函数的实际代码
照样放上链接https://blog.csdn.net/hpp24/article/details/52511509,越来越感觉后面写的生涩难懂。
实验
Lab11-1
静态分析:call sub_401080
FindResourceA:在可执行文件和装载的DLL文件中寻找资源
LoadResource:从PE文件中装载资源到内存中
LockResource:锁定资源并得到资源在内存中的第一个字节的指针
SizeofResource:表示该函数返回指定资源的字节数大小
https://blog.csdn.net/qq1841370452/article/details/54859528
对资源段中进行了一系列操作
分配指定的内存大小,创建一个msgina32.dll文件,将指定资源段的东西写入。
在PE查看器中打开,看到资源段的TGAD处是一个内嵌的PE文件,有可能是恶意的。
call sub_401000
恶意代码插入msgina32.dll的路径到注册表CurrentVersion\winlogon\GinaDLL中 ,当系统重启时,WinLogon会加载这个DLL
动态分析:
在c目录下创建了msgina32.dll文件,并设置了GINA注册表的值。
分析msgina32.dll:
存在大部分以Wl开头的导出函数,初步判断是GINA拦截恶意代码
加载真正的msgina,因为恶意代码介于Winlogon.exe与msgina.dll中间,必须要兼顾msgina.dll中的函数,所以获取MSGina句柄。
分析WlxLoggendOnSAS导出函数,调用sub_10001000,传入函数名,MSGina句柄从而获取到真正WlxLoggendOnSAS的函数地址。
分析WlxLoggendOutSAS导出函数,进入sub_10001570,打开msutil32.sys文件来记录登录的时间,日期,凭证信息。
Lab11-2
静态分析:
根据AppInit DLLs知道恶意代码使用AppInit_DLLs来永久安装自身。send和wsock32.dll表明可能有网络操作。OUTLOOK.exe,MSIMN.EXE和THEBAT.EXE是邮件客户端。RCPT是一个SMTP命令,创建一个电子邮件的收件人
这个dll的导出函数installer的作用是将本身拷贝一份命名为spoolvxx32.dll到系统目录,并将设置为一个APPInit_DLLs的值。从而一旦user32.dll调用,这个dll就会跟随调用。
下面来分析DLLMain:
所有的DllMain函数开始都会核验DLL_PROCESS_ATTACH(1值)。如果不是1值,会直接返回。
先利用GetWindowsSystemDirectory获取系统目录, 在使用strncat将其与文件名组成一个绝对路径。打开文件,读取文件内容,最下方的sub_10001003应该就是解密函数。利用od动态调试,得到这个函数处理后的字符串 billy@malwareanalysisbook.com。
分析sub_100014B6:
进行进程的比对,是否有与邮件相关的进程
先来看一下sub_10013BD函数和sub_10001499函数。根据sub_10013BD函数的调用序列表明挂起除当前线程的其他线程。
CreateToolhelp32Snapshot---是对线程建立快照
Thread32First---第一个线程
SuspendThread---挂起线程
重点关注sub_100012A3函数,对send函数进行了挂钩。
分析sub_100012A3:
进去sub_10001203
分析完毕
Lab11-3
静态分析:
根据这两个导出函数,猜测功能是击键记录器。
启动cisvc程序,并且调用了zzz69806582函数。
Lab11-3.exe
将Lab11-03.dll复制到系统目录下,经过sub_401070后,调用cisvc程序。
sub_401070
对cisvc.exe文件的代码段进行了修改,UnmapViewOfFile函数可以对修改后的文件保存,所以这个里面没有writefile函数。说明这个程序的目的是对cisvc.exe进行感染,具体修改了什么,接着往下看,关注代码后半段,如下图
这里的代码F5进行还原C,可以看出把byte_409030地方的数据复制到了cisvc.exe代码段开始的位置。所以要追溯byte_409030
byte_409030
将这这里的数据转化为代码如下图
可以看到标准的函数开始时的push语句,然后调转到了loc_409134
loc_409134
这里是最开始复制到系统目录下的dll文件,还有一个它的导出函数。所以有理由猜测,调用了这个函数。关注zzz69806582
zzz69806582
函数的开始位置创建了一个线程,这个线程的代码位置在红框处,跟入
在系统目录下创建了一个文件,在关闭这个文件之前,调用了函数sub_10001380,进入
sub_10001380
进入到这个函数,可以看见标准的击键记录器所需要的函数,由此判定功能是击键记录器,并把记录写入kernel64x.dll文件中
总结:这个.exe程序将具有击键功能的dll程序复制到系统目录,然后感染cisvc.exe系统文件,使其运行时调用恶意dll程序的zzz69806582函数,并记录在系统目录下的kernel64x.dll文件中。静态分析结束。