检测和预防恶意活动(如僵尸网络攻击)是威胁情报分析师、安全操作员和威胁猎人关注的关键领域。本文以 Mozi 僵尸网络为例,演示了如何使用开源工具、分析流程和 Elastic Stack 来执行对收集的数据进行分析和丰富,而与活动无关。这将使您能够将下面概述的经验教训和流程应用于您的组织,并将其应用于您的特定用例。
Mozi 僵尸网络一直在利用易受攻击的物联网 (IoT) 设备来发起攻击,这些攻击可以利用僵尸网络提供的力量倍增(分布式拒绝服务 (DDoS)、电子邮件垃圾邮件、暴力破解、密码喷射等)。360Netlab 的研究团队于 2019 年 12 月首次报告了 Mozi,并且它继续在整个互联网上占据很大一部分物联网网络活动。
正如 360Netlab 报告的那样,僵尸网络通过使用目标设备的弱和默认远程访问密码以及通过多个公共漏洞传播。Mozi 僵尸网络使用分布式哈希表 (DHT) 进行通信,该表记录僵尸网络中其他节点的联系信息。这与文件共享点对点 (P2P) 客户端使用的无服务器机制相同。一旦恶意软件访问了易受攻击的设备,它就会执行有效载荷,随后加入 Mozi P2P 网络。新感染的设备会侦听来自控制器节点的命令,并且还会尝试感染其他易受攻击的设备。
Mozi 的目标是多个物联网设备和系统,主要侧重于小型办公室/家庭办公室 (SOHO) 网络设备、连接互联网的视听系统以及理论上任何 32 位 ARM 设备。
收集
在执行数据分析时,拥有的数据越多越好。恶意软件活动的分析也一样。通过付费订阅 VirusTotal,您可以收集大量数据进行分析,但我们希望为可能没有此高级服务的独立研究人员或较小组织提供一种方法。为此,我们决定坚持 Elastic 的根本,并利用开源数据集来避免可能阻止其他人使用我们的流程的付费墙。
首先,我们从ThreatFox收集了一些Mozi 样本。ThreatFox 是来自 Abuse.ch 的开源平台,旨在与安全研究社区共享恶意软件指标。
使用 cURL,我们查询了 ThreatFox API 以获取 Mozi 标签。这会返回 JSON 文档,其中包含有关恶意软件样本的信息,这些信息基于标记的信息。
curl -X POST https://threatfox-api.abuse.ch/api/v1/ -d '{ "query": "taginfo", "tag": "Mozi", "limit": 1 }'
代码块 1 - 对 ThreatFox API 的 cURL 请求
- -X POST - 将 cURL HTTP 方法从 GET(默认)更改为 POST,因为我们将要向 ThreatFox API 发送数据
https://threatfox-api.abuse.ch/api/v1/
- 这是 ThreatFox API 端点- -d - 这表示我们将要发送数据
- query: taginfo - 我们正在进行的查询类型,在我们的示例中为 taginfo
- tag: Mozi - 我们将搜索的标签,在我们的示例中为“Mozi”
- limit: 1 - 要返回的结果数,在我们的示例中为 1 个结果,但您最多可以返回 1000 个结果
这将返回以下信息
{
"query_status": "ok",
"data": [
{
"id": "115772",
"ioc": "nnn.nnn.nnn.nnn:53822",
"threat_type": "botnet_cc",
"threat_type_desc": "Indicator that identifies a botnet command&control server (C&C)",
"ioc_type": "ip:port",
"ioc_type_desc": "ip:port combination that is used for botnet Command&control (C&C)",
"malware": "elf.mozi",
"malware_printable": "Mozi",
"malware_alias": null,
"malware_malpedia": "https:\/\/malpedia.caad.fkie.fraunhofer.de\/details\/elf.mozi",
"confidence_level": 75,
"first_seen": "2021-06-15 08:22:52 UTC",
"last_seen": null,
"reference": "https:\/\/bazaar.abuse.ch\/sample\/832fb4090879c1bebe75bea939a9c5724dbf87898febd425f94f7e03ee687d3b\/",
"reporter": "abuse_ch",
"tags": [
"Mozi"
]
}
]
代码块 2 - 来自 ThreatFox API 的响应
现在我们有了几个样本的文件哈希,我们可以使用 Malware Bazaar API 下载这些样本。Malware Bazaar 是 Abuse.ch 提供的另一个开源平台。虽然 ThreatFox 用于共享有关指标的上下文信息,但 Malware Bazaar 允许实际收集恶意软件样本(以及其他功能)。
就像 ThreatFox 一样,我们将使用 cURL 与 Malware Bazaar API 进行交互,但这次是下载实际的恶意软件样本。值得注意的是,Malware Bazaar API 可用于使用标签(在我们的示例中为“Mozi”)搜索样本,类似于我们使用 ThreatFox API 的方式。不同之处在于,ThreatFox API 返回网络指标,我们稍后将使用这些指标进行数据丰富。
curl -X POST https://mb-api.abuse.ch/api/v1 -d 'query=get_file&sha256_hash=832fb4090879c1bebe75bea939a9c5724dbf87898febd425f94f7e03ee687d3b' -o 832fb4090879c1bebe75bea939a9c5724dbf87898febd425f94f7e03ee687d3b.raw
代码块 3 - 对 Malware Bazaar API 的 cURL 请求
- -X POST - 将 cURL HTTP 方法从 GET(默认)更改为 POST,因为我们将要向 Malware Bazaar API 发送数据
https://mb-api.abuse.ch/api/v1
- 这是 Malware Bazaar API 端点- -d - 这表示我们将要发送数据
- query: get_file - 我们正在进行的查询类型,在我们的示例中为 get_file
- sha256_hash - 我们将要收集的 SHA256 哈希,在我们的示例中为“832fb4090879c1bebe75bea939a9c5724dbf87898febd425f94f7e03ee687d3b”
- -o - 我们将保存二进制文件的文件名
这将本地保存一个名为 832fb4090879c1bebe75bea939a9c5724dbf87898febd425f94f7e03ee687d3b.raw 的文件。我们希望创建一个原始文件,我们不会修改该文件,以便我们始终有一个用于存档的原始样本。这将文件下载为 Zip 存档。解压缩存档的密码是 infected。这将创建一个名为 832fb4090879c1bebe75bea939a9c5724dbf87898febd425f94f7e03ee687d3b.elf 的本地文件。接下来,我们将为此文件使用一个较短的名称 truncated-87d3b.elf,以提高可读性。
解包
现在我们有了几个要处理的样本,我们可以看看提取字符串以进行进一步分析。在我们的分析虚拟机中,我们尝试在我们的样本上运行 Sysinternals Strings
$ strings truncated-87d3b.elf
ELF
*UPX!
ELF
$Bw
(GT
...
代码块 3 - 来自打包的 Mozi 样本的字符串输出
我们立即看到,我们从“ELF”和“UPX!”文本中获得了一个 UPX 打包的 ELF 二进制文件。UPX 是一个用于可执行文件的压缩工具,通常被称为“打包”。所以下一步合乎逻辑的是使用 UPX 程序解压缩 ELF 文件。为此,我们将使用 -d 开关运行 upx。
$ upx -d truncated-87d3b.elf
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2020
UPX 3.96w Markus Oberhumer, Laszlo Molnar & John Reiser Jan 23rd 2020
File size Ratio Format Name
-------------------- ------ ----------- -----------
upx.exe : upx: truncated-87d3b.elf : CantUnpackException: p_info corrupted
代码块 4 - 来自损坏的 Mozi 样本的 UPX 输出
另一个障碍:文件的 p_info 部分似乎已损坏。p_info 是文件中两个部分 p_blocksize 和 p_filesize 的总和。在快速搜索错误消息后,我们找到了一个 CUJOAI 反解包博客,其中解释了 IoT 恶意软件中常用的标头损坏,以破坏自动化分析工具。
使用此信息,我们使用 xxd(一个十六进制转储程序)打开了我们的二进制文件,以查看我们正在处理的损坏类型。如 CUJOAI 博客中所述,p_info 块表示 p_filesize 块和 p_blocksize 块的总和。此部分从 UPX! 文本后的 8 个字节开始,并已用零覆盖(从 0x84 开始的 8 个字节)。
$ xxd truncated-87d3b.elf
00000000: 7f45 4c46 0101 0161 0000 0000 0000 0000 .ELF...a........
00000010: 0200 2800 0100 0000 1057 0200 3400 0000 ..(......W..4...
00000020: 0000 0000 0202 0000 3400 2000 0200 2800 ........4. ...(.
00000030: 0000 0000 0100 0000 0000 0000 0080 0000 ................
00000040: 0080 0000 0de0 0100 0de0 0100 0500 0000 ................
00000050: 0080 0000 0100 0000 b07a 0000 b0fa 0600 .........z......
00000060: b0fa 0600 0000 0000 0000 0000 0600 0000 ................
00000070: 0080 0000 10f1 8f52 5550 5821 1c09 0d17 .......RUPX!....
00000080: 0000 0000 0000 0000 0000 0000 9400 0000 ................
00000090: 5e00 0000 0300 0000 f97f 454c 4601 7261 ^.........ELF.ra
000000a0: 000f 0200 28dd 0001 0790 b681 0334 ee07 ....(........4..
000000b0: ec28 04db 1302 0bfb 2000 031b be0a 0009 .(...... .......
...
代码块 5 - 损坏的 Mozi 样本的十六进制视图
CUJOAI 博客指出,如果使用 p_info 的值手动更新 p_filesize 块和 p_blocksize 块的值,这将解决损坏问题。下面我们可以看到 p_info 部分的十六进制格式,我们可以使用它来手动更新 p_filesize 和 p_blocksize 部分,这将使我们能够解包二进制文件(从 0x1e110 开始的 4 个字节)。
$ xxd truncated-87d3b.elf
...
0001e0c0: 1914 a614 c998 885d 39ec 4727 1eac 2805 .......]9.G'..(.
0001e0d0: e603 19f6 04d2 0127 52c9 9b60 00be 273e .......'R..`..'>
0001e0e0: c00f 5831 6000 0000 0000 90ff 0000 0000 ..X1`...........
0001e0f0: 5550 5821 0000 0000 5550 5821 0d17 0308 UPX!....UPX!....
0001e100: 5199 6237 591c 321c d001 0000 b800 0000 Q.b7Y.2.........
0001e110: 7c2a 0400 5000 0011 8000 0000 |*..P.......
代码块 6 - 来自损坏的 Mozi 样本的 p_info 十六进制数据
首先,让我们使用 Vim 打开文件。正如我们所看到的,它只是一个 UPX 文件,如 UPX! 所示。
$ vim truncated-87d3b.elf
^?ELF^A^A^Aa^@^@^@^@^@^@^@^@^B^@(^@^A^@^@^@^PW^B^@4^@^@^@^@^@^@^@^B^B^@^@4^@ ^@^B^@(^@^@^@^@^@^A^@^@^@^@^@^@^@^@<80>^@^@^@<80>^@^@^Mà^A^@^Mà^A^@^E^@^@^@^@<80>^@^@^A^@^@^@°z^@^@°ú^F^@°ú^F^@^@^@^@^@^@^@^@^@^F^@^@^@^@<80>^@^@^Pñ<8f>RUPX!^\
代码块 7 - Vim 中损坏的 Mozi 样本
使用 Vim 的 xxd 插件,我们可以将其转换为十六进制,以便进行修改。通过输入 :%!xxd 实现此操作,这将显示文件的十六进制输出。
00000000: 7f45 4c46 0101 0161 0000 0000 0000 0000 .ELF...a........
00000010: 0200 2800 0100 0000 1057 0200 3400 0000 ..(......W..4...
00000020: 0000 0000 0202 0000 3400 2000 0200 2800 ........4. ...(.
00000030: 0000 0000 0100 0000 0000 0000 0080 0000 ................
00000040: 0080 0000 0de0 0100 0de0 0100 0500 0000 ................
00000050: 0080 0000 0100 0000 b07a 0000 b0fa 0600 .........z......
00000060: b0fa 0600 0000 0000 0000 0000 0600 0000 ................
00000070: 0080 0000 10f1 8f52 5550 5821 1c09 0d17 .......RUPX!....
00000080: 0000 0000 0000 0000 0000 0000 9400 0000 ................
00000090: 5e00 0000 0300 0000 f97f 454c 4601 7261 ^.........ELF.ra
000000a0: 000f 0200 28dd 0001 0790 b681 0334 ee07 ....(........4..
000000b0: ec28 04db 1302 0bfb 2000 031b be0a 0009 .(...... .......
代码块 8 - 使用 XXD 插件在 Vim 中查看的损坏的 Mozi 样本
接下来,我们可以使用 p_info 的十六进制值 (7c2a 0400) 更新字节 0x84 - 0x8b (我们确定其 p_filesize 和 p_blocksize 为零)。
00000080: 0000 0000 7c2a 0400 7c2a 0400 9400 0000 ....|*..|*......
代码块 9 - 更新后的 p_filesize 和 p_blocksize 十六进制值
让我们使用 :%!xxd -r 重置文件,保存文件并退出 Vim (:wq)。
最后,既然我们已经手动调整了十六进制值,让我们尝试解压缩文件。
$ upx -d truncated-87d3b.elf
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2020
UPX 3.96 Markus Oberhumer, Laszlo Molnar & John Reiser Jan 23rd 2020
File size Ratio Format Name
-------------------- ------ ----------- -----------
273020 <- 123165 45.11% linux/arm truncated-87d3b.elf
Unpacked 1 file.
代码块 10 - 成功解压的 Mozi 样本
我们现在已经成功解压缩了文件。让我们使用 file 命令来查看现在的文件类型。
$ file truncated-87d3b.elf
truncated-87d3b.elf: ELF 32-bit LSB executable, ARM, version 1 (ARM), statically linked, stripped
代码块 11 - Mozi 样本的文件类型识别
现在,我们可以再次使用 strings 命令来查看是否有任何有用的信息可以使用(为了易读性而截断)。
$ strings truncated-87d3b.elf
...
iptables -I OUTPUT -p udp --source-port %d -j ACCEPT
iptables -I PREROUTING -t nat -p udp --destination-port %d -j ACCEPT
iptables -I POSTROUTING -t nat -p udp --source-port %d -j ACCEPT
iptables -I INPUT -p udp --dport %d -j ACCEPT
iptables -I OUTPUT -p udp --sport %d -j ACCEPT
iptables -I PREROUTING -t nat -p udp --dport %d -j ACCEPT
iptables -I POSTROUTING -t nat -p udp --sport %d -j ACCEPT
0.0.0.0
[idp]
This node doesn't accept announces
v2s
dht.transmissionbt.com:6881
router.bittorrent.com:6881
router.utorrent.com:6881
bttracker.debian.org:6881
nnn.nnn.nnn.nnn:6881
abc.abc.abc.abc:6881
xxx.xxx.xxx.xxx:6881
yyy.yyy.yyy.yyy:6881
NfZ
Oo~Mn
g5=
N]%
Range: bytes=
User-Agent:
...
代码块 12 - 来自解压后的 Mozi 样本的字符串输出
运行 strings,我们可以看到,除了其他内容外,还有网络指示器和对本地防火墙 iptables 的更改。此文件中有很多有用的信息,我们现在可以查看这些信息,用于搜索受感染的设备。
接下来,让我们丰富 ThreatFox 数据,将其存储在 Elasticsearch 中,并使用 Kibana 可视化它。
在 Elastic Stack 中存储威胁数据
看看我们目前收集到的内容,我们拥有 ThreatFox 提供的丰富的威胁数据,其中包括网络和文件信息。此外,我们还有从 Malware Bazaar 收集的实际恶意软件样本。最后,我们对恶意软件进行了静态文件分析,以识别可能使用的其他指示器。
在接下来的步骤中,我们将解析来自 ThreatFox 的数据,并将其存储在 Elastic Stack 中,以便我们可以利用 Kibana 来可视化数据,以识别活动集群。
创建 Ingest 节点管道
我们将创建一个 Ingest 节点管道,将来自 ThreatFox 的数据转换为丰富的 Elasticsearch 数据。在创建管道时,最好创建一个表格来列出我们要执行的操作。
ThreatFox 字段 | ECS 样式字段 |
id | event.id |
ioc | threat.indicator.ip 和 threat.indicator.port |
threat_type | threat.software.type |
threat_type_desc | threat.indicator.description |
ioc_type | threat.indicator.type。 将 threat.indicator.type 设置为 "ipv4-addr" |
malware | threat.software.name |
malware_printable | threat.threatfox.malware_printable |
malware_alias | threat.software.alias (如果非空) |
malware_malpedia | threat.software.reference |
confidence_level | threat.indicator.confidence |
first_seen | threat.indicator.first_seen |
last_seen | threat.indicator.last_seen |
reference | event.reference |
reporter | event.provider |
tags | tags |
<enrichment> | threat.indicator.geo。 由我们的 geoip 处理器丰富。 |
<parsed-sha256> | file.hash.sha256 和 related.hash |
<copy threat.indicator.ip> | related.ip |
表 1 - ThreatFox 数据的 Elasticsearch Ingest 节点管道
要创建管道,请转到 Kibana Stack Management -> Ingest Node Pipelines,然后单击 Create pipeline。
接下来,我们将为管道命名,可以选择添加版本和描述。
在此视图中,您可以手动添加处理器并根据自己的喜好进行配置。为了让您快速上手,我们在此提供了 ThreatFox 管道定义,您可以粘贴进去。
单击 Import processors 并粘贴此管道定义的内容:pipeline.json。
当您单击 Load and overwrite 时,您将看到每个处理器都按照我们配置的方式列出。在这里,您可以根据需要进行调整,或者只需向下滚动并单击 Create pipeline。
或者,如果您想使用统包方法,则 collection.sh 脚本将允许您收集 ThreatFox Mozi 数据,创建 Elasticsearch ingest 管道,指示器索引,索引模式,并将来自 ThreatFox 的数据直接发送到 Elasticsearch。
$ git clone https://github.com/elastic/examples
$ cd examples/blog/mozin-about
$ sh collection.sh
代码块 13 - 使用 Mozi 样本收集脚本
使用提供的收集脚本,我们可以看到 Threat Fox 数据被转换为 Elastic Common Schema (ECS) 并发送到 Elasticsearch 进行分析。
图 3 - Kibana 中的 ThreatFox 数据
分析
现在我们已经收集了样本,丰富了它们,并将它们存储在 Elasticsearch 中,我们可以使用 Kibana 可视化此数据,以识别活动集群,进行不同的观察,并为新研究设置不同的支点。
作为几个快速示例,我们可以识别一些使用的端口和数据集中包含的国家/地区。
让我们从识别高密度网络端口开始。在 Kibana 中创建一个 Lens 可视化,方法是单击 Visualization Library → Create visualization → Lens。我们可以创建一个简单的饼图来突出显示 6000 的 threat.indicator.port 占观察到的网络端口的 10% 以上。这可以引导我们探索使用 6000 端口的其他网络流量,以识别其他潜在的恶意活动。
值得注意的是,还观察到了端口 0 和 4000,这很有趣。端口 6000、4000 或 0 在整个 Internet 上都不常见,可用于识别其他受损主机。应该注意的是,虽然像 IP 和端口这样的瞬态网络指示器很有用,但不应将其用作识别恶意活动的唯一来源,而与正在调查的入侵集无关。
接下来,我们可以使用 Kibana Maps 可视化来识别活动的地理集群,并包括相关上下文,例如指示器置信度、提供者和类型。
与上面关于 IP 和端口的评论类似,地理观测不应是采取行动的唯一来源。这些只是观察到的样本的指示器,需要以组织为中心的分析来确定其含义,因为它与特定网络相关。
这是有用的信息,我们可以基于我们的抽样做出以下分析断言
- Mozi 僵尸网络目前处于活跃状态,并保持稳定的感染率
- 端口 6000 是用于命令和控制的主要端口
- 至少有 24 个国家/地区受到影响,这表明存在全球威胁,没有特定的目标
- 保加利亚和印度的特定 ASN 集群以最高的数量脱颖而出
随着分析过程开始流动,最终会为研究提供更多途径。分析人员可能追求的一个示例是通过使用 HTTP 指纹识别的传播机制。
探索传播机制
就像在数据库中跟踪和记录犯罪指纹一样,类似的技术可以应用于面向公众的网络基础设施。可以将 HTTP 请求发送到 Web 服务器,返回的 HTTP 响应可用于识别服务器上托管的可能 Web 应用程序;甚至 HTTP 响应中字段的顺序也可以用作标识符。
我们了解到的关于 Mozi 及其如何增强传播能力的一件事是,每个受损设备都会促进未来受害者的感染。受损设备会启动一个 HTTP 服务器,该服务器在随机 TCP 端口上托管 Mozi 有效负载。了解此信息后,我们可以从受感染的系统中收集内容,以使用 cURL 生成指纹。
curl -I nnn.nnn.nnn.nnn:53822
HTTP/1.1 200 OK
Server: nginx
Content-Length: 132876
Connection: close
Content-Type: application/zip
代码块 14 - 来自受损设备的 HTTP 响应
根据观察到的响应,我们可以提取一些有趣的信息,例如
- 使用 NGINX Web 服务器
- 未提供 HTTP 日期标头
- 返回的文件大小接近 133 KB
有了这少量数据,我们可以转向不同的搜索引擎,这些引擎存储来自世界各地此类设备的响应数据。通过利用 Shodan 等工具,我们可以使用 HTTP 响应中获得的信息执行搜索。我们将通配符 Content-Length,但对所有 HTTP 响应元素使用相同的顺序
HTTP/1.1 200 OK Server: nginx Content-Length: * Connection: close Content-Type: application/zip
代码块 15 - Mozi 传播的 HTTP 标头
我们可以看到许多在其他设备上捕获了相同响应的命中,并开始精确定位其他机器。以下是 Shodan 搜索中的一些示例
还可以使用其他搜索示例(例如响应中返回的恶意 Mozi 文件的实际字节)来搜索响应数据。
缓解
Mozi 僵尸网络通过滥用默认或弱远程访问密码、漏洞和过时的软件版本进行传播。为了防御设备免受攻击,我们建议
- 更改设备默认的远程访问密码
- 将设备更新到供应商支持的最新固件和软件版本
- 将 IoT 设备与内部网络的其余部分隔离
- 不要使 IoT 设备可以从公共 Internet 访问
检测逻辑
使用 YARA,我们可以为损坏的 UPX 标头编写签名。与查找特定类型 PowerShell 混淆的规则类似,混淆机制本身有时可能比尝试对底层活动进行签名更好地指示恶意性。非常重要的一点是,将标头部分的一部分清零是我们从样本中观察到的技术。对于其他样本,可以使用许多其他混淆和反分析技术。MITRE ATT&CK® 描述了 混淆的文件或信息 技术中 防御规避 策略的附加子技术。如上所述,分析的 Mozi 样本使用的观察到的反分析技术仅包含在 “UPX!” 魔术字节之后的 8 个字节和之前的 4 个字节始终为零,因此让我们使用从 Lars Wallenborn 的工作中获得的 YARA 签名(为了易读性而展开)。
rule Mozi_Obfuscation_Technique
{
meta:
author = "Elastic Security, Lars Wallenborn (@larsborn)"
description = "Detects obfuscation technique used by Mozi botnet."
strings:
$a = { 55 50 58 21
[4]
00 00 00 00
00 00 00 00
00 00 00 00 }
condition:
all of them
}
代码块 16 - 检测 Mozi 混淆的 YARA 签名
- 55 50 58 21 - 标识 UPX 魔术字节
- [4] - 偏移 4 个字节,l_lsize、l_version 和 l_format
- 00 00 00 00 - 标识程序头 ID
- 00 00 00 00 - 标识清零的 p_filesize
- 00 00 00 00 - 标识清零的 p_blocksize
- condition - 要求所有上述字符串都存在,才能匹配 YARA 签名
上述 YARA 签名可用于识别使用 UPX 打包且 header ID、p_filesize 和 p_blocksize 元素被清零的 ELF 文件。这对于识别混淆技术(除了 Mozi 样本)大有帮助。在我们的测试中,使用此 YARA 签名检测 Mozi 样本的效率为 94.6%。
摘要
据观察,Mozi 僵尸网络以易受攻击的物联网 (IoT) 设备为目标,发起看似非定向的攻击活动,这些活动可以利用僵尸网络提供的力量倍增效应。Mozi 至少自 2019 年 12 月以来一直在运行。
我们介绍了如何收集、提取和分析 Mozi 僵尸网络样本的技术。这些方法也可以用于增强和启用其他数据样本的分析过程。
其他资源
- 博客文章和脚本,Elastic:https://github.com/elastic/examples/tree/master/blog/mozin-about
- ThreatFox 威胁情报数据库,Abuse.ch:https://threatfox.abuse.ch/browse
- 物联网恶意软件中的 UPX 反解包技术,CUJOAI:https://cujo.com/upx-anti-unpacking-techniques-in-iot-malware
- 修复损坏的 UPX 打包 ELF 文件,vcodispot.com:https://vcodispot.com/corrupted-upx-packed-elf-repair
- 对等网络僵尸网络系列 MOZI 的 UPX 打包 ELF 二进制文件,Lars Wallenborn:https://blag.nullteilerfrei.de/2019/12/26/upx-packed-elf-binaries-of-the-peer-to-peer-botnet-family-mozi
- Mozi,另一个使用 DHT 的僵尸网络,360 Netlab:https://blog.netlab.360.com/mozi-another-botnet-using-dht
- Mozi 僵尸网络占据了大部分物联网流量,Tara Seals:https://threatpost.com/mozi-botnet-majority-iot-traffic/159337
- 新的 Mozi P2P 僵尸网络接管 Netgear、D-Link 和华为路由器,Sergiu Gatlan:https://www.bleepingcomputer.com/news/security/new-mozi-p2p-botnet-takes-over-netgear-d-link-huawei-routers
- Kibana 地图,Elastic:https://elastic.ac.cn/guide/en/kibana/current/maps.html
- Kibana Lens,Elastic:https://elastic.ac.cn/guide/en/kibana/current/lens.html