热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python安全开发——内外网收集Socket子域名DNS

前言:做渗透测试,第一步就是进行信息收集,对于具体的环境下,需要不同的测试需求,通过自己编写的脚本进行测试会有


前言:


        做渗透测试,第一步就是进行信息收集,对于具体的环境下,需要不同的测试需求,通过自己编写的脚本进行测试会有事半功倍的效果,本文主要介绍了在信息收集的时候,我们可能使用到的库函数。

        本人水平有限,


 


(一)外网信息收集



 


1、域名反查IP功能




def ip_check(url):
ip = socket.gethostbyname(url)
print(ip)

 whois查询:

def chaxun(url):
data=whois.whois(url)
print(data)

        整理一下思路,我们进行信息收集的时候,会遇到CDN,使用nslookup找到该url下的IP数目信息,进行判断




2、识别目标是否存在CDN



import os
def cdn_check(url):ns = 'nslookup'+url# cdn_data = os.system(ns)# print(cdn_data) 对执行后的语句不会读取,只能输出#执行系统命令,将执行后返回的os对象进行read方法读取,将读取出来的结果存入变量cdn_data = os.popen(ns,'r').read()#通过正则表达式进行筛选count=cdn_data.count('.')if count>8:print("CDN 存在")else:print("CDN不存在")

Python os.popen() 方法 | 菜鸟教程



3、端口扫描



Python 网络编程 | 菜鸟教程


0x01 自写socket协议tcp,udp扫描

import socket
import os
def port_check(url):#gethostbyname找到域名对应的ipip = socket.gethostbyname(url)#常用端口,也可以导入字典ports = {21, 22, 135, 443, 445, 80, 1433, 3306, 3389, 1521, 8000, 8080, 7002, 7001, 9090, 8089, 4848}for port in ports:#socket.AF_INET用于服务器与服务器之间的网络通信,此处是ipv4进行通信#socket.SOCK_STREAM 基于TCP的流行socket通信server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建对象#有的需要设置延迟server.settimeout(1)#循环通过connect_ex对ip的端口进行访问,如果端口存在则返回0state = server.connect_ex((ip,port))if state==0:print("port:{} is open".format(port))else:print('close')server.close()

0x02 调用第三方模块masscan,nmap等扫描


Nmap配合Masscan实现高效率扫描资产_墨痕诉清风的博客-程序员宅基地 - 程序员宅基地


0x03 .调用系统工具脚本执行


后续具体展开




4、子域名查询




0x01 利用字典加载爆破

Python 文件I/O | 菜鸟教程

for zym_data in open('dic.txt'):zym_data = zym_data.replace("\n",'')#将换行字符替换为空url = zym_data+".aliyun.com"try:ip = socket.gethostbyname(url)#获得子域名下的ip值print(url+'——>'+ip)time.sleep(0.8)except Exception as e:pass

0x02 利用bing或第三方接口进行查询


        后续具体展开。


Python 模块 | 菜鸟教程


总结:

Python 中的 if __name__ == __main__

# Author:Xiao wei
import socket,os,time
import sysfrom 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:passif __name__ == '__main__':check = sys.argv[1]#sys.argv从0开始,是指定执行的脚本,[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


(二)内网信息收集



nmap使用


首先python通过pip install python-nmap命令去安装nmap模块
将本地的nmap配置到环境变量中
python通过nmap模块去调用本地的nmap


Author:xiao wei
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)

主机存活

import nmap
nm=nmap.PortScanner()
try:
nm.scan(hosts='192.168.2.0/24',arguments='-T4 -F')
#查看当前存活主机
print(nm.all_hosts())
#查看当前存活主机的详细信息
print(nm.csv())
except Exception as err:
print('errpr')

端口扫描

import nmap
nm=nmap.PortScanner()
data=nm.scan('ip.......','80,8888','-sV')
print(data)

总结:


        今天整理的不是很全面,后续继续完善。



推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
author-avatar
诗民宜洁兰丰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有