基于UDP的数据渗透收发包测试 郝伟 2021/09/23 [TOC]

1. 测试内容

本测试主要验证能否通过NAT转换规则,从外网向内网发送UDP数据包。 本测试会有三个IP参与数据通信:

  • 内网内网IP:192.168.3.9
  • 局域网出口IP:219.36.33.36
  • 服务器IP:ali(121.199.10.158)

1.1. 第1步 服务端程序

首先,在服务器 ali(121.199.10.158) 上执行以下脚本,实现对8110端口的监听。

import socket

new_socket = socket.socket()
ip = '0.0.0.0'  # 如何使用 "121.199.10.158" 则会报错
port = 8110
new_socket.bind((ip, port)) # 这里有2个括号,输入为元组。


# 开始监听,数字5表示最大客户端最大连接数
print('Listening port ', port)
new_socket.listen(5)  

# 
new_cil, addr = new_socket.accept()
while True:
    # 建立客户端连接。
    print('新进来的客户端的地址:', addr)
    print('收到消息:', new_cil.recv(1024).decode())
    new_cil.send('答案为6'.encode(encoding='utf-8'))

new_cil.close()

1.2. 第2步 客户端程序

然后在本机 192.168.3.9 上运行以下程序。

import socket
import threading
import time

# 客户端
ip = "121.199.10.158"
port = 8110

new_socket = socket.socket()
new_socket.connect((ip, port))


while True:
    new_socket.send("请求给我计算下1+5=多少?".encode(encoding='utf-8')) #发生数据
    print("客户端发给服务端:请求给我计算下1+5=多少?") 
    back_str = new_socket.recv(1024).decode() #结束数据
    print("服务端发给客户端:"+back_str)
    time.sleep(3)
    print("一次通信结束运行")

new_socket.close() #关闭客户端

1.3. 第3步 使用命令发送UDP数据包

在Linux中使用以下命令发送UDP数据包,测试可用。

echo 'hello' > /dev/udp/219.36.33.36/12844

使用命令查看 netstat -a|grep 8110 通信端口的状态。

Microsoft Windows [版本 10.0.19042.1237]
(c) Microsoft Corporation。保留所有权利。

C:\Users\hwaus>ssh ali
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-126-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch
New release '20.04.3 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Welcome to Alibaba Cloud Elastic Compute Service:
IP:     121.199.10.158
Web:    http://121.199.10.158

To modify this, execute 'vi /etc/motd' (motd=Message Of The Day)
Ref:    https://www.howtogeek.com/howto/ubuntu/change-ssh-welcome-banner-on-ubuntu/

