| 关键词: 用户 定位 机器 信息 管理员 domain ping 权限 Net 参考 |
0x01 前言 说起内网定位,无论针对内网查找资料还是针对特殊人物都是非常实用的一项技术。这里把目前能够利用的手段&工具都一一进行讲解。 0x02 服务器(机器)定位 收集域以及域内用户信息
常用收集域信息命令: Net use net view 看机器注释或许能得到当前活动状态的机器列表,tasklist可以得到当前机器跑着的域账号。 结构分析 从计算机名获取ipv4地址: 使用nbtstat命令可以实现:nbtstat -a DC1,ping命令也可以实现: C:Documents and SettingsAdministratorDesktop>ping -n 1 DC1 -4 如果计算机名很多的时候,可以利用bat批量ping获取ip: @echo off ![]() 最后可以把所有得到domain admins账号再net user 下,为这些信息按内容分别建立文件进行分析。 例如:
信息收集的姿势:
例如: ![]() 像这种人事组织结构图,很多公司和企业的外部站点上就有。然后结合分析人事资料里相关员工全称与域内用户名对应关系,就能很快定位到需要定位的人员使用的机器。
如果你能进某个用户内部邮箱,也可以从邮件头提取有用的信息。找寻跟目标用户来往的邮件,仔细查看邮件头。“X-Originating-IP”头经常会出现,这就可以让你追踪到目标IP。
常用工具:Dsquery/Dsget,Ldifde,Csvde,Adexplorer,Adfind,wmi,powershell… 工具使用参考:初级域渗透系列 – 01. 基本介绍&信息获取 注:控制扫描的频率和速度,可以大大降低触发IDS的风险,针对windows机器,可以考虑用wmi脚本和powershell脚本进行扫描,低频扫描可以很容易的绕过IDS的规则,同时可以考虑使用内网管理工具使用的相同协议进行扫描探测。Tips: 内网无工具扫描 http://rinige.com/index.php/archives/112/ 一条 cmd 命令解决: for /l %i in (1,1,255) do @ping 192.168.1.%i -w 1 -n 1 | find /i "ttl" ping 整个 c 段,只输出有响应的主机。 % H" g% Q+ _6 q- P7 t 更变态的: 4 o4 g8 X- v9 x& w 域机器对应 IP FOR /F "eol=- tokens=1 delims= " %a IN ('net view') DO @(echo name: %a, ip: & ping %a -w 1 -n 1 | 把 net view 的结果,挨个 ping 一遍,并输出机器名和 ip 地址。 找主机名 for /l %i in (1,1,255) do @ping -a 10.0.1.%i -w 1 -n 1 | find /i "Pinging" B 段查找 for /l %i in (1,1,255) do @ping -a 10.0.%i.1 -w 1 -n 1 | find /i "Pinging" Win7 for /l %i in (1,1,255) do @ping -a 10.0.1.%i -w 1 -n 1 | find /i "Pinging" 改成 for /l %i in (1,1,255) do @ping -a 10.0.1.%i -w 1 -n 1 | find /i "Ping" 就可以兼容 Win7 了。(Win7 ping -a 输出结果关键词为 “Ping”) 另外findstr /i “pinging” 或 findstr /i “ping” 可以换成 findstr “[” 的 可以适合多语言环境 0x03 文件定位 结合服务器定位总结出文件定位的大致思路:
![]() 文件定位需要注意的点:
经验
定位文件服务器请参考上一节定位服务器(机器),定位到文件服务器和某个人,对于文件定位来说应该会事半功倍。这里就不过多叙述了。 参考:后渗透攻防的信息收集 0x04 管理员定位 工具 psloggedon.exe 系统自带工具。通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器,同样也调用到了NetSessionEnum API。某些功能需要管理员权限 ![]() netsess.exe netsess.exe的原理也是调用NetSessionEnum API,并且在远程主机上无需管理员权限。 ![]() PVEFindADUser.exe 用于枚举域用户以及登陆过特定系统的用户,需要管理员权限。工具描述:corelan ![]() netview.exe 使用WinAPI枚举系统,利用 NetSessionEnum 来找寻登陆sessions, 利用NetShareEnum来找寻共享 , 利用 NetWkstaUserEnum 来枚举登陆的用户。它也能查询共享入口和有价值用户,还能使用延迟和抖动。绝大部分功能不需要管理员权限。 ![]() Nmap的Nse脚本 如果你有域账户或者本地账户,你可以使用Nmap的smb-enum-sessions.nse 脚本来获取远程机器的登录session,并且不需要管理员权限。 参考:
![]() Smbexec&Veil-Pillage 然后Smbexec有个 checkda模块,它可以检测域管进程和域管登陆。Veil-Pillage有它的 user_hunter 和group_hunter 模块,这两个工具都需要管理员权限。 hunter hunter是一款利用 Windows API 调用来枚举跳板机上的用户登录信息的工具,无需管理员权限 ![]() ![]() ![]() ![]() ![]() Active Directory 你可以通过AD信息来识别一些连接到服务器的用户 参考:
PowerShell 上面也曾提到针对windows机器,可以考虑用wmi脚本和powershell脚本进行扫描,低频扫描可以很容易的绕过IDS的规则。PowerShell有很多方法Windows Api并且绕过白名单。 参考:
PowerView PowerView 里面有一些功能可以辅助找寻定位关键用户。要找到目标对应的用户时Get-UserProperties 将会提取所有用户的属性,并且Invoke-UserFieldSearch可以根据通配符来找寻特定用户的相关属性。这可以缩小目标搜索范围。比如说:我们使用这些功能来找Linux管理员组和其相关的成员,就可以追踪和键盘记录他们的putty/ssh会话。 Invoke-UserHunter 功能可以找到域内特定用户群。它支持一个用户名,用户列表,或域组查询,并支持一个主机列表或查询可用的主机域名。它会使用 Get-NetSessions 和Get-NetLoggedon(调用NetSessionEnum和 NetWkstaUserEnum API) 对每个服务器跑一遍而且会比较结果筛选出目标用户集。而且这个工具不需要管理员权限。 命令参考: Get-NetGroups -> Get-NetGroup Invoke-StealthUserHunter 只要一个查询就可以获取域内所有用户, 从user.HomeDirectories提取所有用户, 并且会对每个服务器进行Get-NetSessions 获取。无需使用 Invoke-UserHunter对每台机器操作,这个办法的隐蔽性就更高一点,但是涉及到的机器面不一定那么全。 一般默认使用Invoke-StealthUserHunter ,除非找不到我们所需,才会去使用Invoke-UserHunter方法。 Invoke-UserProcessHunter是PowerView 的新功能。利用Get-NetProcesses cmdlet 来枚举远程机器的tasklists和进程寻找目标用户。这个枚举功能需要管理员权限。 ![]() Get-UserLogonEvents cmdlet可以查询查询登录事件(如:ID 4624)远程主机,Invoke-UserEventHunter 查询特定用户在域控上面的登陆日志,需要域管理权限。 参考:
本文出处: https://www.toutiao.com/a6680798084697424391/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|