【网络安全】ip获取&伪造与隐藏&挖掘

【网络安全】ip获取&伪造与隐藏&挖掘

本篇文章学习一下如何服务如何获取真实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))

![](https://mmbiz.qpic.cn/sz_mmbiz_png/6YnBvoBcYkSmulYA2Pn0575vbiaARanvdlm7KydiavPZGxSfovwGicg5E1RSjV2wfBQuSRTibkeo2saF4LYl5jjfiaw/640?wx_fmt=png&from=appmsg)

抓包可以看到,确实添加了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了。

题外话

很多小伙伴想要一窥网络安全整个体系,这里我分享一份打磨了4年,已经成功修改到4.0版本的**《平均薪资40w的网络安全工程师学习路线图》**对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

网络安全学习路线&学习资源

网络安全的知识多而杂,怎么科学合理安排?

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!

初级网工

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。 ②学习网络安全相关法律法规。 ③网络安全运营的概念。 ④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准 ②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking ③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察 ④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令 ②Kali Linux系统常见功能和命令 ③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构 ②网络通信原理、OSI模型、数据转发流程 ③常见协议解析(HTTP、TCP/IP、ARP等) ④网络攻击技术与网络安全防御技术 ⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础 ②SQL语言基础 ③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介 ②OWASP Top10 ③Web漏洞扫描工具 ④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

【“脚本小子”成长进阶资源领取】

7、脚本编程(初级/中级/高级)

在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级网工

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。

网络安全工程师企业级学习路线

如图片过大被平台压缩导致看不清的话,可以【点这里】加我耗油发给你,大家也可以一起学习交流一下。

一些我自己买的、其他平台白嫖不到的视频教程:

需要的话可以扫描下方卡片加我耗油发给你(都是无偿分享的),大家也可以一起学习交流一下。

网络安全学习路线&学习资源

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:

此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!

相关推荐

苹果iPhone 8/8 Plus全面评测:给你一个不等iPhone X的理由
太阳的别称、雅号知多少
亚洲365

太阳的别称、雅号知多少

📅 08-26 👁️ 246
沙画学习
beat365app下载官网

沙画学习

📅 09-13 👁️ 2952
三国中的关羽和赵云:为何在曹魏将领眼中,地位相差如此之大?
苹果手机阅读软件
365bet赌城

苹果手机阅读软件

📅 07-27 👁️ 5469
按需付费CDN推荐:最佳按量付费高性价比CDN供应商