ENScan_GO+OneForAll 懒人脚本 - 信息收集 1
字数 975 2025-08-11 00:55:07

ENScan_GO与OneForAll联合信息收集教程

工具概述

本教程介绍如何使用ENScan_GO和OneForAll两款工具进行企业信息收集,从公司名开始,逐步收集备案信息、公众号、小程序以及子域名信息。

第一部分:ENScan_GO使用

功能简介

ENScan_GO是一款根据公司名获取以下信息的工具:

  • 企业备案信息
  • 微信公众号信息
  • 小程序信息

基本使用方法

  1. 准备目标公司列表文件targets.txt,每行一个公司名
  2. 使用以下批处理脚本进行批量扫描:
chcp 65001
@echo off
for /F %%i in (targets.txt) do (
    enscan.exe -n %%i
)
pause

输出结果

ENScan_GO扫描结果将包含企业的二级域名信息,这些信息将作为OneForAll的输入。

第二部分:OneForAll使用

功能简介

OneForAll是一款强大的子域名收集工具,能够:

  • 通过DNS查询发现子域名
  • 使用暴力破解方式枚举子域名
  • 通过HTTP请求验证子域名有效性

高级批量扫描脚本

由于OneForAll原生不支持并发扫描多个目标,我们使用Python API实现多线程批量扫描:

import threading
import sys
import os
from oneforall import OneForAll
from config.log import logger
from datetime import datetime

class MyThread(threading.Thread):
    def __init__(self, targets: list, outputPath: str):
        self.targets = targets
        self.outputPath = outputPath
        threading.Thread.__init__(self)
    
    def oneforall(self, domain):
        global fileLock
        # 关闭控制台输出避免干扰
        sys.stdout = open(os.devnull, 'w')
        sys.stderr = open(os.devnull, 'w')
        logger.remove(handler_id=None)
        
        # 配置并运行OneForAll扫描
        test = OneForAll(target=domain)
        test.dns = True    # 启用DNS查询
        test.brute = True  # 启用暴力破解
        test.req = True    # 启用HTTP请求验证
        test.run()
        datas = test.datas
        
        # 保存扫描结果
        fileLock.acquire()
        with open(self.outputPath, "a+") as f:
            tmp = set()
            f.write(f"# {domain} 子域名收集结果: \n")
            for data in datas:
                subdomain = data.get('subdomain')
                if data.get('alive'):  # 只记录存活的子域名
                    if subdomain not in tmp:
                        tmp.add(subdomain)
                        f.write(subdomain+'\n')
        fileLock.release()
        
        # 恢复控制台输出
        sys.stdout = sys.__stdout__
        sys.stdout = sys.__stderr__
    
    def run(self):
        global targetsLock
        while self.targets:
            print(f"剩余 {len(self.targets)} 个未扫描域名")
            target = None
            targetsLock.acquire()
            if self.targets:
                target = self.targets.pop()
            targetsLock.release()
            if target:
                self.oneforall(target)

if __name__ == "__main__":
    targetsLock = threading.Lock()
    fileLock = threading.Lock()
    ThreadList = []
    Targets = None
    
    # 可配置参数
    ThreadNum = 16               # 线程数
    targetsPath = "targets.txt"  # 目标域名列表文件
    outputPath = "results.txt"   # 结果输出文件
    
    startTime = datetime.now()
    
    try:
        # 读取目标列表
        with open(targetsPath, "r") as fp:
            Targets = fp.read().split('\n')
        
        # 创建并启动线程
        for i in range(ThreadNum):
            t = MyThread(Targets, outputPath)
            ThreadList.append(t)
        
        for t in ThreadList:
            t.start()
        
        for t in ThreadList:
            t.join()
            
    except Exception:
        pass
    finally:
        sys.stdout = sys.__stdout__
        sys.stdout = sys.__stderr__
        print(f"运行时间 {(datetime.now()-startTime).seconds} 秒")

脚本关键点说明

  1. 多线程控制

    • 使用threading.Lock()确保线程安全
    • 可配置线程数量(默认16)
    • 动态任务分配机制
  2. 输出控制

    • 临时关闭OneForAll的控制台输出避免干扰
    • 扫描完成后恢复输出
  3. 结果处理

    • 只记录存活的子域名(data.get('alive'))
    • 使用集合去重
    • 按域名分组输出结果
  4. 性能监控

    • 记录并显示总运行时间
    • 显示剩余待扫描域名数量

工作流程总结

  1. 准备targets.txt文件,包含待调查的公司名称
  2. 使用ENScan_GO获取公司备案信息和二级域名
  3. 将获得的二级域名作为OneForAll的输入
  4. 使用多线程脚本批量扫描所有二级域名的子域名
  5. 结果保存在results.txt

注意事项

  1. 扫描前确保已正确安装ENScan_GO和OneForAll及其依赖
  2. 根据机器性能调整线程数量
  3. 大规模扫描可能触发目标防护机制,建议控制扫描频率
  4. 所有信息收集行为应符合法律法规和道德规范

优化建议

  1. 可添加异常处理和重试机制
  2. 可增加进度条显示
  3. 可考虑将结果存入数据库便于后续分析
  4. 可添加邮件或通知功能,扫描完成后自动提醒

通过这套工具组合,可以高效地从公司名开始,逐步收集到详细的网络资产信息,为安全评估提供坚实基础。

ENScan_ GO与OneForAll联合信息收集教程 工具概述 本教程介绍如何使用ENScan_ GO和OneForAll两款工具进行企业信息收集,从公司名开始,逐步收集备案信息、公众号、小程序以及子域名信息。 第一部分:ENScan_ GO使用 功能简介 ENScan_ GO是一款根据公司名获取以下信息的工具: 企业备案信息 微信公众号信息 小程序信息 基本使用方法 准备目标公司列表文件 targets.txt ,每行一个公司名 使用以下批处理脚本进行批量扫描: 输出结果 ENScan_ GO扫描结果将包含企业的二级域名信息,这些信息将作为OneForAll的输入。 第二部分:OneForAll使用 功能简介 OneForAll是一款强大的子域名收集工具,能够: 通过DNS查询发现子域名 使用暴力破解方式枚举子域名 通过HTTP请求验证子域名有效性 高级批量扫描脚本 由于OneForAll原生不支持并发扫描多个目标,我们使用Python API实现多线程批量扫描: 脚本关键点说明 多线程控制 : 使用 threading.Lock() 确保线程安全 可配置线程数量(默认16) 动态任务分配机制 输出控制 : 临时关闭OneForAll的控制台输出避免干扰 扫描完成后恢复输出 结果处理 : 只记录存活的子域名( data.get('alive') ) 使用集合去重 按域名分组输出结果 性能监控 : 记录并显示总运行时间 显示剩余待扫描域名数量 工作流程总结 准备 targets.txt 文件,包含待调查的公司名称 使用ENScan_ GO获取公司备案信息和二级域名 将获得的二级域名作为OneForAll的输入 使用多线程脚本批量扫描所有二级域名的子域名 结果保存在 results.txt 中 注意事项 扫描前确保已正确安装ENScan_ GO和OneForAll及其依赖 根据机器性能调整线程数量 大规模扫描可能触发目标防护机制,建议控制扫描频率 所有信息收集行为应符合法律法规和道德规范 优化建议 可添加异常处理和重试机制 可增加进度条显示 可考虑将结果存入数据库便于后续分析 可添加邮件或通知功能,扫描完成后自动提醒 通过这套工具组合,可以高效地从公司名开始,逐步收集到详细的网络资产信息,为安全评估提供坚实基础。