Clamav 检测木马

Clamav 检测木马

我刚刚扫描了我的系统并clamav检测到一些可疑文件:

File: .cahe/mozilla/firefox/jqxk4r44.default/cache2/entries/750B6E2F1286....
Status: PUA.Win.Exploit.CVE_2012_1461-1

File: .cahe/mozilla/firefox/jqxk4r44.default/cache2/entries/F099C33HJ45J....
Status: PUA.Win.Exploit.CVE_2012_1461-1

File: .config/libreoffice/4/user/basic/Standard/Module1.xba
Status: PUA.Doc.Tool.LibreOfficeMacro-2

File: Downloads/nodejs/node-v8.9.4-linux-x64/lib/node_modules/imurmurhash/imurmurhash.min.js
Status: PUA.Win.Trojan.Xored-1

这些文件是真实威胁/木马的可能性有多大?

答案1

漏洞利用.CVE_2012_1461-1

  • PUA 的意思是“潜在的有害应用程序”。PUA 不是病毒,而是 clamav 声称存在他们认为“有害”的应用程序,因为该文件或扩展名已被证明在 Windows 中被滥用
  • Win 作为第二部分意味着它是与 Windows 相关的通知。
  • clamav 有一个不扫描 PUA 的选项。

我的结论是:没什么可担心的。

那就剩下...

PUA.Doc.Tool.LibreOfficeMacro-2

.config/libreoffice/4/user/basic/Standard/Module1.xba有一个扩展 clamav 绊倒了。他们认为xba,Visual Basic 宏被认为是“不需要的”。请参阅Clamtk 报告这些 LibreOffice 文件可能存在威胁。它们安全吗?以获得更完整的列表、答案和评论。

ClamAV 是出了名的有缺陷的软件:基于 Windows 的扫描和警告,然后将它们应用到 Linux 上,这是行不通的,也永远不会起作用。

当你看到这样的通知,并且你真的相信 clamav 是可以使用的工具时,下一步就是检查第二个来源:例如将文件上传到类似病毒总数或者将第二个病毒扫描软件与 clamav 一起使用(当两者都声称存在相同的问题时,您可以进行调查,否则将它们视为误报)。

但我会完全放弃 clamav,并遵循基于 Linux 的方法:使用德布苏姆(链接至手册页)检查(链接到操作方法)。

当您真的很偏执时(熊猫就在这里看着您)请使用以上所有方法;)

答案2

我不会轻易忽视这个警告,它说的是 PUA

Module1.xba:发现 PUA.Doc.Tool.LibreOfficeMacro-2
dotjoshjohnson.xml-2.5.1:发现 PUA.Win.Trojan.Xored-1
ms-azuretools.vscode-docker-1.8.1:发现 PUA.Win.Trojan.Xored-1
file-downloader-PUA.Win.Adware.Qjwmonkey-6892535-0 已发现
BouncyCastle.Crypto.dll:PUA.Win.Adware.Qjwmonkey-6892535-0已发现
BouncyCastle.Crypto.dll:PUA.Win.Adware.Qjwmonkey-6892535-0 已发现
jquery-ui.min.js:发现 PUA.Win.Trojan.Generic-6888382-0

因此,恕我直言,您可以忽略 LibreOffice 宏,因为它将其检测为自由办公宏,尽管我可能会删除它们,但我必须对其进行测试,看看它是否是我使用的。文件下载器和广告软件只是垃圾软件,但存在潜在风险。其他软件让我担心,因为它们被检测为木马。现在我有些担心的原因是:

:# ifconfig |grep inet
inet 10.0.0.58 网络掩码 255.0.0.0 广播 10.255.255.255
inet6 xxx 前缀长度 64 范围 ID 0x20
inet 127.0.0.1 网络掩码 255.0.0.0
inet6 ::1 前缀长度 128 范围 ID 0x10

现在我有了 suricata 作为 IDS,并且正在查看 fast.log

2020/11/12-11:42:30.052835 [] [1:2025331:3] ET POLICY 在 SNI 中观察到可能的外部 IP 查找域(ipinfo.io)[] [分类:检测到网络木马] [优先级:1] {TCP} 10.0.0.58:56692 -> 216.239.36.21:443

对 216.239.36.21 进行 whois 查询显示它是 Google 服务器,但我们不知道它是 Google 服务还是云服务的客户,或者是被入侵的服务器。访问该网站后,它似乎位于内容服务器上,因为它出现 404 错误,尝试使用 HTTPS 显示它无法提供安全连接。深入研究后,该文件似乎不是由软件包提供的。

dpkg -S /usr/share/javascript/jquery-ui/jquery-ui.min.js
libjs-jquery-ui: /usr/share/javascript/jquery-ui/jquery-ui.min.js

此时这是一个边界情况,因为有一个包提供了它,查看包显示它是从 Ubuntu 档案库中安装的

