Cupp是一款用Python语言写成的可交互性的字典生成脚本。尤其适合社会工程学,当你收集到目标的具体信息后,你就可以通过这个工具来智能化生成关于目标的字典。当对目标进行渗透测试的时候,常见密码爆破不成功,大批量的字典耗时太长时,就需要一份结合具体目标的带社工性质的字典,可以很大提升爆破效率,这时候就可以利用Cupp打造一份。本文基于kali2.0进行演示,我的kali系统是利用清华源更新过的最新系统,但没有Cupp。所以先安装。
安装:apt-get install cupp
![b05a9868eafa2c1a975f46b19d05e69d.png](https://i-blog.csdnimg.cn/blog_migrate/4f4ab435b2059d4f3f103c4aca69af25.jpeg)
![7adfe47c99d175dd0bbc78524784d740.png](https://i-blog.csdnimg.cn/blog_migrate/1d9cea0827b6c407e5f89f0809cc7236.jpeg)
查看命令:cupp
![e6d2ba215b03f35c51e4e69164e44f35.png](https://i-blog.csdnimg.cn/blog_migrate/cfc50700e3997114b58c3a158079c5a9.jpeg)
参数说明
-v 查看cupp版本号
-h 查看参数列表
-l 从github仓库下载字典
-i 使用交互式的提问创建用户密码字典,cupp的主要功能,本文主要演示此参数
-w 在已存在的字典上进行扩展
以freebuf为例生成字典
执行cupp -i
![344c79f5992766667733918ffbd70c2f.png](https://i-blog.csdnimg.cn/blog_migrate/d3ff6dc3ba3256ad83308b5e77c45060.jpeg)
然后和工具开始交互,会让你输入被攻击目标的姓、名、外号、生日、父母的名字、外号、生日、子女的名字、外号、生日等等一系列的信息。如果你有这些信息,直接输入,如果没有直接回车进行下一步。
![4d51634c86ad47cc5c25deec0c1f84d5.png](https://i-blog.csdnimg.cn/blog_migrate/5efb02f85484c811be8891e42e9f02fb.jpeg)
然后是宠物、公司等名称,需要不需要加关键字当前缀后缀等等,如果不知道或者不想加,直接回车跳过。
最后在命令执行的目录里生成字典文件。
注意:输入生日信息的时候是按照日、月、年的顺序,如11021990就是1990年2月11
最后查看生成的字典文件
![88dadd947650b29d7d44a13296d0c569.png](https://i-blog.csdnimg.cn/blog_migrate/16001496b59a7d7325d55ced14d97a4d.jpeg)
cewl教程:
cewl是通过爬取网站的时候,根据爬取内容的关键字生成一份字典,通过这种方式生成的字典可以作为cupp生成字典的补充。如果常见的字典都爆破了还没拿下目标,那你只能挂个十几G几十G的字典去跑了,具体是跑到几百年或者几千年以后,这个要看人品哈!哈哈@!
cewl是kali自带的脚本工具,我崇尚日常使用都使用自带的工具,即使虚拟机坏了,再找一个虚拟机立马就能干活而不需要配置环境。
接下来看图:输入cewl –help会在屏幕打印如下,下面我给大家翻译一下,译文用Python的注释方式
cewl [OPTION] ... URL
--help, -h: show help #显示帮助
--keep, -k: keep the downloaded file #保存下载的文件
--depth x, -d x: depth to spider to, default 2 #网站爬取深度,默认为2,建议不要太大
--min_word_length, -m: minimum word length, default 3 #字典的最小单词长度,如果小于此不收入字典
--offsite, -o: let the spider visit other sites #让爬虫爬取其他站点,针对外链的
--write, -w file: write the output to the file #爬取的内容输出到文件
--ua, -u user-agent: user agent to send #使用useragent,这个可以突破简单防御
--no-words, -n: don't output the wordlist #不要输出字典
--meta, -a include meta data #包含网页中的meta数据
--meta_file file: output file for meta data #为meta数据输出个文件
--email, -e include email addresses #包含email地址
--email_file file: output file for email addresses #输出email地址
--meta-temp-dir directory: the temporary directory used by exiftool when parsing files, default /tmp
--count, -c: show the count for each word found #展示发现的每个单词的数量
Authentication
--auth_type: digest or basic
--auth_user: authentication username
--auth_pass: authentication password
Proxy Support
--proxy_host: proxy host
--proxy_port: proxy port, default 8080
--proxy_username: username for proxy, if required
--proxy_password: password for proxy, if required
Headers
--header, -H: in format name:value - can pass multiple
--verbose, -v: verbose
URL: The site to spider.
下面用firet少帅力少帅力est网站做演示,演示其他网站我怕被请喝茶
如果显示进度就用-v参数,这里演示我只爬取深度设为1
![f224118763d1bedf6fd45fc5c9edb718.png](https://i-blog.csdnimg.cn/blog_migrate/48309fe213662adb87f8be7bc6ff73d5.jpeg)
![e03d602372293d3215b4ef4e68d91f38.png](https://i-blog.csdnimg.cn/blog_migrate/3a451e0556841129a2dda0992b9951b3.jpeg)
完成以后查看字典如下:
![f0bf97d642448fce80e704d02dc51ff1.png](https://i-blog.csdnimg.cn/blog_migrate/725a06b11170bd767ca9e96db98c2f23.jpeg)
![ae65bba8e9966bb8d61835b627711dfd.png](https://i-blog.csdnimg.cn/blog_migrate/881434adb4ffdc4129510dfadd0c92bc.jpeg)
Crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。使用Crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。由其在渗透测试需要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重要的作用。
0×00 安装
address : https://sourceforge.net/projects/crunch-wordlist/
Crunch为kali自带工具之一在kali环境下进行,文中提及的所有命令均可以在kali下直接运行。
![fd64e689dd631759fd51cd69a0216124.png](https://i-blog.csdnimg.cn/blog_migrate/46d813b346c548b9a66eb8f4080ae795.jpeg)
0×01 使用语法和参数
crunch <min> <max> [options]
参数详解
min 设定最小字符串长度(必选)
max 设定最大字符串长度(必选)
oprions
-b 指定文件输出的大小,避免字典文件过大
-c 指定文件输出的行数,即包含密码的个数
-d 限制相同元素出现的次数
-e 定义停止字符,即到该字符串就停止生成
-f 调用库文件(/etc/share/crunch/charset.lst)
-i 改变输出格式,即aaa,aab -> aaa,baa
-I 通常与-t联合使用,表明该字符为实义字符
-m 通常与-p搭配
-o 将密码保存到指定文件
-p 指定元素以组合的方式进行
-q 读取密码文件,即读取pass.txt
-r 定义重某一字符串重新开始
-s 指定一个开始的字符,即从自己定义的密码xxxx开始
-t 指定密码输出的格式
-u 禁止打印百分比(必须为最后一个选项)
-z 压缩生成的字典文件,支持gzip,bzip2,lzma,7z
特殊字符
% 代表数字
^ 代表特殊符号
@ 代表小写字母
, 代表大写字符
0×02 实用案例
(1)生成一个字典文件,用自己指定的字符(默认为26个小写字母为元素的所有组合)
crunch 1 3 123
![481fefd7e568a3ade52f2e17ff7d68ae.png](https://i-blog.csdnimg.cn/blog_migrate/90085009cb5de6cefefbd310d89d99c3.jpeg)
(2)若字典中需要空格,;等用双引号来表示
crunch 3 3 "ab "
![5c1ad3cc718352e6536c86bfbc0a6cb2.png](https://i-blog.csdnimg.cn/blog_migrate/4ff820c7bb41aebc5054a200b60176c3.jpeg)
(3)生成几个元素的组合(可以用于社工中收集的信息)
crunch 4 4 -p zhangsan 2018 0101 ..
![2a00f7afc8ff95a24ccbb4116daea55a.png](https://i-blog.csdnimg.cn/blog_migrate/652265ac7240a1b01644101d851b3ad8.jpeg)
(4)生成指定的字符串(比如生成编号,手机号等)
crunch 10 10 -t 201800%%%%
![c2cae657bd2334556fdd330c5ac41e88.png](https://i-blog.csdnimg.cn/blog_migrate/e24504b86ae81958056023d6743f67a8.jpeg)
(5)多种组合 生成3个元素的组合,前三位为定义的字符串
crunch 3 3 -t d@% -p aaa bbb
![4b863a8e66b042c8d5dbc371c8b83e19.png](https://i-blog.csdnimg.cn/blog_migrate/888d1ac676edb1b030c5ad2c354480e2.jpeg)
(6)通过-l参数来使@,%^等特殊字符输出
crunch 7 7 -t p@ss,%^ -l a@aaaaa
![72000d61c47142e7af7467ebfa5420f5.png](https://i-blog.csdnimg.cn/blog_migrate/8235aa94a43019af914ea59d1bbd9bfd.jpeg)
(7)-o参数也可使用>>来简化
crunch 4 4 -d 2@ -t @@@% >> test.txt
0×03 调用密码库
/usr/share/crunch/charset.lst
![77576fc5463623f1bae20c325f29acbd.png](https://i-blog.csdnimg.cn/blog_migrate/8a853286fc88032993f1e5256b30f8c3.jpeg)
特殊字符
numeric 表示0123456789
Lalpha 表示26位小写字母
Ualpha 表示26位大写字母
实例:调用密码库 charset.lst中的 hex-upper项目字符,生成4位密码,其中格式为@ + hex-upper +% +%
crunch 4 4 -f charset.lst hex-upper -t @@%% -l @xdd
0×04 总结
你也可以根据自己需要的字符自己编写密码库文件来完成对特殊字典的编写,来创造自己的专属字典。