内网如何定位管理员

2015-06-06 10,721

内网渗透,不是简单的耍流氓的说"可内网渗透"或者“内网漫游”,有着更高更深的责任和需求,有着更多设备和报警及防护软件(如Bit9,惠普ARCsight,曼迪昂特等)的突破,有着更多网络拓扑和结构需要清晰洞察,有着更多的域控和域需要占领,当然了定位到内网管理员或者管理员上过的机器,应该会事半功倍。

本文原英文名称“I Hunt Sys Admins”,是Shmoocon ’15 Firetalks演讲的ppt。安全脉搏编辑翻译成《内网如何定位管理员

Hackers

现有的工具和谍报

系统内部自带的工具 psloggedon.exe已经被广泛使用好多年了。它通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器,同样也调用到了NetSessionEnum API。系统管理员和大黑客们都使用微软官方的这个工具好多年了。
需要注意的是:该工具的某些功能需要管理员权限
psloggedon

另一款老掉牙的工具,我们过去经常用到的,netsess.exe ,是joeware工具集里面的一款。
他的原理也是调用NetSessionEnum API,并且在远程主机上无需管理员权限。
netsess-1024x383

PVEFindADUser.exe @corelanc0d3r 在2009年放出来的一款牛逼的工具。Corelanc0d3r 有在这里描述过。它能帮助你枚举出域用户以及登陆过特定系统的用户。但是,这个需要管理员权限~。

pvefindaduser-1024x550

Rob Fuller (@mubix’的) netview.exe这款工具自从2012年被放出来后,我们经常用。

这款工具也是使用WinAPI进行枚举系统里面东东,譬如:它利用 NetSessionEnum 来找寻登陆sessions, 利用NetShareEnum来找寻共享 , 利用 NetWkstaUserEnum 来枚举登陆的用户。

它也能查询共享入口,高亮有价值用户,还能使用延迟和抖动。而且绝大部分功能不需要管理员权限。

netview-1024x563

 

Nmap灵活的脚本引擎也给了我们一些选择。如果你有有效的域账户或者本地账户,你可以使用smb-enum-sessions.nse 引擎来获取远程机器的登录session,并且不需要管理员权限。

nmap.sessions-1024x402

 

另外:如果你能进某个用户内部邮箱,也可以从邮件头提权有用的信息。找寻跟目标用户来往的邮件,仔细查看邮件头。“X-Originating-IP”头经常会出现,这就可以让你追踪到目标IP。

Scott Sutherland (@_nullbind) 2012年写了篇5种姿势查找域管进程。 技术点3和4,他详细讲述了如何使用tasklist和nbtscan的批处理来扫描机器及用户。

远程tasklist的时候,需要本地管理员权限。

然后Smbexec有个 checkda模块,它可以检测域管进程和域管登陆。Veil-Pillage有它的 user_huntergroup_hunter 模块,它使得你更灵活的穿梭内网。对了,这2个工具都需要管理员权限。

最后,我们来讲讲Powershell。

PowerShell PowerShell PowerShell

了解我的人都知道我常常讲Powershell,微软炙手可热的后开发语言

PowerShell有一些非常牛逼的获得目录AD钩子和各种各样的方法去到底层Windows API。@mattifestation 已经写过好多方法通过PowerShell 跟底层Windows API进行交互。

use-powershell-to-interact-with-the-windows-api-part-1, use-powershell-to-interact-with-windows-apis-part-2 , use-powershell-to-interact-with-the-windows-api-part-3

他写的这篇easily-defining-enums-structs-and-win32-functions-in-memory也值得大家看看。当然我之前也写了点东西,请看powershell-and-win32-api-access

PowerView 是一款 PowerShell 情境意识工具 ,我曾经使用过一段时间,里面有一些功能可以辅助找寻定位关键用户。

要找到目标对应的用户, Get-NetGroups *wildcard* 语法将会返回包含具体通配符术语的组。

而且 Get-UserProperties 将会提取所有用户的属性, Invoke-UserFieldSearch 则可以根据通配符来找寻特定用户的相关属性。

这将帮助你缩小目标搜索范围。举例来说,我们使用这些功能来找到Linux管理员组和其相关的成员,我们可以追捕和键盘记录他们的PuTTY/ SSH会话:)

Invoke-UserHunter 功能可以帮你找到域内特定用户群。它接受一个用户名,用户列表,或域组查询,并接受一个主机列表或查询可用的主机域名。

它会使用 Get-NetSessionsGet-NetLoggedon(调用NetSessionEnum和 NetWkstaUserEnum API) 对每个服务器跑一遍而且会比较结果筛选出目标用户集。

一切都是灵活的,让你自己定义找寻谁,在哪里找。当然了,这个工具是不需要管理员权限的。安全脉搏 分享技术 悦享品质

 

userhunter-1024x327

 

Invoke-StealthUserHunter 能帮你更捷径的获取最大的覆盖。

只要一个查询就可以获取域内所有用户, 从user.HomeDirectories提取所有用户, 并且会对每个服务器进行Get-NetSessions 获取

因为你无需使用 Invoke-UserHunter对每台机器操作,这个办法的隐蔽性就更高一点,但是涉及到的机器面不一定那么全。

我们一般默认使用Invoke-StealthUserHunter ,除非找不到我们所需,才回去使用Invoke-UserHunter方法

stealth.userhunter-1024x257

最近添加到 PowerView 的一个功能是Invoke-UserProcessHunter.

它利用新命名的 Get-NetProcesses cmdlet 来枚举远程机器的tasklists和进程,以便寻找目标用户。

你需要管理员权限,才能使用这个功能枚举。

process_hunter-1024x420

PowerView里面最后一个定位用户的功能是军用版的@sixdub的文章offensive-event-parsing-bringing-home-trophies里面提到的。

Get-UserLogonEvents cmdlet将查询登录事件(ID 4624)远程主机。

Invoke-UserEventHunter 查询特定用户在域控上面的登陆日志,已经包裹到一个方法里面去了。

当然,你需要域管理权限,毕竟要从一个域控上面读取这些日志事件嘛。

 

user_event_hunter-1024x318

当然了,如果还有其他好用的工具和途径,大家踊跃留言~

【英文:I Hunt Sys Admins 作者:harmj0y 翻译:安全脉搏SP小编 转载请注明来自安全脉搏 分享技术 悦享品质 】

Tags:

评论  (11)
快来写下你的想法吧!

SP小编

文章数:212 积分: 25

交流和分享以及愉快的玩耍

关注我们

合作伙伴