> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s/wxePI-HVjMBXVdSKgqTxpg)
https://www.secshi.com
学安全,上 secshi。安全师,可信赖的网络安全学习平台,以让每个白帽子高效获得可信赖的优质内容为使命。安全师汇聚网络安全技术、黑客技术、web 安全攻防、代码审计、渗透测试、漏洞挖掘、白帽子教程, 沉淀知识, 分享经验!吸引、聚集了 IT 界中大量的领域专家,将高质量的内容透过人的节点来成规模地生产和分享。用户通过分享等交流方式建立信任和连接,打造和提升个人影响力,并发现、获得新机会。
进入到内网后,首先要对自己当前所处的网络环境有一个清楚地判断,收集到有关当前环境足够多的信息,为接下来的渗透做好准备
PS:文中提到的 PowerSploit
本机信息
----
包括操作系统,当前用户权限,内网 ip 段,杀毒软件,端口开放情况,系统打的补丁,网络状况,共享文件夹等,如果是域内的主机的话,操作系统、补丁、运行的服务、杀软等一般是域管批量用脚本安装的。
### 本机网络配置
* `ipconfig /all`:

### 操作系统
* 查询操作系统及版本信息,补丁信息等等:`systeminfo`

* 查询系统体系架构:`echo %PROCESSOR_ARCHITECTURE%`

* 查询已安装的软件及版本信息:`wmic product get name,version`

PS:在 win10 中,输入`wmic /?`会提示 wmic 已弃用,但在 server2012R2,win7 等版本中可以正常使用
* powershell 中可替代该命令的是`Get-WmiObject`:
`Get-WmiObject -class win32_product | Select-Object -property name,version`

* 查询本机服务:`wmic service list brief`

* 查询进程:`tasklist`,或者:`wmic process list brief`


常见的杀软进程:
进程名 | 软件 |
---|
360sd.exe | 360 杀毒 |
360tray.exe | 360 实时保护 |
ZhuDongFangYu.exe | 360 主动防御 |
KSafeTray.exe | 金山卫士 |
SafeDogUpdateCenter.exe | 安全狗 |
McAfee McShield.exe | McAfee |
egui.exe | NOD32 |
AVP.exe | 卡巴斯基 |
avguard.exe | 小红伞 |
bdagent.exe | BitDefender |
* 查看已启动的程序信息:`wmic startup get command,caption`

* 查看计划任务:`schtasks /query /fo LIST /v`
此处在我的靶机 Server2008R2 中出现了错误:无法加载列资源,这里把编码暂时设置为英文:`chcp 437`,之后再改回来:`chcp 936`即可

* 查看主机的开机时间:`net statistics workstation`

* 查看用户列表:`net user`

* 查看本地管理员信息:`net localgroup administrators`

* 查看当前在线的用户:`query user || qwinsta`

* 查看本地计算机与所连接客户端之间的会话:`net session`
对于该指令,一开始我的机器上报错:"发生系统错误 5。拒绝访问",找了一下解决办法,只要以管理员身份运行即可,此处靶机没有回话,所以显示为空

* 查看端口:`netstat -ano`

* 查看补丁信息:
`systeminfo`,
`wmic qfe get caption,description,hotfixid,installedon`

* 查看本机共享列表:`net share`,`wmic share get name,path,status`


* 查询路由表及所有可用的 ARP 缓存表:`route print`,`arp -a`


* 查看防火墙相关:
* winserver 2003 之前:`netsh firewall set opmode disable`
* winserver 2003 之后:`netsh advfirewall set allprofiles state off`
一般来说不要操作防火墙的开关,风险极大,只需要查看配置即可
* 查看防火墙配置:`netsh firewall show config`


* 关闭防火墙:
* 查看代理:
`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"`

* 查询远程连接服务:
`reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber`