Last login: Thu Sep 23 11:25:45 2021 from 36.33.36.219
root@server00:~# netstat -a|grep TIME_WAIT
tcp        0      0 localhost:46624         localhost:43978         TIME_WAIT
tcp        0      0 localhost:44052         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44036         TIME_WAIT
tcp        0      0 localhost:44028         localhost:46624         TIME_WAIT
tcp        0      0 localhost:34897         localhost:56146         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44004         TIME_WAIT
tcp        0      0 localhost:44026         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44088         TIME_WAIT
tcp        0      0 localhost:46624         localhost:43998         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44010         TIME_WAIT
tcp        0      0 server00:45600          100.100.45.186:http     TIME_WAIT
tcp        0      0 localhost:46624         localhost:44018         TIME_WAIT
tcp        0      0 server00:47610          100.100.45.106:https    TIME_WAIT
tcp        0      0 localhost:44046         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44008         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44064         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44096         TIME_WAIT
tcp        0      0 localhost:55564         localhost:43145         TIME_WAIT
tcp        0      0 localhost:46624         localhost:43996         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44084         TIME_WAIT
tcp        0      0 localhost:44030         localhost:46624         TIME_WAIT
tcp        0      0 localhost:44042         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:43990         TIME_WAIT
tcp        0      0 localhost:44034         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44022         TIME_WAIT
tcp        0      0 server00:45534          100.100.45.186:http     TIME_WAIT
tcp        0      0 localhost:44054         localhost:46624         TIME_WAIT
tcp        0      0 localhost:44044         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44020         TIME_WAIT
tcp        0      0 localhost:44062         localhost:46624         TIME_WAIT
tcp        0      0 localhost:44050         localhost:46624         TIME_WAIT
tcp        0      0 server00:36318          212.64.62.183:https     TIME_WAIT
tcp        0      0 localhost:46624         localhost:44090         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44094         TIME_WAIT
tcp        0      0 localhost:44032         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:43984         TIME_WAIT
tcp        0      0 server00:48184          100.100.167.126:https   TIME_WAIT
tcp        0      0 localhost:44040         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:43992         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44082         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44070         TIME_WAIT
tcp        0      0 localhost:46624         localhost:43976         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44038         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44060         TIME_WAIT
tcp        0      0 localhost:44058         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44002         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44024         TIME_WAIT
tcp        0      0 localhost:46624         localhost:43982         TIME_WAIT
tcp        0      0 localhost:44048         localhost:46624         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44072         TIME_WAIT
tcp        0      0 localhost:46624         localhost:44072         TIME_WAIT
root@server00:~# netstat -a|grep 8110
tcp        0      0 localhost:8110          0.0.0.0:*               LISTEN
root@server00:~# netstat -a|grep 8107
tcp6       0      0 [::]:8107               [::]:*                  LISTEN
root@server00:~# netstat -a|grep 8110
tcp        0      0 server00:8110           219.36.33.36.adsl:11300 TIME_WAIT
root@server00:~# ps | grep 8110
root@server00:~# ps -aux | grep 8110
root     26145  0.0  0.0  14436  1112 pts/5    S+   11:34   0:00 grep --color=auto 8110
root@server00:~# kill -9 26145
-bash: kill: (26145) - No such process
root@server00:~# kill -9 26145
-bash: kill: (26145) - No such process
root@server00:~# netstat -a|grep 8110
tcp        0      0 0.0.0.0:8110            0.0.0.0:*               LISTEN
root@server00:~# netstat -a|grep 8110
tcp        0      0 0.0.0.0:8110            0.0.0.0:*               LISTEN
root@server00:~# netstat -a|grep 8110
tcp        0      0 0.0.0.0:8110            0.0.0.0:*               LISTEN
root@server00:~# netstat -a|grep 8110
tcp        0      0 0.0.0.0:8110            0.0.0.0:*               LISTEN
tcp        0      0 server00:8110           219.36.33.36.adsl:10936 FIN_WAIT2
root@server00:~# echo 'hello' > 219.36.33.36/10936
-bash: 219.36.33.36/10936: No such file or directory
root@server00:~# echo 'hello' > /dev/udp/219.36.33.36/10936
root@server00:~# echo 'hello' > /dev/udp/219.36.33.36/10936
root@server00:~# echo 'hello' > /dev/udp/219.36.33.36/10936
root@server00:~# netstat -a|grep 8110
tcp        0      0 0.0.0.0:8110            0.0.0.0:*               LISTEN
tcp        0      0 server00:8110           219.36.33.36.adsl:12844 ESTABLISHED
root@server00:~# echo 'hello' > /dev/udp/219.36.33.36/12844
root@server00:~# echo 'hello' > /dev/udp/219.36.33.36/12844

2. 结论

无法实现通信。

3. 相关资料

3.1. UDP测试

import socket

# Server 服务端 0.0.0.0, 127.0.0.1 121.199.10.158

s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

print('bind 8110')
address=('0.0.0.0', 8110)
s.bind(address)

while 1:
    print('wait for data...')
    data, addr=s.recvfrom(2048)
    if data:
        print("got data from", addr)
        print(data)
s.close()

启动服务后,使用 echo "hello" > /dev/udp/127.0.0.1/8110 可以收到数据。但是使用 echo "hello" > /dev/udp/121.199.10.158/8110 则收不到数据,原因分析中。

3.2. 附:推荐工具

TCP发包工具

results matching ""

    No results matching ""