动静分离网站架构,厦门企业网站建设专家,徐州网站建设4,网站备案删除目录 真实ip获取应用层网络层网络连接TOAproxy protocol ip伪造应用层网络层TOA攻击proxy protocol 隐藏代理 挖掘代理多地ping历史DNS解析记录国外主机解析域名网站RSS订阅网络空间搜索引擎 总结参考 本篇文章学习一下如何服务如何获取真实ip#xff0c;隐藏自己的ip#xf… 目录 真实ip获取应用层网络层网络连接TOAproxy protocol ip伪造应用层网络层TOA攻击proxy protocol 隐藏代理 挖掘代理多地ping历史DNS解析记录国外主机解析域名网站RSS订阅网络空间搜索引擎 总结参考 本篇文章学习一下如何服务如何获取真实ip隐藏自己的ip攻击者如何伪造ip挖掘出真实ip。
真实ip获取
应用层
这里以web为例以下是一个简单的http服务器获取真实ip httpserver.py
from http.server import BaseHTTPRequestHandler, HTTPServerclass MyHTTPRequestHandler(BaseHTTPRequestHandler):def do_GET(self):self.send_response(200)self.send_header(Content-type, text/html)self.end_headers()# 获取真实IP地址ip self.headers.get(X-Forwarded-For, self.client_address[0])# 返回真实IP地址self.wfile.write(bytes(ip, utf-8))def run_server():host 0.0.0.0port 8000server HTTPServer((host, port), MyHTTPRequestHandler)print(fStarting server on {host}:{port}...)try:server.serve_forever()except KeyboardInterrupt:passserver.server_close()print(Server stopped.)if __name__ __main__:run_server()服务器启动代码
python3 httpserver.py如果有这个X-Forwarded-For就用这个否则就用client_address[0]
客户端代码
import requests
url http://127.0.0.1:8000
headers {X-Forwarded-For: 192.168.1.1}
response requests.get(url, headersheaders)
print(response.text)结果截图
网络层
网络连接
还是上面的代码通过网络连接获取真实ip
不带header再次发送 通过网络连接获取真实ip当然很简单也真实但是往往客户端与服务器不是直接连通中间有LB、CDN等。
雷池WAF就是通过连接获取请求者源IP的。
TOA
有些产品会把ip放到TOA(TCP Options)转发给下游例如LBLoad Balancer因此下游服务获取真实ip时需要从TOA中获取
proxy protocol
有v1 v2两个版本都存在伪造问题且主流LB没有使用这种方式仅nginx这种开源的看到了所以没有深究请查看参考。
ip伪造
应用层
以WEB为例修改header即可。
import requests
url http://127.0.0.1:8000
headers {X-Forwarded-For: 8.8.8.8}
response requests.get(url, headersheaders)
print(response.text)截图
网络层
TOA攻击
一些服务会通过TOA来获取真实ip因此可以通过修改TCP的选项Options来隐藏真实ip。 这里使用的是linux下方式修改所有包工具见参考。 首先我先试验了一下使用自己宿主机的服务器抓包查看 发现确实有修改Options字段有值之后找了几个查ip的网站发现ip138不受影响另一个网站是被欺骗了。 curl -A Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11Mozilla /5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11 https://2023.ip138.com | grep 您的IPcurl -A Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11Mozilla /5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11 https://zh-hans.ipshu.com/my_info | grep 下面是你的公 开IP截图如下 windows下可以自己写脚本来进行toa的修改
fake_toa.py
from scapy.all import *
import socket
import struct# 目标域名和端口
target_ip 106.63.19.14
target_port 443# 伪造的源 IP 地址
fake_ip 111.111.111.222# 将伪造的 IP 地址转换为整数
fake_ip_as_int struct.unpack(!I, socket.inet_aton(fake_ip))[0]# 创建自定义的 TCP 选项
option_254 (254, b\x00\x50 struct.pack(!I, fake_ip_as_int))# 创建 IP 层
ip_layer IP(dsttarget_ip)# 创建 TCP 层不添加 TCP 选项
syn TCP(sportRandShort(), dporttarget_port, flagsS)# 组合 IP 层和 TCP 层发送 SYN 数据包
syn_ack sr1(ip_layer / syn)# 检查是否收到 SYNACK 数据包
if syn_ack[TCP].flags SA:# 创建 ACK 数据包也不添加 TCP 选项ack TCP(sportsyn_ack[TCP].dport, dporttarget_port, flagsA, seqsyn_ack[TCP].ack, acksyn_ack[TCP].seq 1)# 发送 ACK 数据包send(ip_layer / ack)# 创建 HTTP 请求只包含 Host 头部# http_request GET /ip/local/geo/v1/district HTTP/1.1\r\n \# Host: qifu-api.baidubce.com\r\n\r\nhttp_request GET / HTTP/1.1\r\n \Host: 2023.ip138.com\r\n\r\n \# 创建 HTTP 数据包这次在 TCP 层添加自定义的选项http_packet ip_layer / TCP(sportsyn_ack[TCP].dport, dporttarget_port, flagsPA, seqsyn_ack[TCP].ack,acksyn_ack[TCP].seq 1, options[option_254]) / Raw(loadhttp_request)# 接收 HTTP 响应http_response sr1(http_packet)# 打印 HTTP 响应if http_response:print(http_response.show())else:print(No response)
else:print(Did not receive SYNACK. Received: {}.format(syn_ack[TCP].flags))抓包可以看到确实添加了Options字段的内容
proxy protocol
有v1、v2两个版本都可以伪造用的不多也没找到开源工具就没深究了。
隐藏
代理
比较宽泛无法列举全。例如使用cdn来隐藏自己服务器的ip使用“梯子”做中间人来访问一些你的ip无法访问的网站或者开四层、七层代理做转发使用LB来做负载均衡的同时隐藏后端服务ip等
挖掘
代理
以cdn为例这里找了一个博客网站尝试获取真实ip
多地ping 可以看到使用了腾讯云的CDN
历史DNS解析记录
查看 IP 与 域名绑定的历史记录可能会存在使用 CDN 前的记录
国外主机解析域名
有的网站负责人为了省钱只对国内使用cdn于是国外的流量都直接打到了真实服务器上。第一步ping的时候有了国外也是通过cdn的。
网站RSS订阅
有的网站可以邮件订阅RSS发送邮件的服务器就是使用网站所在的服务器这里该网站没有此功能失败。
网络空间搜索引擎
这里使用了zoomeye我查ip没有显示cdn以为成功了问了博客作者还是cdn的ip
总结
proxy protocol没有研究和TOA差不多按照协议发包就行了实现就交给读者吧。TOA的伪造方式还是不错的非linux下没有btftools可以自己写一个代理把浏览器的流量转发到本地代理代理的功能就是把TOA改一下。一些代理隐藏ip还是不错的除非网站从开始没有使用cdn、部分使用cdn或网站服务器有其他服务导致真实ip发出包了。该博客作者我也问了一开始就使用了CDN也没有其他子域名、服务应该是无法找到真实IP了。
参考
长亭-雷池WAF
阿里云-DCDN获取真实ip
github-cloudproxy github-FakeToa github-xcdn 网络-TCP协议详解自学笔记例题、代码、实战 华为云-TOA插件配置 Github-FakeToa NGC660安全实验室-IP伪造技术探究
proxy protocol文档 nginx-proxy protocol设置
站长工具-多地ping 微步在线-DNS解析 网络空间搜索引擎-zoomeye 博客网站