介绍
在渗透测试中,一个典型的域权限提升过程,通常围绕着收集明文凭据或者通过mimikatz提权等方法,在获取了管理员权限的系统中寻找域管理员登录进程,精二收集域管理员的凭据。如果内网环境非常复杂,渗透测试人员无法立即在拥有权限的系统中获得域管理员进程,那么通常可以采用的方法是:在跳板机之间跳转,直至获得域管理员权限,同事进行一些分析工作,进而找到渗透测试的路径。
1 本机检查
1.1 获取域管理员列表
net group "Domain Admins" /domain

1.2 列出本机的所有进程及进程列表
tasklist /v

1.3 寻找进程所有者为域管理员的进程
通过以上方法,找到最好。实际情况并不简单。
2 查询域控制器的域用户会话
原理:在域域控制器中查询域用户会话列表,并将其与域管理员列表进行交叉引用,从而得到域管理会话系统的列表。
2.1 查询域控制器列表
可以使用LDAP查询从Domain Controllers单元中收集的域控制器列表。
也可以用net命令
net group "Domain Controllers" /domain

2.2 收集所有活动域的会话列表
使用netsess.exe
查询每个域控制器,收集所有活动域会话列表。
此工具包含windows
函数nessessionnenum
,此函数用于返回IP
地址、域账户、会话开始时间和空闲时间
netsess -h
2.3 交叉引用域管理员列表与会话列表
FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul >sessions.txt && FOR %a in (admins.txt) DO @type sessions.txt | @findstr /I %a
3 查询远程系统中运行的任务
如果目标机器在域系统中是通过共享的本地管理员账户运行的,就可以使用下列脚本来查询系统中的管理任务。
先收集域管理员列表
net group "Domain Admins" /domain
然后运行下列脚本,将目标域系统列表添加到ips.txt文件中,将收集的域管理员添加到names.txt文件中。
FOr /f %i (ips.txt) DO @echo [+] %i && $tasklist /V /S %i /U usr /P password 2>NUL >output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL echo [!] %n was found runing a process on %i && pause
扫描远程系统的NetBIOS信息
<h2><a id="_0"></a>介绍</h2>
<p>在渗透测试中,一个典型的域权限提升过程,通常围绕着收集明文凭据或者通过mimikatz提权等方法,在获取了管理员权限的系统中寻找域管理员登录进程,精二收集域管理员的凭据。如果内网环境非常复杂,渗透测试人员无法立即在拥有权限的系统中获得域管理员进程,那么通常可以采用的方法是:在跳板机之间跳转,直至获得域管理员权限,同事进行一些分析工作,进而找到渗透测试的路径。</p>
<h2><a id="1__4"></a>1 本机检查</h2>
<h3><a id="11__6"></a>1.1 获取域管理员列表</h3>
<pre><div class="hljs"><code class="lang-shell">net group "Domain Admins" /domain
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/d773fc3abae912ca88b2f9d9c8c0df6e.png" alt="获取域管理员列表" /></p>
<h3><a id="12__16"></a>1.2 列出本机的所有进程及进程列表</h3>
<pre><div class="hljs"><code class="lang-shell">tasklist /v
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/76f77bd3aee4b47ecdd40fa791a6dd7e.png" alt="列出本机的所有进程及进程列表" /></p>
<h3><a id="13__26"></a>1.3 寻找进程所有者为域管理员的进程</h3>
<p>通过以上方法,找到最好。实际情况并不简单。</p>
<h2><a id="2__32"></a>2 查询域控制器的域用户会话</h2>
<p>原理:在域域控制器中查询域用户会话列表,并将其与域管理员列表进行交叉引用,从而得到域管理会话系统的列表。</p>
<h3><a id="21__36"></a>2.1 查询域控制器列表</h3>
<p>可以使用LDAP查询从Domain Controllers单元中收集的域控制器列表。</p>
<p>也可以用net命令</p>
<pre><div class="hljs"><code class="lang-shell">net group "Domain Controllers" /domain
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/af2bcd46f4fb2f7b666bf5794ba3828c.png" alt="查询域控制列表" /></p>
<h3><a id="22__50"></a>2.2 收集所有活动域的会话列表</h3>
<p>使用<code>netsess.exe</code>查询每个域控制器,收集所有活动域会话列表。</p>
<p>此工具包含<code>windows</code>函数<code>nessessionnenum</code>,此函数用于返回<code>IP</code>地址、域账户、会话开始时间和空闲时间</p>
<pre><div class="hljs"><code class="lang-shell">netsess -h
</code></div></pre>
<h3><a id="23__62"></a>2.3 交叉引用域管理员列表与会话列表</h3>
<pre><div class="hljs"><code class="lang-shell">FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul >sessions.txt && FOR %a in (admins.txt) DO @type sessions.txt | @findstr /I %a
</code></div></pre>
<h2><a id="3__70"></a>3 查询远程系统中运行的任务</h2>
<p>如果目标机器在域系统中是通过共享的本地管理员账户运行的,就可以使用下列脚本来查询系统中的管理任务。</p>
<p>先收集域管理员列表</p>
<pre><div class="hljs"><code class="lang-shell">net group "Domain Admins" /domain
</code></div></pre>
<p>然后运行下列脚本,将目标域系统列表添加到ips.txt文件中,将收集的域管理员添加到names.txt文件中。</p>
<pre><div class="hljs"><code class="lang-shell">FOr /f %i (ips.txt) DO @echo [+] %i && $tasklist /V /S %i /U usr /P password 2>NUL >output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL echo [!] %n was found runing a process on %i && pause
</code></div></pre>
<p>扫描远程系统的NetBIOS信息</p>
留言