A. 网络安全干货知识分享 - Kali Linux渗透测试 106 离线密码破解
前言
最近整理了一些 奇安信&华为大佬 的课件资料+大厂面试课题,想要的可以私信自取, 无偿赠送 给粉丝朋友~
1. 密码破解简介
1. 思路
目标系统实施了强安全措施
安装了所有补丁
无任何已知漏洞
无应用层漏洞
攻击面最小化
社会 工程学
获取目标系统用户身份
非授权用户不受信,认证用户可以访问守信资源
已知用户账号权限首先,需要提权
不会触发系统报警
2. 身份认证方法
证明你是你声称你是的那个人
你知道什么(账号密码、pin、passphrase)
你有什么(令牌、token、key、证书、密宝、手机)
你是谁(指纹、视网膜、虹膜、掌纹、声纹、面部识别)
以上方法结合使用
基于互联网的身份验证仍以账号密码为主要形式
3. 密码破解方法
人工猜解
垃圾桶工具
被动信息收集
基于字典暴力破解(主流)
键盘空间字符爆破
字典
保存有用户名和密码的文本文件
/usr/share/wordlist
/usr/share/wfuzz/wordlist
/usr/share/seclists
4. 字典
1. 简介
键盘空间字符爆破
全键盘空间字符
部分键盘空间字符(基于规则)
数字、小写字母、大写字符、符号、空格、瑞典字符、高位 ASCII 码
2. crunch 创建密码字典
无重复字符
crunch 1 1 -p 1234567890 | more
1
必须是最后一个参数
最大、最小字符长度失效,但必须存在
与 -s 参数不兼容(-s 指定起始字符串)
crunch 4 4 0123456789 -s 9990
读取文件中每行内容作为基本字符生成字典
crunch 1 1 -q read.txt
1
字典组成规则
crunch 6 6 -t @,%%^^ | more
-t:按位进行生成密码字典
@:小写字母 lalpha
,:大写字母 ualpha
%:数字 numeric
^:符号 symbols
输出文件压缩
root@kali:~# crunch 4 5 -p dog cat bird
1
-z:指定压缩格式
其他压缩格式:gzip、bzip2、lzma
7z压缩比率最大
指定字符集
root@kali:~# crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o w.txt -t @d@@ -s cdab
1
随机组合
root@kali:~# crunch 4 5 -p dog cat bird
1
crunch 5 5 abc DEF + !@# -t ,@^%,
在小写字符中使用abc范围,大写字符使用 DEF 范围,数字使用占位符,符号使用!@#
占位符
转义符(空格、符号)
占位符
root@kali:~# crunch 5 5 -t ddd%% -p dog cat bird
1
任何不同于 -p 参数指定的值都是占位符
指定特例
root@kali:~# crunch 5 5 -d 2@ -t @@@%%
1
2@:不超过两个连续相同字符
组合应用
crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -
crunch 10 10 12345 –stdout | airolib-ng testdb -import passwd -
3. CUPP 按个人信息生成其专属的密码字典
CUPP:Common User Password Profiler
git clone https://github.com/Mebus/cupp.git
python cupp.py -i
4. cewl 通过收集网站信息生成字典
cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt
-m:最小单词长度
-d:爬网深度
-e:收集包含email地址信息
-c:每个单词出现次数
支持基本、摘要 身份认证
支持代理
5. 用户密码变型
基于 cewl 的结果进行密码变型
末尾增加数字串
字母大小写变化
字母与符号互相转换
字母与数字互相转换
P@$w0rd
6. 使用 John the Ripper 配置文件实现密码动态变型
2. 在线密码破解
1. hydra
简介
密码破解
Windows 密码破解
Linux 密码破解
其他服务密码破解
图形化界面
xhydra
HTTP表单身份认证
密码破解效率
密码复杂度(字典命中率)
带宽、协议、服务器性能、客户端性能
锁定阈值
单位时间最大登陆请求次数
Hydra 的缺点
稳定性差,程序时常崩溃
速度控制不好,容易触发服务屏蔽或锁死机制
每主机新建进程,每服务新建实例
大量目标破解时性能差
2. pw-inspector
Hydra 小工具 pw-inspector
按长度和字符集筛选字典
pw-inspector -i /usr/share/wordlists/nmap.lst -o p1.lst -l
pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u
pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u -m 3 -M 5
3. mesa
Mesa 的特点
稳定性好
速度控制得当
基于线程
支持模块少于hydra(不支持RDP)
WEB-Form 支持存在缺陷
查看支持的模块
参数
-n:非默认端口
-s:使用SSL连接
-T:并发主机数
mesa -M ftp -q
3. 离线密码破解
1. 简介
身份认证
禁止明文传输密码
每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)
服务器端用户数据库应加盐加密保存
破解思路
嗅探获取密码HASH
利用漏洞登陆服务器并从用户数据库获取密码HASH
识别HASH类型
长度、字符集
利用离线破解工具碰撞密码HASH
优势
离线不会触发密码锁定机制
不会产生大量登陆失败日志引起管理员注意
2. HASH 识别工具
1. hash-identifier
进行 hash 计算
结果:
进行 hash 识别
2. hashid
可能识别错误或无法识别
3. HASH 密码获取
1. sammp2
Windows HASH 获取工具
利用漏洞:Pwmp、fgmp、 mimikatz、wce
物理接触:sammp2
将待攻击主机关机
使用 Kali ISO 在线启动此主机
发现此 windows 机器安装有两块硬盘
mount /dev/sda1 /mnt
将硬盘挂载
cd /mnt/Windows/System32/config
切换目录
sammp2 SYSTEM SAM -o sam.hash
导出密码
利用 nc 传输 HASH
HASH 值:
2. syskey 工具进行密码加密
使用 syskey 进行加密(会对 SAM 数据库进行加密)
重启需要输入密码才能进一步登录
使用 kali iso live
获取到 hash 值
hashcat 很难破解
使用 bkhive 破解
使用 Bootkey 利用RC4算法加密 SAM 数据库
Bootkey 保存于 SYSTEM 文件中
bkhive
从 SYSTEM 文件中提取 bootkey
Kali 2.0 抛弃了 bkhive
编译安装 :http://http.us.debian.org/debian/pool/main/b/bkhive/
在windows的 kali live 模式下,运行
sammp2 SAM key (版本已更新,不再支持此功能)
建议使用 Kali 1.x
1. Hashcat
简介
开源多线程密码破解工具
支持80多种加密算法破解
基于CPU的计算能力破解
六种模式 (-a 0)
0 Straight:字典破解
1 Combination:将字典中密码进行组合(1 2 > 11 22 12 21)
2 Toggle case:尝试字典中所有密码的大小写字母组合
3 Brute force:指定字符集(或全部字符集)所有组合
4 Permutation:字典中密码的全部字符置换组合(12 21)
5 Table-lookup:程序为字典中所有密码自动生成掩码
hashcat -b
hashcat -m 100 hash.txt pass.lst
hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l?d?d
结果:hashcat.pot
hashcat -m 100 -a 3 hash -i –increment-min 6 –increment-max 8 ?l?l?l?l?l?l?l?l
掩码动态生成字典
使用
生成文件
计算 hash 类型
结果 MD5
查看 MD5 代表的值
进行破解
2. oclhashcat
简介
号称世界上最快、唯一的基于GPGPU的密码破解软件
免费开源、支持多平台、支持分布式、150+hash算法
硬件支持
虚拟机中无法使用
支持 CUDA 技术的Nvidia显卡
支持 OpenCL 技术的AMD显卡
安装相应的驱动
限制
最大密码长度 55 字符
使用Unicode的最大密码长度 27 字符
关于版本
oclHashcat-plus、oclHashcat-lite 已经合并为 oclhashcat
命令
3. RainbowCrack
简介
基于时间记忆权衡技术生成彩虹表
提前计算密码的HASH值,通过比对HASH值破解密码
计算HASH的速度很慢,修改版支持CUDA GPU
https://www.freerainbowtables.com/en/download/
彩虹表
密码明文、HASH值、HASH算法、字符集、明文长度范围
KALI 中包含的 RainbowCrack 工具
rtgen:预计算,生成彩虹表,时的阶段
rtsort:对 rtgen 生成的彩虹表行排序
rcrack:查找彩虹表破解密码
以上命令必须顺序使用
rtgen
LanMan、NTLM、MD2、MD4、MD5、SHA1、SHA256、RIPEMD160
rtgen md5 loweralpha 1 5 0 10000 10000 0
计算彩虹表时间可能很长
下载彩虹表
http://www.freerainbowtables.com/en/tables/
http://rainbowtables.shmoo.com/
彩虹表排序
/usr/share/rainbowcrack
rtsort /md5_loweralpha#1-5_0_1000x1000_0.rt
密码破解
r crack *.rt -h
rcrack *.rt -l hash.txt
4. John
简介
基于 CPU
支持众多服务应用的加密破解
支持某些对称加密算法破解
模式
Wordlist:基于规则的字典破解
Single crack:默认被首先执行,使用Login/GECOS信息尝试破解
Incremental:所有或指定字符集的暴力破解
External:需要在主配配文件中用C语言子集编程
默认破解模式
Single、wordlist、incremental
主配置文件中指定默认wordlist
破解Linux系统账号密码
破解windows密码
Johnny 图形化界面的john
5. ophcrack
简介
基于彩虹表的LM、NTLM密码破解软件
彩虹表:http://ophcrack.sourceforge.net/tables.php
B. 如何利用SAM找差异性表达基因
今天就先来聊聊如何看差异表达基因数据,火山图,聚类图又怎么看。宏大滑1差异基因筛选方法那差异基因是如何筛选出来的呢?差异基因的筛选方法有很多,包括倍数法、T检验、F检验及SAM等。下面简单介绍一下GCBI平台上用的倍数法和SAM法。倍数法适用于没有生物学重复的样本,其计算基因在两个条件下表达水平的比值,确定比值的阈值,将绝对值大于此阈值的基因判断为差异基因。SAM算法适用于有生物学重复的样本,通过对分母增加一个常量T检验过程减小了假阳性发生的概率。文献中报道,相较于其他算法,SAM算法更为稳定,筛选出的结果也更为准确。2差异基因数据解读经过合适的差异基因方法筛选出的差异基因,结果一般分为两部分,数据+图形。数据结果展示如下图所示(两分组)众多参数中,重点看三个。p-value或q-value没有做生物学重复请跳过这一步。p-value或q-value是统计学检验变量,代表差异显着仿乱性,一般p-value或q-value小于0.05代表具有显着性差异,但可根据具体情况适当调整。因为p-value或q-value衡量地是某个基因假阳性的概率,如果p-value或q-value越低,那么挑选该基因出现假阳性的概率就越低,可验证性就越高。两者具体的计算方法具体如下:那p-value、q-value同时存在时看哪个呢?SAM法只有q-value。当两者同时存在时,可根据具体情况具体分析。差异筛选是一个典型的多重假设检验过程,对于多重假设检验,单次检验中差异显着基因的假阳性率(p-value较小)可能会较大,而q-value和FDR值较常见的BH校正方法得到的FDR值而言,改进了其对假阳性估计的保守性。即q-value相比于p-value更加严格,当差异基因结果较少时,可以退而求其次看p-value。FoldChangeFoldChange表示实验组比上对照组的差异表达倍数,一般表达相差2倍以上是有意义的,放宽要求1.5倍或者1.2倍也可以接受。看表达倍数的同时还需结合基因表达丰度,信号值太低的基因会在后续的验证实验中检测不到。3差异基因图表解读在差异结果的图形展示结果中,主要是火山图和聚类图。火山图火山图只针对两分组且有生物学重复的情况。如何看火山图呢?火山图可反映总体基因的表达情况,横坐标代表log2(FoldChange),纵坐标表示-log10(P值),每个点代表一个基因,颜色用以区分基因是否差异表达,图中橙色的点代表差异表达基因,蓝色的点代表没有差异表达的基因。聚类图聚类图可以衡量样本或基因之间表达的相似性。如上图所示的聚类图中,横坐标代表样本聚类,一列代表一个样本,聚类基于样本间基因表达的相似性,样本间基因表达越接近,靠的越近,以此类推。纵坐标代表基因聚类,一行代表一个基因,聚类基于基因在样本中表达的相似性,基因在样本中表达越接近,靠的越近,以此类推。色阶代表基因表达丰度,越红代表上调得越明显,越绿代表下调得越明显。如何做聚类图请戳往期推送做个聚类图只需1分钟差异基因有了,如何挑选潜在蔽腊基因进行实验验证呢?关键还在于感兴趣点在哪了。粗略的看,可以先看KEGG或者GO功能分类,看差异基因具体富集在哪些通路或功能。比如关注的是细胞内脂肪酸合成关键酶,可以重点看脂肪酸合成和碳流相关通路。具体如何看KEGG或者GO功能分类,请听下回分解。
C. SAM算法理解
SAM算法过程基于数据的噪音分析。一般的,信噪比会随着信号的降低而减小。然而当人们针对每一个基因进行分析时,发现即使他们的信号在同一水平,每一个基因的表达噪音都不一样。所以无法笼统地给出一个具体地线性方程来分析全部基因,必须一个一个基因单独分析。假设有对照实验I和U两组局拆,I和U实验各有平行实验w组,对于某个指定的基因i,定义相对差异值 (relative difference(d(i)))为基因i在实验组I和U当中的平均值之差除以I和U的总体标准误差均值。因为当标准误差均值过低时,会产生一个较高的d(i)值,所以总体的标准误差均值增加了一个较正项。具体公式如下:
其中上划线表示平均值 ,å m 和å n 表示实验组I和U的基因i表达的样本标准差,n1和n2表示实验组I和U当中基因i参与统计的探针的个数。S0为较正谈腊陆项,它可以由计算机自动给出,也可以由人手动指定。S0的取值标准是:将所有的d(i)值排序后100等分,每一等分先求得中位数绝对离差,然后计算这些中位数绝对离差值的变异系数。取s0分别等于100等分当中的s(i)的最小值,依次计算。最终s0的值就是在这些计算中,使变异系数最小的s0。
我们来比较一下它和t-test的异同:
[图片上传失败...(image-92c592-1597045517277)]
比较之下,我们就会发现两者十分的相同。左边是两组具有不同探针数和不同标准差的非平行实验t-test计算公式,右边就是具有不同探针数和不同标准差的非平行实验的SAM公式,我们可以看到,它们的最终差别,只在那个s0附加项上。由此我们可以知道,实际上SAM就是t-test的一个具体应用。
在计算得到所有的d(i)值之后,重排样含顷品计算d(i)期待值d E (i)。然后用期待值d E (i)对实测值d(i)做图。如果期待值和实测值相同,那么作图点就应该落在斜率为1的直线上,如果不同,作图点就落在其外。差别越大,距离该直线就越远。给定一个D值(默认的话,可以设置为1.2),当期待值和实测值差别比D大时,就认为有显着差异。这就是SAM算法。
下面我们就来使用R来实践一下SAM算法。
<pre style="box-sizing: border-box; font-family: "Roboto Slab", Georgia, Times, serif; font-size: 1em; font-weight: 300; font-style: inherit; margin: -2px 0px 27px; padding: 0px; vertical-align: baseline; border: 0px; outline: 0px; line-height: 27px; overflow: auto; max-width: 100%; background: transparent; color: rgb(102, 102, 102);">##安装SAM库
--- Please select a CRAN mirror for use in this session ---
also installing the dependency ‘impute’
trying URL ' http://software.rc.fas.harvard.e/mirrors/R/bin/windows/contrib/2.11/impute_1.24.0.zip'
Content type 'application/zip' length 1205991 bytes (1.2 Mb)
opened URL
downloaded 1.2 Mb
trying URL ' http://software.rc.fas.harvard.e/mirrors/R/bin/windows/contrib/2.11/samr_1.28.zip'
Content type 'application/zip' length 80418 bytes (78 Kb)
opened URL
downloaded 78 Kb
package 'impute' successfully unpacked and MD5 sums checked
package 'samr' successfully unpacked and MD5 sums checked
The downloaded packages are in
Loading required package: impute
Background correcting
Normalizing
Calculating Expression
</pre>
SAM分析。我们首先来了解一下samr函数。
我们注意到其参数resp.type有以下几种类型:"quantitative" 定量反应,其中data参数当中的y必须是数值型数组; "Two class unpaired" 比较两种不同条件下的结果,其中data参数当中的y必须是1或者2数组,即要么值属于其中一种条件,要么属于另外一种条件; "Survival" for censored survival outcome; "Multiclass" : 两组以上实验条件,其中data参数当中的y是自然数数组,指定实验条件编号; "One class" 单组实验,y是1的数组; "Two class paired" 比较两种不同条件下的结果,并且实验是成对进行的,其中data参数当中的y是-1,1,-2,2……-k,k这样成对出现的数组; "Two class unpaired timecourse", "One class time course", "Two class.paired timecourse" or "Pattern discovery"与时间相关的比较,y值必须是kTimet这种形式,其中k是组编号,t是时间,Time就是字符Time,起始的时间点要为kTimetStart格式,结束的点要为kTimetEnd格式。
Table 1 Resp.type取值范围
| Resp.type | 取值 |
| Quantitative | 实数,例:27.4 或者-45.34 |
| Two class (unpaired) | 整数1,2 |
| Multiclass | 整数1,2,3,…… |
| Paired | 整数-1,1,-2,2等等成对出现,通常认为负号代表未处理的对照组,正号代表实验组;-1总是与1配对,-2与2配对直至-k与k |
| Survival data | (Time, status)这种成对的数字,比如(50,1),(120,0)。第一个数字代表时间,第二个数字代表状态(1=死亡,0=存活) |
| One class | 整数1 |
在示例的数据中,实验设计为estrogen存在与不存在,及作用10及48小时的比较。因为时间点过少,不足以形成timecourse,所以我们用多组来比较吧。
<pre style="box-sizing: border-box; font-family: "Roboto Slab", Georgia, Times, serif; font-size: 1em; font-weight: 300; font-style: inherit; margin: -2px 0px 27px; padding: 0px; vertical-align: baseline; border: 0px; outline: 0px; line-height: 27px; overflow: auto; max-width: 100%; background: transparent; color: rgb(102, 102, 102);">> gp=rep(1:4,each=2)
</pre>
SAM算法因为其提供有 Microsoft Excel插件,所以使用非常广泛,相反,其在R当中的应用却显得相对较少。有研究表明,SAM对FDR的控制并不是很好,这是它最主要的不足。