01阅读须知
此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。
02本地权限提升
本文内容部分节选自小报童《.NET 通过winlogon进程提升至SYSTEM权限》和 《.NET 通过指定的COM接口执行命令绕过UAC》,完整的文章内容请加入小报童后订阅查看。现在限时只需59元,永久买断!目前已有280+位朋友抢先预定,我们会长期更新,对.NET内网安全的朋友们请尽快订阅该报刊!
03Winlogon权限提升
在内网渗透环境中,获得 SYSTEM 权限是攻击链中的关键一环。通过分析 Windows 系统中对高权限进程的访问机制,我们利用 SYSTEM 账户运行的winlogo进程的访问令牌,可以伪装为操作系统内核,启动具有最高权限的进程。
3.1 识别当前进程的所有者
我们调用 WMI 的 GetOwner 方法反射获取进程所有者的用户名和所在的域,然后通过判断进程所有者的用户名是否包含了关键词 "NT",比如返回 "NT AUTHORITY\SYSTEM",包含了NT就表示该进程是系统用户创建的,因此也具备了SYSTEM权限。具体代码如下所示。
public static string GetProcessOwner(int processId)
{
string query = "Select * From Win32_Process Where ProcessID = " + processId.ToString();
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();
foreach (ManagementBaseObject managementBaseObject in processList)
{
ManagementObject obj = (ManagementObject)managementB