一些诡异的 SOCKS 命中记录 #128
Replies: 4 comments 4 replies
-
现有实现下, 以 同样的复现脚本。 import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
message = b'\x05'
sock.connect(("191.0.2.1", 80)) # 至少需要确保 TCP 连接可以建立
sock.sendall(message)
finally:
sock.close() |
Beta Was this translation helpful? Give feedback.
-
@KujouRinka 能看下这个问题么( |
Beta Was this translation helpful? Give feedback.
-
@trantuan-20048607 提到的这个问题,我之前写的时候没有验证 IP 的字段是否合法,这个之后我能够加上,有点疏忽了不好意思。 因为 Analyzer 是 “一步一步” 解析流的,所以只要检测到一个属于该协议的字段,就会把它填写到 我想或许可以这样:
可能解析 socks 的行为过于 ”急切“ 了,正如 @haruue 所说的,目前收到以 |
Beta Was this translation helpful? Give feedback.
-
可能主要是 SOCKS 这些结构太简单了,随机数据也可以套进去。。如果等完整握手再更新 PropMap 的话感觉也不好,这样单纯根据 req 的规则也会让让请求发出去收到回应以后才能匹配到 |
Beta Was this translation helpful? Give feedback.
-
贴一段正常运行时的日志,这些连接被识别成了 SOCKS 协议,但 SOCKS 载荷中的地址(
socks.req.addr
)均为保留地址,且用户名(socks.req.auth.user_id
)为乱码:附拦截规则:
Beta Was this translation helpful? Give feedback.
All reactions