【小迪安全-web渗透测试课程】第76天:Python开发-内外网收集Socket&子域名&DNS

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


应急响应靶机
应急响应靶机,在“应急响应资料工具”的压缩包内
过关的思路与知识点在PDF里
Python开发相关知识点
1.开发基础环境配置说明
Windows10 + Pycharm
2.Python开发学习的意义
学习相关安全工具原理
掌握自定义工具及拓展开发
解决实战中无工具或手工麻烦批量化等情况
在二次开发Bypass,日常任务,批量测试利用等方面均有帮助
如:SRC批量收集并利用,AWD批量利用获取FLAG,CTF加解密脚本等
3.本篇直播涉及的技术方向
Socket、爬虫、正则表达式、框架开发等
本次直播涉及知识点
Socket部分技术、进程命令执行、交互参数执行、NMAP工具模块使用、异常处理等

安装Python解释器和集成开发工具(IDE)PyCharm
https://www.runoob.com/w3cnote/pycharm-windows-install.html
Windows下载python非官方库
1.运行cmd
2.使用命令安装指定库
pip install [库名]
3.若是python3.0以上的版本,则使用
pip3 install [库名]
4.卸载格式
pip uninstall [库名]
5.pip可以通过-i参数临时换源
pip install [库名] -i [镜像地址]
6.查看已安装的库和版本
pip list
下载非官方库并不需要在pip的文件目录下打开cmd
Windows下永久换源
1.需要在“%HOMEPATH%”下,即“C:\Users\[计算机用户名]”下,创建“pip/pip.ini”,并在pip.ini中加入如下信息
[global]
timeout = 6000
index-url = [镜像地址]
trusted-host = [镜像地址,但是没有前面的“https://”和后面的“/simple”]
2.命令行中执行
pip config set global.index -url [镜像地址]
声明要用到的库
方法一
import [库名]
[库名].[函数名]([函数参数])
方法二
from [库名] import [函数名]
[函数名]([函数参数])
方法三
import [库名] as [库别名]
[库别名].[函数名]([函数参数])
一次导入多个函数,用逗号“,”隔开
域名反查IP
ip=socket.gethostbyname([域名])
print(ip)
声明一个变量“ip”,ip的值是域名对应的IP地址
识别目标是否存在CDN
1.命令行指令
nslookup [域名]
存在CDN:应答的名称不是域名而是某CDN,且IP地址有多个
2.执行命令行指令
os.system([命令行指令])
不推荐使用os.system,因为它只能返回指令是否成功执行,无法返回结果集
os.popen([命令行指令])
会返回一个object装载回显内容,建议直接加“.read()”来读取结果
3.读取一个文件的内容
read()
4.统计字符串里某个字符出现的次数
count()
5.Python的if语句
if [条件]:
[python语句]
else:
[python语句]
端口扫描
自写socket协议tcp,udp扫描
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
声明一个变量server,值为套接字。AF_INET(又称PF_INET)是IPv4网络协议的套接字类型,AF_INET6则是IPv6的,而AF_UNIX则是Unix系统本地通信。SOCK_STREAM是tcp/ip套接字,SOCK_DGRAM为udp/ip套接字
result = server.connect_ex(‘[服务器的IP地址]’,[端口号]))
主动连接服务器,根据返回的出错码判断是否连接,返回值为0说明连接成功。配合for循环实现端口扫描
调用第三方masscan,nmap等扫描
调用系统工具脚本执行
whois查询
利用网上接口查询或使用第三方库的函数
from whois import whois
data = whois(‘[域名]’)
print(data)
网络接口信息会更全
子域名查询
利用字典加载爆破进行查询
for zym_data in open([子域名字典文件]):
zym_data = zym_data.replace(‘\n’,‘’)
url = zym_data + ‘.’ + ‘[测试的域名]’
try:
ip = socket.gethostbyname(url)
print(url + ‘->’ + ip)
time.sleep(0.1)
except exception as e:
pass
子域名字典去掉换行符,和域名拼接成完整的域名。用域名反查的方式检查是否有该域名,有则输出ip,没有的通过异常处理输出“error”,也可以通过“pass”跳过。为了减轻网络负荷可以加一个延迟(需要time库)。
利用bing或第三方接口进行查询
利用网络查询,速度快但是结果不全,有些域名可能查不到
domain:[域名]
通过def函数定义函数
定义函数
def [函数名]([参数]):
[函数体]
def zym_check(url):
[具体功能]
调用
if __name__ == '__main__':
[函数名]([参数])
if __name__ == '__main__':
zym_check([域名])
加入交互
通过input函数输入参数
通过sys.argv函数读取命令行参数的参数列表
需要sys库
import sys
argv[0]是python的文件名,argv[1]及之后是输入的参数。获取参数通过if判断执行对应的功能
内网主机信息探针
利用原生的ping获取
利用原生的icmp、tcp、udp等获取
利用nmap等扫描获取信息
内网调用nmap扫描
1.使用第三方nmap库
2.调用nmap工具
将nmap工具打包,通过python调用
Py格式解析环境与可执行程序格式转换-Pyinstaller
由于有的电脑没有python环境,可以通过Pyinstaller生成可执行文件
pyinstaller.exe -F [python文件]
在dist文件夹下会生成exe文件
涉及资源:
PyCharm安装教程(Windows):https://www.runoob.com/w3cnote/pycharm-windows-install.html
JetBrains Pycharm Pro 2021.3.3 中文专业免费正式版:https://www.jb51.net/softs/598504.html
python socket.socket()函数 套接字详解及TCP、UDP程序示例(粘包等):
https://blog.csdn.net/Dontla/article/details/103679153#socket_11
Python中python-nmap模块的使用:https://www.cnblogs.com/csnd/p/11807823.html
Python开发源码资料:https://pan.baidu.com/s/13y3U6jX3WUYmnfKnXT8abQ 提取码:xiao
应急响应资料工具:https://pan.baidu.com/s/1tQS1mUelmEh3I68AL7yXGg 提取码:xiao