【发布时间】:2016-07-20 09:07:09
【问题描述】:
我正在尝试使用 https 或 http 来创建流量
我在 dport 443 之外的 dport 上制作 ssl 层数据包时遇到问题。我在 dport 443 上使用原始数据制作普通数据包时也遇到问题。
我创建的第一个数据包有 tcp dport=443,当我使用 show2() 时,SSL 层出现
p = Ether()/IP(src="1.2.3.4", dst='4.3.2.1',flags="DF")/TCP(sport=12345, dport=443, flags="PA", ack=1111, seq=3222)/SSL(records=[TLSRecord()/TLSHandshake()])
p.show2()
###[ Ethernet ]###
dst= 00:26:52:ce:5f:49
src= 34:23:87:20:76:59
type= IPv4
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 49
id= 1
flags= DF
frag= 0L
ttl= 64
proto= tcp
chksum= 0x30bd
src= 1.2.3.4
dst= 4.3.2.1
\options\
###[ TCP ]###
sport= 12345
dport= https
seq= 3222
ack= 1111
dataofs= 5L
reserved= 0L
flags= PA
window= 8192
chksum= 0x27d5
urgptr= 0
options= []
###[ SSL/TLS ]###
\records\
|###[ TLS Record ]###
| content_type= handshake
| version= TLS_1_0
| length= 0x4
|###[ TLS Handshake ]###
| type= client_hello
| length= 0x0
我创建的第二个数据包与第一个数据包相同,只是它的 tcp dport=4443,但是当我使用 show2() 时,SSL 层由 Raw 重放
p2 = Ether()/IP(src="1.2.3.4", dst='4.3.2.1',flags="DF")/TCP(sport=12345, dport=4443, flags="PA", ack=1111, seq=3222)/SSL(records=[TLSRecord()/TLSHandshake()])
p2.show2()
###[ Ethernet ]###
dst= 00:26:52:ce:5f:49
src= 34:23:87:20:76:59
type= IPv4
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 49
id= 1
flags= DF
frag= 0L
ttl= 64
proto= tcp
chksum= 0x30bd
src= 1.2.3.4
dst= 4.3.2.1
\options\
###[ TCP ]###
sport= 12345
dport= 4443
seq= 3222
ack= 1111
dataofs= 5L
reserved= 0L
flags= PA
window= 8192
chksum= 0x1835
urgptr= 0
options= []
###[ Raw ]###
load= '\x16\x03\x01\x00\x04\x01\x00\x00\x00'
第三个数据包是在没有 ssl 层的情况下创建的,但在 tcp dport=443 上,当我使用 show2() 时,ssl 层就在那里,我没想到
p3 = Ether()/IP(src="1.2.3.4", dst='4.3.2.1',flags="DF")/TCP(sport=12345, dport=443, flags="PA", ack=1111, seq=3222)/Raw(load="g\x05ZN`")
p3.show2()
###[ Ethernet ]###
dst= 00:26:52:ce:5f:49
src= 34:23:87:20:76:59
type= IPv4
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 45
id= 1
flags= DF
frag= 0L
ttl= 64
proto= tcp
chksum= 0x30c1
src= 1.2.3.4
dst= 4.3.2.1
\options\
###[ TCP ]###
sport= 12345
dport= https
seq= 3222
ack= 1111
dataofs= 5L
reserved= 0L
flags= PA
window= 8192
chksum= 0x2189
urgptr= 0
options= []
###[ SSL/TLS ]###
\records\
###[ Raw ]###
load= 'g\x05ZN`'
问题:
如何制作 ssl 层出现在 443 以外的不同 dport 中的数据包?
为什么原始数据出现在 dport = 443 的 SSL 层中
我是否坚持使用 dport 443 进行 ssl/tls?
在不使用 ssl/tls 时,我是否也坚持使用 !443 dport?
其他可能相关的信息
scapy 版本 2.3.1
scapy-ssl_tls-version 1.2.2
安装方法手册:
install requirements from requirements.txt
copy scapy_ssl_tls/* to scapy_installation/scapy/layers
modify scapy_installation/scapy/config.py to autoload SSL/TLS
【问题讨论】: