恶意代码
一、恶意代码
1、恶意代码是通过存储介质和网络进行传播,从一台计算机系统到另一台计算机系统,未经授权破坏计算机系统完整性的程序或代码。
计算机不仅仅指电脑,指一台设备。
未经授权 --> 用户不知道,用户同意的不算
2、恶意代码的种类:病毒、木马、蠕虫、逻辑炸弹、网络钓鱼、Botnet、Rootkit
① 病毒 --> 是一段代码,本身不能执行,是依靠宿主程序的启动而启动。
只能依附于宿主文件才能执行和传播。感染后,搜索所有可执行文件,在其中加上病毒代码,并通过修改 PE 文件,使执行时首先执行病毒代码。
通过电子邮件,文件复制、引导区感染来传播 。eg:U 盘等
可执行文件 .exe、.com、.du、.elf
※特点:可执行性、非授权性、感染性、自我复制性、破坏性。
② 木马 --> 是自启动
木马其实是用户自己拖进去的,木马是独立的,本身就是一个可执行文件。
木马实质是 C / S 结构的网络程序。
※特点:隐蔽性、非授权性、可控性、高效性。
木马功能:保留访问权限、远程控制、远程文件操作、远程命令执行、信息收集、收集系统关键信息、手机密码或密码文件
远程管理软件与木马功能上差不多,但是不具有隐蔽性
③ 蠕虫 --> 主动传播
蠕虫是利用系统漏洞来进行传播的,也是一个独立的可执行文件。
蠕虫是一种智能化、智能化的攻击程序或代码,主动扫描和攻击网络上存在的系统漏洞的节点主机,通过局域网或者互联网从一个节点传播到另一个节点。
3、现在恶意代码很多是综合了病毒、木马、蠕虫等多种。
恶意代码的发展趋势:专业化、多平台、复杂化
APT 高级可持续性威胁 --> 针对某一目标,利用综合手段,投入大量精力,获取有用信息
恶意代码技术的发展(从程序结构的角度):单一程序 --> 传统C/S --> 反弹窗口的C/S结构 --> 多层级结构
(1)单一程序结构(???????????????)
收件人的邮箱、发件人的邮箱、密码都是自己填的。
(2)基于远程控制的木马在本质上仍然是一种基于 客户/服务器 的程序。
传统结构:控制端链接木马端程序
反弹窗口:木马端程序反向链接控制端程序 --> 控制端程序IP 地址如何确定
防止目标暴露 --> 两层级结构:利用中间服务器控制木马
4、衡量木马优劣的指标:生存能力 --> 隐蔽性
① 身份隐蔽;② 文件隐蔽; ③ 通信隐蔽; ④ 进程隐蔽; ⑤ 启动隐蔽。
How 防止主机被追踪:
5、身份隐藏
从体系结构的角度 --> 增加体系结构的复杂度;
从追踪分析的角度 --> 混淆追踪过程的关键信息。
(1)增加体系结构的复杂度
① 多层次结构代替直连/二级结构。
优:层次越多,分布越广,越难追踪;缺控制性变差,肉鸡IP地址长期不变易被发现。
② 去中心网络 eg:P2P
控制端称为P2P网络中的一个常驻点,每个节点均可以称为控制端和执行端。
优:无明确指向的控制端,隐藏性高;缺:有失去“整个网络”的高风险(一旦被发现,可能有一个节点发现多有节点)。
(2)混淆追踪过程的关键信息
样本分析(外连)--> 直连IP地址 --> 域名分析 --> 找真实IP(后三个步骤可以混淆隐藏)
① 直连IP的隐藏 —— 利用代理隐藏IP
暗网 Tor 提供的代理服务、利用VPN/VPS进行隐藏
VPN合法租用境外服务器,提供多个IP,组建VPN节点列表。
② 域名分析 —— 采用多域名分散存放
木马模块化,将不同模块存放在不同域名。
域名来源尽量采用知名厂商的二级域名;利用云盘作为存储媒介。
③ 域名找真实IP —— IP混淆
利用负载均衡,实现一域名对多IP;
IP地址的获取不通过域名解析,而采用第三方的插件/脚本获得。
二、恶意代码的植入技术
① 攻击获权;② 社会工程; ③ 漏洞利用; ④ 媒介传播; ⑤ 中间人; ⑥ 文件感染; ⑦ 其他
1、利用移动介质植入
利用主机配置中存在的缺陷或漏洞实现介质中恶意代码的加载和复制。
U盘用虚拟机接也不行,因为利用的是物理机的接口。
2、攻击获权
利用直接攻击手段 eg:口令攻击,获得目标系统的写文件权限,将恶意代码植入然后远程控制。
3、社会工程学——伪装和欺骗
利用他人的信任欺骗或诱使他人下载后执行代码。
常见形态:邮件附件、链接、捆绑后的可执行文件等。
① 邮件:将木马程序伪装添加到邮件的附件中发送给用户。
下载后打开;直接打开
直接打开时,IE浏览器会对这个邮件头进行解析,找相应的应用程序来执行。
应对:下载后可在虚拟机、沙箱中打开一下。
② 链接:将被挂马的网页以链接方式直接传播或植入第三方软件。(网页浏览、多媒体文件、电子书)
③ 文件捆绑:将不同的可执行文件绑定在一起,通过图标、文件名的伪装,诱骗用户下载并执行。(文件捆绑工具、自定义可执行文件包)
木马通过诱骗用户下载并安装至目标计算机的过程称为下载植入。
4、利用漏洞植入
利用目标系统或应用软件存在的逻辑和编程漏洞实现主动植入。
如果附件与命名不一致,浏览器回按真正的格式执行。
5、中间人攻击植入
通过目标系统外连的链路上进行监听,利用软件自动更新植入木马。
三、恶意代码的隐藏技术
木马的痕迹:启动项(资源)、文件(静态)、进程(动态)、网络连接
木马的隐藏:启动隐藏、文件隐藏、运行隐藏、通信隐藏
1、木马的启动方式
(1)系统启动目录:开始 --> 程序 --> 启动
(2)系统启动配置文件
修改系统配置文件
① SYSTEM.INI —— Windows 目录下
② WIN.INI —— Windows 目录下
③ Wininit.ini —— Windows 目录下
(3)注册表启动项
与开机自启动相关的注册表项非常多。
等均可开机自启动,把键值设好路径。
dll形态的木马,可以通过以下三种系统默认方式自动加载:
(4)文件关联
将木马程序作为某类文件的打开程序。
HEY_CLASS_ROOT 不同文件后缀,关联到什么应用程序。(.exe 格式的文件是跟自身关联的)
注意:木马程序必须内嵌运行原打开程序的功能;木马程序必须处理多实例运行情况。
映像劫持:(eg:想打开aa.exe时打开bb.exe)
(5)捆绑文件加载
将木马绑定到其他程序中,当这些程序在传播的同时也实现了木马的传播。被绑定的文件一旦开始执行,木马就被启动。
开机之后、登陆之前加载,一般没有界面。
eg:木马绑定到浏览器,开机检查时没有发现木马端口,上网浏览后木马启动,将打开公开端口进行工作。
(6)注册系统服务(采用很多)
服务:执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序。
若木马将自己注册成系统服务,并设置成自动启动模式,那么它将随系统开机而启动。
(7)文件运行劫持/路径劫持
利用文件运行时搜索路径的顺序,将其优先定义。
记得桌面程序也要起来,在木马程序中把它起来。
(8)屏幕保护
屏幕保护程序 .scr文件 ——是 PE 格式的可执行文件
(9)计划任务
Windows 的计划任务功能是指某个程序在某个特定的时间启动。
(10)驱动加载
(11)木马运行期间隐藏启动方式
(12).cmd
(13)借助于其他软件功能:迅雷、网际快车等安全检测选项。
检查所有启动项的软件:Autoruns
2、木马文件隐藏
设置文件为隐藏文件、伪装 --> 替换系统 DLL --> 躲进回收站(autorun.inf)--> 木马运行期间没有文件
(1)伪装欺骗
① 系统文件名 eg:svchost.exe --> svch0st.exe(零) ② 签名(微软的文件有签名)③ 文件大小(防止按大小去搜,看有没有备份的)④ 创建时间 ⑤ 后缀(备份文件可以起个 eg:.doc,然后放个很深的目录或者回收站之类的)
(2)隐藏
① 属性隐藏(将显示隐藏文件的勾去掉)
② 信息隐写(不适合木马)
③ 文件系统过滤驱动(操作系统之上)
④ 固件、引导区
一运行就写出后删除,运行期间无文件,拦截关机信息就写入文件。
3、木马运行隐藏
(1)运行实体——进程
进程的方式:① 驱动;② 线程(动态链接库);③ 隐藏进程(可用驱动实现,任务管理器中也不显示);④ 代码(漏洞eg:shellcode、病毒eg:文件绑定)
进程隐藏:① 使用隐蔽性、欺骗性强的进程名称;② 使用动态链接库; ③ 在其它进程空间中插入代码;④ 过滤进程信息。
(2)DLL 木马
硬性:替换系统 DLL
软性:DLL 注入 --> ① 修改注册表;② 安装系统钩子;③ 远程线程插入; ④ 借壳(svchost 服务)
① 修改注册表启动 DLL —— 方法略(可能会报警)
② 安装系统钩子 HOOK
是Windows Hook 消息处理机制的一个平台,应用程序可以在上面设置子程序来监视指定窗口的某种消息,而且多见识的窗口可以是其他进程创建的。当消息到达后,在目标窗口之前处理它。钩子机制允许应用程序截获 处理 Windows 消息或特定事件。
HOOK 的类型很多,不仅可以钩软件,还可以钩硬件 。eg:在键盘中下钩子
全局钩子(对任何一个进程)、局部钩子(只对某一个进程 eg:只对 QQ 键盘输入)
③ 远程线程插入(Win7之后禁了,安全软件不允许插入)
在另一个合法的进程中插入自己的代码。
不会出现单独的进程,该进程的线程数会增加。
过程:打开要被插入的线程 、要插入的动态链接库名、计算 dll 文件名长度(计算占用进程的空间数)、申请存放文件名的空间、把 dll 文件名写入申请的空间、创建远程线程
④ svchost 服务(服务无界面,很适合木马)
sbchost进程:svchost.exe 是从动态链接库 DLL 中运行的服务的通用主机进程的名称。
当系统启动时,svchost 将注册表中的服务部分,以构建需要加载的服务列表。svchost 的多个实例可以同时运行,每个 svchost 会话可以包含一组服务。
svchost 木马 —— 优:无进程,实现自动启动,运行方式和启动方式隐蔽;缺:DLL 服务程序编写复杂。
(3)修改系统服务描述表
挂接 NtQuerySystemInformation 函数,修改 ActiveProcessLinks。
SSDT 系统服务分配表。
挂钩 SDDT HOOK 的步骤:
4、木马通信隐藏
根本没有木马可以真正隐藏数据包,要尽一切可能的掩盖痕迹。
(1)本地——端口隐藏:① 复用端口; ② 修改系统关键数据。
(2)数据包隐藏:ICMP、UDP、HTTP 隧道、不规则 IP报文
① 利用ICMP协议通信
可以利用 ICMP 回送应答(type=8)报文传送数据,摆脱端口的约束。
② 利用HTTP 隧道通信
防火墙那只对 HTTP报文的某些字段(eg:POST、GET 等命令头进行检查)。伪装成合法的 HTTP 报文,即可穿透防火墙。
四、恶意代码的检测与防范
1、恶意代码检测方法:发现异常 --> 分析异常 --> 清除异常
(1)发现异常 —— CPU,内存,硬盘,操作系统的设置(文件、进程、通信等)
(2)分析异常 —— 将异常的根源从操作系统中找出来,即定位要准确。
(3)处理异常 —— 通过手工方式或借助安全软件,将产生恶意代码的源从系统中清除
2、恶意代码的防范
使用查杀木马的软件,查看 TCP 和 UDP 连接,端口扫描,防火墙,始终显示扩展名、隐藏文件、系统文件,经常查看注册表关键值,及时更新病毒库、系统升级,不随意浏览邮件附件,小心下载软件,提高安全意识