现有的工具和谍报 系统内部自带的工具 psloggedon.exe已经被广泛使用好多年了。它通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器,同样也调用到了NetSessionEnumAPI。系统管理员和大黑客们都使用微软官方的这个工具好多年了。
需要注意的是:该工具的某些功能需要管理员权限
[/url]
另一款老掉牙的工具,我们过去经常用到的,netsess.exe ,是[url=http://www.joeware.net/freetools/]joeware工具集里面的一款。
他的原理也是调用NetSessionEnum API,并且在远程主机上无需管理员权限。
[/url]
PVEFindADUser.exe [url=https://twitter.com/corelanc0d3r]@corelanc0d3r在2009年放出来的一款牛逼的工具。Corelanc0d3r 有在这里描述过。它能帮助你枚举出域用户以及登陆过特定系统的用户。但是,这个需要管理员权限~。 [/url] Rob Fuller ([url=https://twitter.com/mubix]@mubix’的) netview.exe这款工具自从2012年被放出来后,我们经常用。
这款工具也是使用WinAPI进行枚举系统里面东东,譬如:它利用 NetSessionEnum 来找寻登陆sessions, 利用NetShareEnum来找寻共享 , 利用 NetWkstaUserEnum 来枚举登陆的用户。
它也能查询共享入口,高亮有价值用户,还能使用延迟和抖动。而且绝大部分功能不需要管理员权限。 [/url] Nmap灵活的脚本引擎也给了我们一些选择。如果你有有效的域账户或者本地账户,你可以使用[url=http://nmap.org/nsedoc/scripts/smb-enum-sessions.html]smb-enum-sessions.nse 引擎来获取远程机器的登录session,并且不需要管理员权限。 [/url]
另外:如果你能进某个用户内部邮箱,也可以从邮件头提权有用的信息。找寻跟目标用户来往的邮件,仔细查看邮件头。“[url=http://en.wikipedia.org/wiki/X-Originating-IP]X-Originating-IP”头经常会出现,这就可以让你追踪到目标IP。
Scott Sutherland (@_nullbind) 2012年写了篇5种姿势查找域管进程。 技术点3和4,他详细讲述了如何使用tasklist和nbtscan的批处理来扫描机器及用户。
远程tasklist的时候,需要本地管理员权限。
然后Smbexec有个 checkda模块,它可以检测域管进程和域管登陆。Veil-Pillage有它的 user_hunter 和group_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-NetSessions 和Get-NetLoggedon(调用NetSessionEnum和 NetWkstaUserEnum API) 对每个服务器跑一遍而且会比较结果筛选出目标用户集。
一切都是灵活的,让你自己定义找寻谁,在哪里找。当然了,这个工具是不需要管理员权限的。
[/url]
Invoke-StealthUserHunter 能帮你更捷径的获取最大的覆盖。 只要一个查询就可以获取域内所有用户, 从user.HomeDirectories提取所有用户, 并且会对每个服务器进行Get-NetSessions 获取。 因为你无需使用 Invoke-UserHunter对每台机器操作,这个办法的隐蔽性就更高一点,但是涉及到的机器面不一定那么全。 我们一般默认使用Invoke-StealthUserHunter ,除非找不到我们所需,才回去使用Invoke-UserHunter方法。 最近添加到 PowerView 的一个功能是Invoke-UserProcessHunter. 它利用新命名的 Get-NetProcesses cmdlet 来枚举远程机器的tasklists和进程,以便寻找目标用户。 你需要管理员权限,才能使用这个功能枚举。 [url=http://www.secpulse.com/wp-content/uploads/2015/06/process_hunter-1024x420.png] PowerView里面最后一个定位用户的功能是军用版的@sixdub的文章offensive-event-parsing-bringing-home-trophies里面提到的。 Get-UserLogonEvents cmdlet将查询登录事件(ID 4624)远程主机。 Invoke-UserEventHunter 查询特定用户在域控上面的登陆日志,已经包裹到一个方法里面去了。 当然,你需要域管理权限,毕竟要从一个域控上面读取这些日志事件嘛。
当然了,如果还有其他好用的工具和途径,大家踊跃留言~ 【英文:I Hunt Sys Admins 作者:harmj0y 翻译:安全脉搏SP小编 转载请注明来自安全脉搏 分享技术 悦享品质 】
|