恶意代码发展史
1949:冯·诺依曼在《复杂自动机组织论》提出概念
1960:生命游戏(约翰·康维 )
磁芯大战 (道格拉斯.麦耀莱、维特.维索斯基 、罗伯.莫里斯
1973:真正的恶意代码在实验室产生
1981年-1982年:在APPLE-II的计算机游戏中发现FIk cloner
1986年一第一个PC病毒: Brain virus
1988年-Morris Internet worm-6000多台
1990年一第一个多态病毒 (躲避病毒查杀)
1991年-virus construction set-病毒生产机
1994年-Good Times(joys)
1995年一首次发现macro virus
1996年-netcat的UNIX版发布 (nc)
1998年一第一个Java virus(StrangeBrew)
1998年-netcat的Windows版发布 (nc)
1998年-back orifice(BO)/CIH1999年-melissa/worm(macrovirus by email)
1999年-back orifice(BO) for WIN2k
1999年-DOS/DDOS-Denial of Service TFT/ trin00
1999年一knark内核级rootkit(linux)
2000年一love Bug(VBScript)
2001年一Code Red -worm(overflow for IIS)
2001年-Nimda-worm(lIS/ outlook/file share etc.)
2002年-setiri后门
2002年-SQL slammer(sqlserver)
2003年一hydan的steganography工具
2003年-MSBlaster/ Nachi
2004年一MyDoom/ Sasser
2006年一熊猫烧香
2010年-Stuxnet(工业蠕虫) 震网病毒
2012年一火焰病毒
各种蠕虫、木马悄悄的潜伏在计算机中,窃取信息
恶意代码的发展趋势
- 从传播速度上来看
- 恶意代码爆发和传播速度越来越快
- 从攻击意图来看
- 从游戏、炫耀逐步转向恶意牟利
- 从功能上来看
- 恶意代码的分工越来越细
- 从实现技术来看
- 恶意代码实现的关键技术不断变化
- 从传播范围来看
- 恶意代码呈现多平台传播的特征
恶意代码的传播方式
- 移动存储
自动播放功能windows默认自动执行autorun.inf指定的文件。
Autorun.inf 是 Windows 操作系统中的一个文件,它用于在插入可移动存储设备(例如 USB
驱动器、CD/DVD)时自动启动软件程序或打开特定的文件。该文件必须位于可移动存储设备的根目录下,并且须包含正确的指令和参数。然而,由于安全原因,现代版本的
Windows 操作系统通常会禁止 autorun.inf 的自动执行,并要求用户手动启动相关应用程序。######################################################################
以下是与 autorun.inf 相关的 Windows API:
GetPrivateProfileString:可以使用该函数来读取 autorun.inf 文件中的特定键值对。
GetDriveType:该函数返回指定驱动器的类型,例如可移动磁盘、固定磁盘等。这对于识别插入的设备是否是可移动存储设备很有用。
ShellExecuteEx:可以使用该函数来执行 autorun.inf 文件中配置的 shell 执行命令。
SHGetFileInfo:该函数可以获取文件的属性和图标信息,可以用于获取 autorun.inf 文件的图标信息。
RegisterDeviceNotification:该函数允许应用程序注册通知事件,以便在插入或移除设备时接收通知。这对于实现自动运行功能很有用。
需要注意的是,由于安全原因,某些操作系统可能已禁用相关的 API 或限制其使用。为避免潜在的安全风险,建议使用最新版本的 Windows操作系统并按照最佳实践进行安全配置。
设置组策略编辑器
- 文件传播
文件感染
软件捆绑:
- 强制安装:在安装其他软件时被强制安装上
- 默认安装:在按照其他软件是被默认安装上
-
网络传播
- 网页
- 电子邮件(邮件附件病毒)
- 即时通讯(QQ欺骗点击,(伪造有效资源进行传播))
- 共享
1. 管理共享:C盘、D盘、windows安装目录
2. 用户共享 : 用户设置的共享
3. 典型病毒:lovegate、Spybot、Sdbot
-
主动放置
利用系统提供的上传渠道(FTP、论坛等)
攻击者已经获得系统控制权
攻击者是系统开发者
- 软件漏洞
利用各种系统漏洞
缓冲区溢出:冲击波、震荡波
利用服务漏洞:
IIS的unicode解码漏洞:红色代码
恶意代码的启动技术
- 随系统启动而加载
-
开始菜单中的启动项
-
启动配置文件(用户登录后才能启动)
- Autorun.bat
- Win.ini
- System.ini
-
注册表启动项
- 优势:隐蔽性强、方式多样
- 加载位置:
-
Load键值、Userinit键值、Run、RunServicesOnce、RunServices、RunOnce…
- 系统服务
病毒将程序注册为系统服务
1. 优势:隐蔽性强、无需用户登录、权限较高
2. 加载方式:单独服务、替换系统服务程序
- 组策略:
- 优势:类似启动项,但隐蔽性更高。(需要用户登录)
- 随文件执行加载
- 感染/文件捆绑
- 传统病毒
- 宏病毒
- 程序合并
- 感染/文件捆绑
- 浏览器插件,浏览器启动即加载
- 修改文件关联
原理
正常情况下,文本文件(.txt) 关联到记事本notepad.exe打开,
异常情况下,病毒修改 文本文件(.txt) 关联到病毒打开。
优势
隐蔽性强,可关联任意类型文件,甚至可以关联目录操作。
- 其他等
恶意代码的生存技术
恶意代码主程序
实现恶意代码主功能
病毒的守护程序
监视并保护主进程正常运行
阻止主程序的退出
重启主程序
备份中还原主程序
从网络中重新下载主程序
设备注册为设备驱动程序。
恶意代码通过将自身注册成为设备驱动,从而获得较高权限阻止反病毒软件对它的查杀并千扰反恶意代码软件的正常运行
特点:
非常高的权限
安全模式下可工作
无法直接查杀
检测对抗技术-反动态调试
动态调试发现
- 伪断点
- 校验和,发现调试
- 监测运行环境,发现调试工具
反动态调试的发现
封锁键盘输入和屏幕显示
中止调试软件
恶意代码程序自动退出
反静态调试的实现
加壳:对恶意代码的可执行二进制程序进行压缩,使其执行流程发生变化
加密:随着加密密钥的变化,恶意代码会产生不用的表现形式,进一步提高了其抗静态分析的能力
代码混淆:通过插入伪指令、混淆程序数据和控制流等方法,防止静态分析和检测。
恶意代码的隐藏技术
隐藏 通常包括 本地隐藏 和 通信隐藏
-
本地隐藏是指为了防止本地系统管理员察觉而采用的隐蔽手段。本地系统管理人员通过“查看进程列表“,“查看目录”,“查看内核模块”,“查看系统网络连接状态”等管理命令来检测系统是否被植入了恶意代码。
-
进程隐藏
- 进程迷惑:
- 每次启动生成不一样的进程名,退出后无法查找。
- 系统进程类命名 :windows.exe、 System1.exe、Kernel.exe
- 相似进程名:同名不同路径的进程:
- 进程迷惑:
4. 名称相似的进程:svchost.exe(right)、svch0st.exe(trojan)
- DLL注入
动态链接库文件(DLL):DLL注入技术是恶意代码将DLL文件放进某个进程的地址空间里,让它成为那个进程的一部分。
优势:1. 无进程、2. 隐藏性强、3.清楚难度大
三、网络连接隐藏
- 端口复用
重复利用系统网络打开的端口(如25、80、135、139等常用端口)传送数据,这样既可以欺骗防火墙,又可以少开新端口。
- 无端口 使用无端口协议
- 反弹端口(反弹shell)由内向外链接,穿透防火墙设备。
四、系统隐藏
- 隐藏、系统文件
- 流文件隐藏
ADS数据交换技术
NTFS 文件系统下,每个文件都可以有多个数据流,一个文件以流的形式附加到另一个文件(载体)中,流文件explorer.exe等文件管理软件不可见,病毒可以利用此方式进行隐藏。
- Hook技术
钩子机制允许应用程序截获处理window消息或特定事件。
在目标窗口处理消息前处理它
- 设置钩子,勾取对文件及目录操作
- 获得文件列表存放内存地址
- 获得文件列表结果
- 将病毒文件自身从列表结构中删除。
五、内核模隐藏
六、编译器隐藏
七、通信隐藏:主要包括 通信内容隐藏 和 传输通道隐藏
RootKit技术
恶意代码的隐藏或多或少都与RootKit技术相关。
恶意代码查杀案例
恶意代码分析工具介绍
Filemon、Regmon、PelD、W32Dasm及Ollydbg
冰刃或Xuetr、Windows清理助手、木马杀手、各种专杀工具。
案例1:熊猫烧香病毒
查系统内存-排查可疑进程:Spoclsv.exe
在cmd下输入命令tasklist /svc 来查看进程
确定病毒后,我们想要结束这个进程
在cmd下 taskkill /f /im PID来结束进程
查启动项 -> 删除病毒启动项
在开始-运行-msconfig-启动项中我们可以看到恶意病毒的位置和注册表的信息
然后我们要记下病毒的位置-c:windowslsystem32\drivers\spoclsv.exe
HKCU\SOFTWAER\Microsoft\windows\Current\Verstion\RUN
这个病毒的启动项信息,这个病毒的名称是svchare。
重启以后我们要仔细的检查下是否有感染和隐藏的文件
我们进入cmd在任意盘符下面输入:dir /ah
会发现还有隐藏的 病毒文件,那么我就要去手工清除这些隐藏的病毒进程文件。
我们在cmd下进行:
attrib -r -h -s autorun.inf
attrib -r -h -s setup.exe
去除后我们用 del /f 来进行删除掉。