连接端口为 16 进制数 0xd3d,转换为 10 进制就是 3389
### 使用 empire 收集信息
在攻击机上安装 empire 后,使用`usemodule powershell/situational_awareness/host/winenum`即可收集相关信息,注意使用该模块需要拿到管理员权限
权限
--
* 查看当前权限:`whoami`

* 获取域 id:`whoami /all`

* 获取指定用户的详细信息:`net user xxx /domain`

## 判断是否存在域
* 使用`ipconfig /all`即可做出判断

* 此时发现域名后,利用 nslookup 命令直接解析域名的 ip,借此来判断 dns 服务器与域控是否在同一主机上`nslookup 域名`

* 查询当前的登录域与用户信息:`net config workstation`

* 判断主域:`net time /domain`

若是此命令在显示域处显示 WORKGROUP,则不存在域,若是报错:发生系统错误 5,则存在域,但该用户不是域用户
## 探测域内存活主机
* 利用 ICMP 进行探测:`for /L %I in (1,1,254) DO @ping -2 1 -n 1 192.168.52.%I | findstr "TTL="`

我在本地机器中做了小小的修改,让它只扫描 141 到 142 这段
* 利用 empire 中的 arpscan 模块:`usemodule situational_awareness/network/arpscan`,设置 Range(范围) 后即可扫描
扫描端口
----
* 使用 telnet 进行扫描:`telnet 主机名 22`
* 使用 metasploit 进行扫描:`需要用到的是auxiliar/scanner/portscan/ack、ftpbounce、syn、tcp、xmas`等模块
* PowerSploit 中的 Invoke-Portscan.ps1 脚本,位于 Recon 目录下
* 使用 Nishang 的 PortScan 模块,位于 scan 目录下,上传到主机上执行
#### 获取 Banner
扫描到端口后就要获取到其 Banner 信息,接着就可以在漏洞库里查找 poc,这个可以找一下常见的端口的服务来得知
端口号 | 端口说明 | 攻击技巧 |
---|
21/22/69 | ftp/tftp:文件传输协议 | 允许匿名上传、下载、爆破、嗅探、溢出和后门 |
22 | ssh:远程连接 | 爆破 OpenSSH;28 个退格 |
23 | telnet:远程连接 | 爆破 \ 嗅探、弱口令 |
25 | smtp:邮件服务 | 邮件伪造 |
53 | DNS:域名系统 | DNS 区域传输 \ DNS 劫持 \ DNS 缓存投毒 \ DNS 欺骗 \ 利用 DNS 隧道技术刺透防火墙 |
67/68 | dhcp | 劫持 \ 欺骗 |
80/443/8080 | 常见 web 服务端口 | web 攻击、爆破、对应服务器版本漏洞 |
110 | pop3 | 爆破、嗅探 |
139 | samba | 爆破 \ 未授权访问 \ 远程代码执行 |
143 | imap | 爆破 |
161 | snmp | 爆破 |
389 | ldap 目录访问协议 | 注入攻击 \ 未授权访问,弱口令 |
512/513/514 | linux rexec | 直接使用 rlogin \ 爆破 |
873 | rsync | 未授权访问 \ 文件上传 |
1080 | socket | 爆破:进行内网渗透 |
1352 | lotus Domino 邮件服务 | 爆破:弱口令 \ 信息泄漏:源代码 |
1433 | mssql | 爆破:使用系统用户登录 \ 注入攻击 \ SA 弱口令 |
1521 | oracle | 爆破:TNS \ 注入攻击 \ 反弹 shell |
2049 | nfs | 配置不当 |
2181 | zookeeper | 未授权访问 |
3306 | mysql | 爆破 \ 拒绝服务 \ 注入 \ 提权 |
3389 | rdp | 爆破 \ Shift 后门 |
3690 | SVN 服务 | SVN 泄露 \ 未授权访问 |
4848 | glassfish | 爆破:控制台弱口令 \ 认证绕过 |
5000 | sybase/DB2 | 爆破 \ 注入 |
5432 | postgresql | 缓冲区溢出 \ 注入攻击 \ 爆破:弱口令 |
5632 | pcanywhere | 拒绝服务 \ 代码执行,抓取密码 |
5900 | vnc | 爆破:弱口令 \ 认证绕过 |
6379 | redis | 未授权访问 \ 爆破:弱口令 |
7001/7002 | weblogic | Java 反序列化 \ 控制台弱口令 \ 控制台部署 webshell |
8069 | zabbix | 远程命令执行 \ SQL 注入 |
8080/8089 | JBoss/Resin/Jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | websphere 控制台 | 爆破:控制台弱口令 \ Java 反序列 |
9200/9300 | elasticsearch | 远程代码执行 |
10000 | webmin 控制面板 | 弱口令 |
11211 | memcacache | 未授权访问 |
27017/27018 | mongodb | 爆破 \ 未授权访问 |
50000 | SAP Management Console | 远程执行 |
获取域内的基础信息
---------
* 查询域:`net view /domain`

