64kramsystem/palware
GitHub: 64kramsystem/palware
该项目收录了一系列 DOS 时代经典恶意软件的现代反汇编代码与详细注释,旨在为逆向工程学习者提供安全、深入的历史研究素材。
Stars: 13 | Forks: 2
## 简介
Palware:旧石器时代恶意软件的反汇编!
该仓库包含我对 DOS 病毒的反汇编代码。
(对于年轻一代来说,“DOS”是 80 年代至 90 年代初占主导地位的消费级操作系统。)
## 目录
- [简介](#introduction)
- [目录](#table-of-contents)
- [这有(潜在)危险吗?](#is-this-potentially-dangerous)
- [为什么要逆向工程 \[DOS 病毒\]?](#why-reverse-engineering-dos-viruses)
- [当前反汇编列表](#current-disassemblies)
- [工作流程与工具](#workflow-and-tools)
- [待反汇编候选](#candidates-for-disassembly)
## 这有(潜在)危险吗?
没有。
原因如下:
1. DOS 病毒无法感染现代操作系统;理论上引导区病毒可能可以,但已经没人使用软盘了;
2. 这些文件是反汇编代码,而非二进制文件;心怀不轨的用户需要先对其进行汇编,但这不值得,因为其他网站已经提供了活体样本(例如 Open Malware);
3. 破坏性(磁盘覆写)代码已被移除(即使它们在现代操作系统上本就无法运行);
4. Mikko Hypponen [这么做了](https://archive.org/details/malwaremuseum),所以我也这么做!
## 为什么要逆向工程 [DOS 病毒]?
逆向工程是一项令人兴奋的活动(至少对于对底层编程感兴趣的人来说),因为这是一种循序渐进的调查工作。
恶意软件——至少是其中较复杂的子集——是一种富有创意、构思巧妙、涉猎广泛,有时甚至令人印象深刻的产品。
此外,逆向工程是一项耗费心力的活动,因为需要持续且全神贯注;取决于个人兴趣,这可能是单纯的乐趣,也可能富有成效,或者两者兼而有之。
## 当前反汇编列表
按完成时间倒序排列:
- `Virus.DOS.BadBoy.1000.a`:驻留内存的 COM 文件感染器
- 亮点:
- 病毒主体被分割成块,以(加密形式)随机混合的布局存储
- 绕过 Int 13 监视器(如果存在)
- `Virus.DOS.LoveChild.488`:普通的驻留内存的 COM 文件感染器
- 亮点:它驻留在中断表的上半部分;它使用一个未公开的 DOS 3.30 特性来劫持 Int 21
- `Virus.DOS.Tiny.163.a`:普通的驻留内存的 COM 文件感染器
- 亮点:它驻留在启动后未使用的内存区域
- `Virus.Boot.Stoned.March6.t`:普通的 Stoned 变种
- 亮点:非常有名,名为“Michelangelo”
- `Virus.Boot.Stoned.a`:普通的引导区感染器
- 亮点:非常有名
- `Virus.DOS.November17.855.a`:普通但编写规范的驻留内存型 COM/EXE 感染器
- 亮点:无,但在意大利广泛传播
- `Virus.Boot.PingPong.a`:非常有名的引导区病毒
- 反汇编未完成
## 工作流程与工具
病毒源主要来自 VX Heaven 收集和 Open Malware。
二进制文件通过 IDA Pro 反汇编,并转换/处理为兼容 NASM 的格式(通过 `vx_convert_ida_to_nasm.rb`),然后进行静态分析。
在第一次研究会议之前,反汇编代码会被重新编译为“参考”二进制文件,其目的是确保在研究过程中没有引入错误,特别是在数字转换为标识符/操作时。
`vx_compare.sh` 脚本将反汇编代码汇编,并与参考文件进行二进制比较,
然后将差异(如果有的话)可视化。
原始文件不能用作参考,因为汇编器会引入差异(无功能影响),这是由于可以使用不同的操作码来编码相同的指令,例如:
```
(33FF) xor di,di <> (31FF) xor di,di
```
参考文件已经引入了这些更改,因此与其进行比较不会显示这些差异。
## 待反汇编候选
潜在有趣的病毒列表,按复杂度排序:
- 小型 (大小 <= 1k)
- int13 (512):有趣的隐蔽技术 [VB 199103]
- 666 (512):有趣的簇感染;复杂的隐蔽技术 [VB 199005]
- dir ii (1024):有趣的感染方式 [VB 199111]
- 中型 (1K <= 大小 <= 2k)
- vacsina (早期 yankeedoodle) (1206)
- 1260 (~1.2k):第一个多态病毒;反调试 [VB 199003]
- cascade (1701):技术先进
- caterpillar (~1700):加壳保护
- jerusalem (~1800):具有历史意义
- mix-1 (1.6k):有趣的内存例程;几个 payload [VB 198912]
- 中/大型 (2k <= 大小 <= 3k)
- flip (2153):多态;针对杀毒软件;隐蔽;加壳;技术先进 [VB 199009]
- tequila (2400)
- uruguay v3/5 (2.5k/2.7k)
- invisible man (2.9k)
- yankeedoodle (晚期 vacsina) (2.9k+) v33+:自校正代码;v50+:保护模式
- 大型 (3k+)
- onehalf (3.5k)
- commander bomber (4k):插入宿主中间
- tremor (4k):隐蔽技术等
- frodo/4k:大量隐蔽技术 [VB ?]
- fish #6 (4k, frodo 变种):加壳 [? VB]
- uruguay v6 (4.9k+)
- whale (9k)
- ssr (18k)
- ACG (?, C?):变形病毒 [VB 199907]
- RDA.Fighter
从 Virus Bulletin 获取灵感也可能很有趣。
标签:COM文件感染, Cutter, DAST, DOS病毒, Wayback Machine, x86汇编, 云资产清单, 代码复原, 内存驻留病毒, 反汇编, 古董恶意软件, 安全报告生成, 恶意软件分析, 标本分析, 病毒源码, 网络安全, 自动回退, 计算机历史, 逆向工程, 隐私保护