apt-cache 策略 libjs-jquery-ui libjs-jquery-ui:已安装:1.12.1+dfsg-5 候选版本:1.12.1+dfsg-5 版本表:*** 1.12.1+dfsg-5 500 500http://us.archive.ubuntu.com/ubuntufocal/universe amd64 软件包 500http://us.archive.ubuntu.com/ubuntufocal/universe i386 软件包 100 /var/lib/dpkg/status

现在我可以卸载该软件包并重新安装,然后再次扫描,看看它是否来自存储库。如果它来自存储库,那么我更倾向于误报。否则,如果它不是来自存储库,我更倾向于潜在威胁。

深入研究这个问题是如何进入系统的,首先我查看了我的防火墙

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
KUBE-SERVICES  all  --  anywhere             anywhere             ctstate NEW /* kubernetes service portals */
KUBE-FIREWALL  all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp dpt:443
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     udp  --  anywhere             anywhere             udp dpt:80
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:8080
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http-alt
ACCEPT     udp  --  anywhere             anywhere             udp dpt:8443
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8443
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:67
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:whois
ACCEPT     udp  --  anywhere             anywhere             udp dpt:43
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere  

Chain INPUT (policy DROP)
target     prot opt source               destination         
KUBE-SERVICES  all  --  anywhere             anywhere             ctstate NEW /* kubernetes service portals */
KUBE-EXTERNAL-SERVICES  all  --  anywhere             anywhere             ctstate NEW /* kubernetes externally-visible service portals */
KUBE-FIREWALL  all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere         

经 Kali 扫描验证,显示所有端口均已过滤,因此我知道威胁不可能从任何来源进入我的系统,只能从允许访问我的系统的程序之一进入。现在 Chrome 和 Firefox 在用户空间中运行,因此它们不应访问该文件位置。这只剩下可以访问 HTTPS 端口的 apt。总而言之,我的第一个任务是将文件移动到另一个位置进行存储,通常是复制一份以记录它,然后卸载/重新安装该软件包并查看它是否再次被触发。

在这里,我将记录与 IP 地址关联的整个过程以及我做出这些决定的原因。这将是记录受感染系统的标准程序。在 SOC 中,此时您可能希望对整个磁盘进行映像处理,因为我对我的其他安全措施相当有信心,所以我将继续监控系统,以发现进一步受感染的迹象。

现在我遇到了系统错误弹出的问题,因此我开始倾向于在仔细备份后擦除整个系统并从头开始重新加载,这意味着 Windows 和 Linux 方面。

现在,如果我有一个活跃的 SIEM,我可能会将各种安全日志警告与基线关联起来,IE 按基线的共性排序,并将 IDS 日志中的此类安全事件与服务器日志关联起来。如果我得到报酬来调查它,我会走得更远,但这是我的工作站,我可以不使用一两个功能,只是不必深入挖掘。

因此,我继续上面的陈述

apt remove libjs-jquery-ui

然后

clamscan -r --bell --infected --detect-pua=yes --scan-elf=yes --scan-mail=yes --algorithmic-detection=yes --scan-pe=yes --scan-ole2=yes --scan-pdf=yes --scan-html=yes --scan-archive=yes --max-filesize=20000000 --max-scansize=20000000 /usr/share/javascript/

----------- SCAN SUMMARY -----------
Known viruses: 8964095
Engine version: 0.102.4
Scanned directories: 1619
Scanned files: 2733
Infected files: 0
Data scanned: 140.98 MB
Data read: 38.02 MB (ratio 3.71:1)
Time: 53.914 sec (0 m 53 s)

然后

rm -rf /directoriesToOtherFilesListedAsTrojan/

这两个目录包含其他 JS 文件,因此我将重新运行整个扫描,看看扫描期间的警报是否停止。它们是插件,所以我只是删除了整个目录,但如果它们位于系统位置,我可能会像删除 jquery 一样删除它们。

现在是时候再次安装并重新扫描了:

apt install  libjs-jquery-ui
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gir1.2-ges-1.0 libges-1.0-0 python-matplotlib-data python3-cycler python3-kiwisolver
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  libjs-jquery-ui-docs
The following NEW packages will be installed:
  libjs-jquery-ui
0 upgraded, 1 newly installed, 0 to remove and 17 not upgraded


clamscan -r --bell --infected --detect-pua=yes --scan-elf=yes --scan-mail=yes --algorithmic-detection=yes --scan-pe=yes --scan-ole2=yes --scan-pdf=yes --scan-html=yes --scan-archive=yes --max-filesize=20000000 --max-scansize=20000000 /usr/share/javascript/
/usr/share/javascript/jquery-ui/jquery-ui.min.js: PUA.Win.Trojan.Generic-6888382-0 FOUND

----------- SCAN SUMMARY -----------
Known viruses: 8964095
Engine version: 0.102.4
Scanned directories: 1628
Scanned files: 3050
Infected files: 1
Data scanned: 146.57 MB
Data read: 39.68 MB (ratio 3.69:1)
Time: 55.278 sec (0 m 55 s)