* 查询域内所有计算机:`net view /domain:域名`

* 查询域内所有用户组:`net group /domain`

* 查看所有域成员计算机列表:`net group "domain computers" /domain`

* 获取域密码信息:`net accounts /domain`

* 获取域信任信息:`nltest /domain_trusts`

## 寻找域控
* 查看域控机器名:`nltest /DCLIST:域名`

* 查看域控主机名:`nslookup -type=SRV \_ladp._tcp`
* 查看域控制器组:`net group "Domain Controllers" /domain`,`netdom query pdc`


在大型企业中,域控制器组中的用户会不止一个,这是为了保证主域控故障时可以切换到备用域控制器
## 获取域内用户和管理员信息
* 查询所有域用户列表:`net user /domain`

* 获取域内用户的详细信息:`wmic useraccount get /all`,可以获取到用户名,描述信息,SID 域名等

* 查看存在的用户:`dsquery user`

* 查询本地管理员组用户:`net localgroup administrators`

* 查询域管理员用户组:`net group "domain admins" /domain`

* 查询管理员用户组:`net group "Enterprise Admins" /domain`

## 定位域管理员
常规渠道有二个,日志与会话,日志是本地机器的管理员日志,可以用脚本或者内置应用 wevtutil 导出来看
### 工具
psloggedon.exe,netview.exe,PVEFindADUser.exe,powersploit 的 PowerView 脚本,Empire 的 user_hunter 模块等
查找域管理进程
-------
### 本机检查
* `net group "Domain Admins" /domain`
* 列出本机的所有进程及进程用户:`tasklist /v`

在以上进程中尽量查找域管理员进程或是与其相关的进程
### 查询域控的域用户会话
* 查询域控制器列表:`net group "Domain Controllers" /domain`
* 收集域管理员列表:`net group "Domain admins" /domain`
* 收集所有活动域的会话列表:`NetSess -h`,使用的是 NetSess.exe

目前还没有任何会话,所以显示无
## 利用 powershell 收集域信息
首先要将 powershell 的权限限制更改为 **RemoteSigned**,这样就可以执行本地上的脚本
输入:`Get-ExecutionPolicy`,发现自己并不是 RemoteSigned 权限,输入:`Set-ExecutionPolicy RemoteSigned`,按 Y 确定即可,在本地虚拟机测试时还可以将脚本权限改为 **Unrestricter**,这样可以执行来自网络与本地的任何脚本
此处要使用的脚本在 PowerSploit/Recon 中,将要用到的 PowerView.ps1 传入靶机,在 powershell 中打开该脚本目录并导入:`Import-Module .\PowerView.ps1`就可以进行收集了
具体命令的相关用法在`PowerSploit/Recon/READE.md`中
小结
--
针对内网渗透这方面自己是边学习内网安全攻防这本书边整理的,由于是初学者且没有在真实环境实战过,文内有错误还请师傅们提出,水平一般还望见谅
本文来自先知社区
