Python开发-内外网收集Socket&子域名&DNS

QQ截图20220602092617.jpg

python开发学习的意义

  • 学习相关安全工具原理
  • 掌握自定义工具及拓展开发
  • 解决实战中无工具或手工麻烦批量化等情况
  • 在二次开发Bypass,日常任务,批量测试利用等方面均有帮助
  • 如SRC批量收集并利用,AWD批量利用获取FLAG,CTF加密脚本等

外网信息收集-IP查询&whois查询&CDN判断&端口扫描&子域名查询

# Author:Zheng Na

import socket,os,time
import sys

from whois import  whois  #需要安装python-whois模块

#IP查询:域名反查IP功能
def ip_check(url):
    ip=socket.gethostbyname(url)
    print(ip)

#whois查询
#第三方库进行whois查询,也可以利用网上接口查询
def whois_check(url):
    whois_data=whois(url)
    print(whois_data)

#CDN判断-利用返回IP条数进行判断
#识别目标是否存在CDN
def cdn_check(url):
    # 采用nslookup执行结果进行返回IP解析数目判断:如果非权威应答地址只有一个,那么这个网站无cnd,否则有cdn
    # 利用python去调用执行系统命令
    ns="nslookup "+url

    # 方法1:缺点是结果无法读取操作
    # cdn_data=os.system(ns)
    # print(data)

    # 方法2:
    cdn_data = os.popen(ns,'r').read()
    count=cdn_data.count('.')
    if count>8:
        print("CDN 存在")
    else:
        print("CDN不存在")

#端口扫描
#1.自写socket协议tcp,udp扫描
#2.调用第三方模块masscan,nmap等扫描
#3.调用系统工具脚本执行
def port_check(url):
    ip = socket.gethostbyname(url)
    ports={21,22,135,443,445,80,1433,3306,3389,1521,8000,8080,7002,7001,9090,8089,4848}
    server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    for port in ports:
        result = server.connect_ex((ip,port))
        if result == 0:
            print(str(port)+'|open')
        else:
            print(str(port)+'|close')

#子域名查询
#1.利用字典加载爆破进行查询
#2.利用bing或第三方接口进行查询
def zym_check(url):
    urls=url.replace('www.','')
    for zym_data  in open('dic.txt'):
        zym_data = zym_data.replace('\n','')
        url = zym_data + '.xueersi.com'
        try:
            ip = socket.gethostbyname(url)
            print(url + '->' + ip)
            time.sleep(0.1)
        except Exception as e:
            pass

if __name__ == '__main__':
    check = sys.argv[1]
    url = sys.argv[2]
    print(check)
    if check =='all':
        ip_check(url)
        whois_check(url)
        cdn_check(url)
        port_check(url)
        zym_check(url)

# 示例:python3 test.py all www.xiaodi8.com

内网信息收集-系统判断&存活主机&端口扫描

# Author:Zheng Na
import os
from nmap import nmap #需要安装python-nmap模块

#系统判断
#1.基于TTL值进行判断
#2.基于第三方脚本进行判断
def os_check(url):
    data = os.popen("nmap -O " + url,"r").read()
    print(data)

#内网主机信息探针
#1.原生利用ping进行获取
#2.原生利用icmp,tcp,udp等协议获取
#3.利用第三方模块库nmap等加载扫描获取
def nmap_scan(url):
    nm = nmap.PortScanner()
    try:
        # data = nm.scan(url, '80,8080','-sV')
        data = nm.scan(hosts='192.168.73.0/24', arguments='-T4 -F')
        print(nm.all_hosts())
        print(nm.csv())
        print(data)
    except Exception as err:
        print("error")

if __name__ == '__main__':
    url = 'www.xiaodi8.com'
    os_check(url)
    # nmap_scan(url)

Py格式解析环境与可执行程序格式转换-Pyinstaller

QQ截图20220602092637.jpg