网络安全-真实ip获取伪造与隐藏挖掘
目录
- 真实ip获取
- 应用层
- 网络层
- 网络连接
- TOA
- proxy 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.0'port = 8000server = HTTPServer((host, port), MyHTTPRequestHandler)print(f'Starting 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, headers=headers)
print(response.text)
结果截图

网络层
网络连接
还是上面的代码,通过网络连接获取真实ip
不带header再次发送

通过网络连接获取真实ip当然很简单,也真实,但是往往客户端与服务器不是直接连通,中间有LB、CDN等。
雷池WAF就是通过连接获取请求者源IP的。

TOA
有些产品会把ip放到TOA(TCP Options),转发给下游,例如LB(Load 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, headers=headers)
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(dst=target_ip)# 创建 TCP 层,不添加 TCP 选项
syn = TCP(sport=RandShort(), dport=target_port, flags='S')# 组合 IP 层和 TCP 层,发送 SYN 数据包
syn_ack = sr1(ip_layer / syn)# 检查是否收到 SYN+ACK 数据包
if syn_ack[TCP].flags == 'SA':# 创建 ACK 数据包,也不添加 TCP 选项ack = TCP(sport=syn_ack[TCP].dport, dport=target_port, flags='A', seq=syn_ack[TCP].ack, ack=syn_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\n'http_request = 'GET / HTTP/1.1\r\n' \'Host: 2023.ip138.com\r\n\r\n' \# 创建 HTTP 数据包,这次在 TCP 层添加自定义的选项http_packet = ip_layer / TCP(sport=syn_ack[TCP].dport, dport=target_port, flags='PA', seq=syn_ack[TCP].ack,ack=syn_ack[TCP].seq + 1, options=[option_254]) / Raw(load=http_request)# 接收 HTTP 响应http_response = sr1(http_packet)# 打印 HTTP 响应if http_response:print(http_response.show())else:print('No response')
else:print('Did not receive SYN+ACK. 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
博客网站
相关文章:
网络安全-真实ip获取伪造与隐藏挖掘
目录 真实ip获取应用层网络层网络连接TOAproxy protocol ip伪造应用层网络层TOA攻击proxy protocol 隐藏代理 挖掘代理多地ping历史DNS解析记录国外主机解析域名网站RSS订阅网络空间搜索引擎 总结参考 本篇文章学习一下如何服务如何获取真实ip,隐藏自己的ip…...
CMake入门教程【核心篇】添加子目录(add_subdirectory)
文章目录 1.概述2.添加子目录3.指定二进制目录4.排除子目录5.使用别名6.传递变量7.检查子目录是否存在 1.概述 add_subdirectory是 CMake 中的一个命令,用于向当前项目添加一个子目录。它的语法如下: #mermaid-svg-9zKJ3AvoVRln9hon {font-family:"…...
Prototype原型模式(对象创建)
原型模式:Prototype 链接:原型模式实例代码 注解 模式定义 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。 ——《设计模式》GoF 目的 在软件系统中,经常面临这“某些结构复杂的对象”的创建工作&am…...
[Redis实战]分布式锁
四、分布式锁 4.1 基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行…...
SpingBoot的项目实战--模拟电商【2.登录】
🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.功能需求 二.代码编写 …...
http——https实现指南
第一部分:HTTPS安全证书简介 什么是HTTPS安全证书? 在网络通信中,HTTPS安全证书是一种由可信任的证书颁发机构(CA)签发的数字证书,用于保障网站与用户之间的数据传输安全。通过加密和身份验证,…...
ROS仿真R2机器人之安装运行及MoveIt的介绍
R2(Robonaut 2)是NASA美国宇航局与GM通用联合推出的宇航人形机器人,能在国际空间站使用,可想而知其价格是非常昂贵,几百万美刀吧,还好NASA发布了一个R2机器人的Gazebo模型,使用模型就不需要花钱了,由于我们…...
【linux 多线程并发】线程属性设置与查看,绑定CPU,线程分离与可连接,避够多线程下的内存泄漏
线程属性设置 专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况…...
70.乐理基础-打拍子-三连音
上一个内容:69.乐理基础-打拍子-大切分与变体-CSDN博客 62-66是总拍数为一拍的节奏型,一共有七个,68-69是两拍的节奏型。 三连音说明: 1.三连音的总拍数可以是一拍、两拍、四拍。。。。 2.打拍子比较难,或许需要用V字…...
100天精通Python(实用脚本篇)——第111天:批量将PDF转Word文档(附上脚本代码)
文章目录 专栏导读1. 将PDF转Word文档需求2. 模块安装3. 模块介绍4. 注意事项5. 完整代码实现6. 运行结果书籍推荐 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教…...
如何在 NAS 上安装 ONLYOFFICE 文档?
文章作者:ajun 导览 ONLYOFFICE 文档 是一款开源办公套件,其是包含文本文档、电子表格、演示文稿、表单、PDF 查看器和转换工具的协作性编辑工具。它高度兼容微软 Office 格式,包括 .docx、.xlsx 、.pptx 、pdf等文件格式,并支持…...
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C) Baumer工业相机Baumer工业相机的图像剪切(ROI)功能的技术背景CameraExplorer如何使用图像剪切(ROI)功…...
从 WasmEdge 运行环境读写 Rust Wasm 应用的时序数据
WebAssembly (Wasm) 正在成为一个广受欢迎的编译目标,帮助开发者构建可迁移平台的应用。最近 Greptime 和 WasmEdge 协作,支持了在 WasmEdge 平台上的 Wasm 应用通过 MySQL 协议读写 GreptimeDB 中的时序数据。 什么是 WebAssembly WebAssembly 是一种…...
算法训练营Day34(贪心算法)
1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 秒了 class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);// -4 -3 -2 -1 5//-2 -2 0 2 5int last -1;for(int i 0;i<…...
uniapp:全局消息是推送,实现app在线更新,WebSocket,apk上传
全局消息是推送,实现app在线更新,WebSocket 1.在main.js中定义全局的WebSocket2.java后端建立和发送WebSocket3.通知所有用户更新 背景: 开发人员开发后app后打包成.apk文件,上传后通知厂区在线用户更新app。 那么没在线的怎么办&…...
ARM1.2作业
实现数码管不同位显示不同的数字 spi.h #ifndef __SPI_H__ #define __SPI_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h"//MOSI对应的引脚输入高低电平的信号PE14 #define MOSI_OUTPUT_H() do{GPIOE->ODR | (0x1 << 14);}whi…...
【算法专题】递归算法
递归 递归1. 汉诺塔问题2. 合并两个有序链表3. 反转链表4. 两两交换链表中的节点5. Pow(x, n) --- 快速幂 递归 在解决⼀个规模为 n 的问题时,如果满足以下条件,我们可以使用递归来解决: 问题可以被划分为规模更小的子问题,并且…...
不停止业务的情况下优化 Elasticsearch Reindex
在使用 Elasticsearch 时,我们总有需要修改索引映射的时候,这时我们只能进行 _reindex。事实上,这是一个相当昂贵的操作,因为根据数据量和分片数量,完整复制一个索引可能需要几个小时。 花费的时间不是大问题,但更严重的是,它会影响生产环境的性能甚至功能。 相信大家…...
PB 按Excel动态创建对应字段
/* > Function: w_cwjk_xhyy.wf_dw_init >-------------------------------------------------------------------- > 描述: 按excel表格列名,创建对应字段,用于部分接口对应字段导出文件 >-------------------------------------------------------------------- …...
数据结构——红黑树 and B-树
红黑树 根据平衡条件第4、5两点 最短路径,都是黑色 最长路径,红黑相间 最长是最短的两倍 B-树...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