所以这清楚地表明这里列出的库来自 ubuntu 存储库,现在我可以获得一个静态代码分析工具,我将使用 linter 来查看是否有任何非常明显的结果:

eslint usr/share/javascript/jquery-ui/jquery-ui.min.js|grep -v "缺少分号"

/usr/share/javascript/jquery-ui/jquery-ui.min.js
   1:47     error  'define' is not defined                                          no-undef
   1:58     error  'define' is not defined                                          no-undef
   1:93     error  'jQuery' is not defined                                          no-undef
   1:4240   error  Empty block statement                                            no-empty
   1:16358  error  Unnecessary escape character: \+                                 no-useless-escape
   1:16360  error  Unnecessary escape character: \-                                 no-useless-escape
   1:25753  error  'undefined' is defined but never used                            no-unused-vars
   1:26638  error  Unnecessary escape character: \-                                 no-useless-escape
   1:26888  error  Unnecessary escape character: \%                                 no-useless-escape
   1:26912  error  Unnecessary escape character: \%                                 no-useless-escape
   1:26936  error  Unnecessary escape character: \%                                 no-useless-escape
   1:27495  error  Unnecessary escape character: \%                                 no-useless-escape
   1:27519  error  Unnecessary escape character: \%                                 no-useless-escape
   2:1      error  Expected indentation of 1 tab but found 0                        indent
   2:1864   error  Empty block statement                                            no-empty
   2:2023   error  Empty block statement                                            no-empty
   3:1      error  Expected indentation of 1 tab but found 0                        indent
   3:36     error  Unnecessary escape character: \/                                 no-useless-escape
   3:22586  error  Unnecessary escape character: \-                                 no-useless-escape
   3:22588  error  Unnecessary escape character: \[                                 no-useless-escape
   3:22603  error  Unnecessary escape character: \^                                 no-useless-escape
   3:31806  error  Unnecessary escape character: \-                                 no-useless-escape
   3:31808  error  Unnecessary escape character: \[                                 no-useless-escape
   3:31823  error  Unnecessary escape character: \^                                 no-useless-escape
   4:1      error  Expected indentation of 1 tab but found 0                        indent
   4:16597  error  Unnecessary escape character: \-                                 no-useless-escape
   4:27742  error  Empty block statement                                            no-empty
   5:11073  error  Empty block statement                                            no-empty
   5:11243  error  Unnecessary escape character: \-                                 no-useless-escape
   5:22972  error  Unnecessary escape character: \-                                 no-useless-escape
   5:23036  error  Unnecessary escape character: \-                                 no-useless-escape
   5:25812  error  Unnecessary escape character: \-                                 no-useless-escape
   5:25866  error  Unnecessary escape character: \-                                 no-useless-escape
   6:1      error  Expected indentation of 1 tab but found 0                        indent
   7:1      error  Expected indentation of 1 tab but found 0                        indent
   9:7372   error  Unnecessary escape character: \-                                 no-useless-escape
  10:1      error  Expected indentation of 1 tab but found 0                        indent
  10:996    error  'Globalize' is not defined                                       no-undef
  10:1171   error  'Globalize' is not defined                                       no-undef
  10:3398   error  Empty block statement                                            no-empty
  10:3460   error  Empty block statement                                            no-empty
  10:7130   error  Unnecessary escape character: \/                                 no-useless-escape
  10:7139   error  Unnecessary escape character: \[                                 no-useless-escape
  10:7143   error  Unnecessary escape character: \^                                 no-useless-escape
  10:10481  error  Expected a conditional expression and instead saw an assignment  no-cond-assign
  10:20588  error  Expected a conditional expression and instead saw an assignment  no-cond-assign

✖ 1167 problems (1167 errors, 0 warnings)
  1127 errors, 0 warnings potentially fixable with the `--fix` option.

我会运行修复选项,看看是否有帮助,但这并不能修复检测问题。

这表明

cat usr/share/javascript/jquery-ui/jquery-ui.min.js |tail -n1 -c100
tooltipClass&&tooltipData.tooltip.addClass(this.options.tooltipClass),tooltipData}});$.ui.tooltip});root@master-node

这里的问题是,整个 js 文件的所有格式都被删除了,以试图混淆代码,仅凭这一点就应该删除该文件而不使用它。我将在这里给予 Ubuntu 团队信任,并假设这是一个误报,因为 linter 显示了常见且优先级较低的问题。一个例子是 - 转义,这非常常见,因为它在正则表达式中用于表示范围,例如 [a-zA-Z],据我所知,它是正则表达式语句中的特殊字符,人们经常对其进行转义以确保万无一失。

答案3

一旦文件被标记为 PUA,只需将该文件上传到virustotal.com 即可更好地了解可能发生的情况。Virustotal 将针对大量引擎进行扫描,因此如果文件有问题,它很可能会清楚地显示出来。

相关内容