本篇文章学习一下如何服务如何获取真实ip,隐藏自己的ip,攻击者如何伪造ip,挖掘出真实ip。

真实ip获取

应用层

这里以web为例,以下是一个简单的http服务器,获取真实ip
httpserver.py

from http.server import BaseHTTPRequestHandler, HTTPServer

class 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 = 8000

    server = HTTPServer((host, port), MyHTTPRequestHandler)
    print(f'Starting server on {host}:{port}...')

    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass

    server.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 您的IP
 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://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
在这里插入图片描述

总结

  1. proxy protocol没有研究,和TOA差不多,按照协议发包就行了,实现就交给读者吧。
  2. TOA的伪造方式还是不错的,非linux下没有btftools,可以自己写一个代理,把浏览器的流量转发到本地代理,代理的功能就是把TOA改一下。
  3. 一些代理隐藏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定位技术助力网络安全保护

当网络遭受DDoS攻击时,通过IP定位技术,可以迅速确定攻击源头的地理位置,进而采取相应的防御措施,如屏蔽攻击源IP地址等。随着技术的不断进步和应用场景的不断拓展,IP定位技术将在网络安全保护领域发挥更加重要的作用,为网络空间的安全稳定提供有力保障。例如,网络管理员可以根据IP定位结果,将恶意IP地址列入黑名单,阻止其访问网络,从而避免潜在的安全威胁。IP定位技术是一种基于IP地址的地理位置定位技术,通过分析IP地址的归属地信息,可以精确地确定网络用户的地理位置,从而实现对网络流量的有效监控和管理。

.[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复

这些勒索病毒往往攻击入侵的目标基本是Windows系统的服务器,包括一些市面上常见的业务应用软件,例如:金蝶软件数据库,用友软件数据库,管家婆软件数据库,速达软件数据库,科脉软件数据库,海典软件数据库,思迅软件数据库,OA软件数据库,ERP软件数据库,自建网站的数据库等,均是其攻击加密的常见目标文件,所以有以上这些业务应用软件的服务器更应该注意做好服务器安全加固及数据备份工作。通过采取这些预防措施,您可以最大程度地降低成为[hudsonL@cock.li].mkp勒索病毒等威胁的风险,并保护您的数据安全。

Ubuntu使用Docker部署Nginx并结合内网穿透实现公网远程访问

cpolar安装成功后,在外部浏览器上访问Linux 的9200端口即:【http://服务器的局域网ip:9200】,使用cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可。如果有长期远程访问本地Nginx服务的需求,但又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择使用固定的二级子域名方式来远程访问。,点击左侧的预留,选择保留二级子域名,地区选择China VIP,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称。

Web 安全之点击劫持(Clickjacking)攻击详解

点击劫持(Clickjacking)攻击,又称为界面伪装攻击,是一种利用视觉欺骗手段进行攻击的方式。攻击者通过技术手段欺骗用户点击本没有打算点击的位置,当用户在被攻击者攻击的页面上进行操作时,实际点击结果被劫持,从而被攻击者利用。这种攻击方式利用了用户对网站的信任,通过覆盖层(通常是透明的iframe)覆盖在另一个网页之上,使受害者无法察觉。

Docker网络配置与自定义IP容器通信

互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于 IP地址的寻址操作。

大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解

卷积神经网络是一种前馈神经网络,它的人工神经元可以响应周围单元的局部区域,从而能够识别视觉空间的部分结构特征。卷积层: 通过卷积操作检测图像的局部特征。激活函数: 引入非线性,增加模型的表达能力。池化层: 减少特征维度,增加模型的鲁棒性。全连接层: 在处理空间特征后,全连接层用于进行分类或回归。卷积神经网络的这些组件协同工作,使得CNN能够从原始像素中自动学习有意义的特征层次结构。随着深度增加,这些特征从基本形状和纹理逐渐抽象为复杂的对象和场景表现。

什么是DDOS高防ip?DDOS高防ip是怎么防护攻击的

同时,高防IP设备还支持防御日志的记录和分析功能,可以对攻击流量进行深入分析,进一步了解攻击来源和特点,为后续的防御策略提供数据支持。为了解决这些问题,高防IP作为一种网络安全服务应运而生。高防IP通过实时监测和分析流量,识别和拦截恶意流量,确保正常流量能够安全地转发给目标服务器,从而保护企业的业务正常运行。高防IP设备会对流量进行实时监测和分析,对流量的来源、目的地、协议、数据包大小、数据包速率等进行全面分析和判断。通过对流量的实时监测和分析,可以及时发现异常流量的存在,为后续的防御策略提供依据。

详解动态网页数据获取以及浏览器数据和网络数据交互流程-Python

动态网页是一种在用户浏览时实时生成或变化的网页。。相比之下,动态网页可以根据用户的互动、请求或其他条件在浏览器端或服务器端生成新的内容。而且现在的网页一般都是采用前后端分离的架构,前端负责展示和用户交互,后端负责数据处理。这种架构使得前端可以更加灵活地实现动态内容的加载和展示。所以说以后想要获取到数据,动态网页数据获取会成为我们主流获取网页数据的技术。所以在动态网页数据获取这方面我们需要下足功夫了解动态网页数据交互形式、数据存储访问模式等方方面面的知识,我们才好更加灵活的获取到数据。

CentOS本地部署SQL Server数据库无公网ip环境实现远程访问

GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除、插入操作,通过GeoServer可以比较容易地在用户之间迅速共享空间地理信息。另外,GeoServer是开源软件。下面介绍GeoServer web ui 管理界面 结合cpolar 内网穿透工具实现远程访问,

Samtec卓越应用 | SEARAY:最大限度提高设计灵活性和密度

与标准的BGA/焊球连接相比,Solder Charge互连在连接器与印刷电路板的组装过程中。是专为高带宽应用而设计的坚固触头点。如果您需要SEARAY™尺寸的高速、高密度电缆组件,请查看SEAC系列阵列电缆组件。0.80 毫米间距系统的密度是标准 1.27 毫米栅格的两倍。为设计人员提供了大量的设计灵活性,远远超过业内任何其他阵列产品。这样就能实现更长的循环寿命和更优越的电气性能。如果使用我们推荐的引脚分配,设计人员的单端设计最多可获得。,这在设计高引脚数连接器时是一个重要的考虑因素。

网络知识-以太网技术的发展及网络设备

大家都被互联网上各种各样的内容、技术闪亮了眼睛,没有太多人去了解比较底层的一些网络技术。面试的时候,我也问过很多技术人员,对以太网是否了解,了解多少?但是很多人都知之甚少!但是,在我们实际工作碰到问题、分析问题、定位问题、解决问题的时候,又必须要了解这方面的知识。以太网最初到现在的主要设备包括集线器、中继器、网桥、交换机。以太网目前应用在很多行业,在视频监控、安防、视频会议等领域都有很广泛的应用。

详解静态网页数据获取以及浏览器数据和网络数据交互流程-Python

在网站设计领域,基于纯HTML格式构建的网页通常定义为静态网页,这种类型的网页是早期网站建设的主要形式。对于网络爬虫来说,抓取静态网页中的数据相对较为简单,因为所需的所有信息都直接嵌入在网页的HTML代码里。然而,对于那些利用AJAX技术动态加载数据的网页,其数据并不总是直接出现在HTML代码中,这对爬虫的抓取工作造成了一定的难度。在静态网页的数据抓取过程中,Requests库显示出其卓越的实用性。这个库不仅功能全面,而且操作简洁直观。

为什么ChatGPT选择了SSE,而不是WebSocket?

WebSocket是一种网络通信协议,它最早被提出来是为了解决HTTP连接的一大限制:HTTP协议中,一个客户端发送给服务端的请求必须由服务端返回一个响应,这使得服务端无法主动向客户端推送数据。客户端通过发送一个特殊的HTTP请求向服务器请求建立WebSocket连接。这个请求类似于:GET /chat HTTP/1.1 Upgrade: websocket Connection: Upgrade服务器响应这个请求,确认建立WebSocket连接。

如何使用Docker部署Dashy并无公网ip远程访问管理界面

Dashy是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航页。一款功能超强大,颜值爆表的可定制专属导航页工具结合cpolar内网工具,我们实现无需部署到公网服务器,即可实现公网访问Dashy,下面我们介绍配置方法。

如何在Linux设置JumpServer实现无公网ip远程访问管理界面

JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。下面介绍如何简单设置即可使本地jump server 结合cpolar 内网穿透实现远程访问jump server 管理界面.

windows如何环境搭建属于自己的Zblog博客并发布上线公网访问?

想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕不开的项目。就以笔者自己的经历来说,就被自制网页网站卡过很久。不过随着电脑技术的发展,已经出现了很多便捷快速建站的工具软件。今天,笔者就为大家展示,如何快速上手Z-blog,建立自己的个人博客网站,并通过cpolar建立的内网穿透数据隧道,将这个个人博客软件发布到公互联网上。从上面介绍的步骤可以看出,想要快速发布一个网站,有必要选择一些简单趁手的辅助工具,虽然Z-blog搭建的网站但很简单,但却是我们熟悉cpolar发布本地网站很好的例子。

高效网络爬虫:代理IP的应用与实践

代理IP指的是位于互联网上的一台中间服务器,它充当了爬虫与目标服务器之间的中介角色。通过使用代理IP,爬虫可以隐藏真实的IP地址,使得对目标服务器的请求看起来是来自代理服务器而非爬虫本身。通过使用代理IP,爬虫可以隐藏其真实的IP地址,增强匿名性,防止被目标服务器追踪。代理IP允许爬虫通过多个不同的IP地址发送请求,有效地分散了请求负载,降低了单个IP的请求频率,减轻了对目标服务器的压力。有些网站对特定IP或IP段进行了访问限制,使用代理IP可以帮助爬虫绕过这些限制,获取被封锁的内容。

ChatGPT 也宕机了?如何预防 DDOS 攻击的发生

DDoS 攻击即分布式拒绝服务攻击,是指多个攻击者或者一个攻击者控制了位于不同位置的多台机器,并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击。攻击者会向目标服务器发送大量数据包或请求,以耗尽目标服务器资源,使其无法响应合法用户请求。DDoS 攻击通常会导致目标服务器无法正常工作,造成服务中断、网站崩溃等问题,严重影响合法用户的体验和企业的正常运营。DDoS 攻击的防御措施包括加强网络基础设施安全、配置防火墙和入侵检测系统、及时修复系统和应用程序漏洞等。

实现跨VLAN通信、以及RIP路由协议的配置

VLAN的基本配置、VLAN中的Trunk链路、跨VLAN通信以及RIP路由协议的配置。1.按照拓扑图所示,将8台计算机分别配置到相应的VLAN中。(20分)2.配置实现同一VLAN中的计算机可以通信。(22分)3.配置实现PC1,PC2,PC3,PC4可以互相通信PC5,PC6,PC7,PC8可以互相通信。(8分)4.按照拓扑图所示,为LSW1,LSW2,AR1,AR2配置IP地址,线路左侧使用小地址,右侧用大地址,交换机中使用的管理VLAN编号是99。5.LSW1,LSW2....

AIGC实战——WGAN(Wasserstein GAN)

在本节中,我们学习了如何使用 Wasserstein 损失函数以解决经典 GAN 训练过程中的模式坍塌和梯度消失等问题,使得 GAN 的训练更加可预测和可靠。WGAN-GP 通过在损失函数中添加一个令梯度范数指向 1 的项,为训练过程施加 1-Lipschitz 约束。

RPC简介和grpc的使用

调用客户端句柄,执行传递参数。调用本地系统内核发送网络消息。消息传递到远程主机,就是被调用的服务端。服务端句柄得到消息并解析消息。服务端执行被调用方法,并将执行完毕的结果返回给服务器句柄。服务器句柄返回结果,并调用远程系统内核。消息经过网络传递给客户端。客户端接受数据。
返回
顶部