OSCP回顧 & 準備建議

http://www.jasonbernier.com/wp-content/uploads/2015/02/oscp-certs.png

緣起

        去年, 2017年, 我完成了一趟學習上的奇妙旅程, 獲得了OSCP認證. 一開始很擔心自己的程度是不是足夠? 能不能花足夠多的時間在學習與練習? 幸運的是家人、朋友們都很支持我, 使我能在最後通過了長達24小時的認證考試.
        寫這篇文章, 一方面是因為想回顧一下自己的學習歷程, 另一方面是我發現很少有中文的Review去介紹和給與準備考OSCP的人們一些建議, 所以希望由我自己開始, 為想要學習資訊安全的人們提供一個起始點 : -)

Offensive Security & OSCP

        Offensive Security是一家享譽業界的認證機構,其中最為人所知的便是Offensive Security是Kali Linux的製作與維護團隊。OSCP則是Offensive Security的旗艦級認證,可以說是講到Offensive Security就會想到OSCP。
        OSCP因為它的考試是以24小時,獨立突破5台機器的實做模式聞名,也因此廣泛的被業界認可。擁有這張證照的成員,一般被認為有能力可以獨立進行滲透測試。
OSCP: https://www.offensive-security.com/information-security-certifications/oscp-offensive-security-certified-professional/
PWK(OSCP training course): https://www.offensive-security.com/information-security-training/penetration-testing-training-kali-linux/

報名OSCP的資格

        很多人會疑惑說,什麼樣的人有資格去報名OSCP課程?我是不是準備好了?甚至有網路上的文章說,OSCP是給資深高手的,菜鳥還是去考CEH好了!以我個人的經驗來說,我認為這些都不是值得擔心的事情。唯一的問題是你到底有多想學會?你是不是能在一次一次的失敗中,仍然堅持尋找解答?
        首先談談我自己的背景,我從清華大學資訊工程學系畢業,後來到美國的哥倫比亞大學,讀了電腦安全的碩士。大家可能會認為我學了很多關於資安,我想某種程度上來說:也許是的,學校給了我許多有關資訊安全的概念。不過,因為滲透測試是屬於遊走在黑白之間的技術,所以學校一般都不會教,只是會提到安全的概念,例如:Least Privilege Policy。所以其實我自己一直有一個遺憾,覺得學了很多觀念、概念,但就是不知道實務上是怎麼做的,也不知道怎麼應用安全的概念到生活/工作中。有趣的是,在學校念書時,怎麼都不理解其邏輯的Least Privilege Policy,在實做PWK Lab的時候,很清楚的體認到了其原因和重要性!
        言歸正傳,通常看外國人的blog,他們會說你需要基本的Linux知識簡單的程式寫作技巧(尤其是python)、對資訊安全有基本概念(尤其是弱點CVEs)、突破框框的想像力,和永不放棄的態度。很多人會擔心,我不懂Linux作業系統、我是資安菜鳥、我不會寫程式怎麼辦?我一直認為其實重點只有一個你願不願意花費時間和精力下去學習,並且不輕易放棄?如果答案是Yes,那麼歡迎加入OSCP的世界!因為上面提到的那些知識技巧,其實在PWK的課程文件中,都會提到。當然有些人會覺得提到的部分不足夠,不過其實整個PWK的課程風格都是這樣的,如果是希望只要讀完課程文件就能通過考試的人,那麼OSCP不是一個好選擇!在官方網站上,其實就有提到,一個好的道德駭客,是要能夠自己的尋找需要的資料,並且不斷學習的!所以,整個PWK的課程文件,其實都只教基礎的部分,更多是的需要學員們自己去上網查資料、自己去嘗試學習。所以,就算什麼都不會,只要有心,人人都可以是食神OSCP!只是需要花更多的時間和精力,去找、去補足自己不會的部分。

過程與挑戰

        關於課程內容,由於這是一個入門級(至少官方是這樣定位)的課程,所以並不會帶到很深入的技巧。不過,基本上課程教材涵蓋了從基本到進階的滲透測試技巧,會幫助學員了解有哪些可能的問題和技巧會讓駭客有機會操縱別人的機器,對於像我一樣的初學者來說,是很好的入門機會!你不需要會寫程式,當然會寫程式會更好,因為裡面會有一些使用到程式的部分,至少需要看懂,才能去調整它的內容,來符合各種情境的需求。詳細課程簡介請看PWK Syllabus
        關於PWK Labs,相對於其他的認證來說,PWK Labs是OSCP的重中之重,由遠程VPN連接到Offensive Security精心設計、模擬企業內網的5x台機器中(包括4個subnet:Public, Dev, IT, Admin,5x台主機/伺服器(Gateway router、DNS server等),每一台主機/伺服器都是Offensive Security團隊在過去的滲透測試工作中遇到漏洞的重新組合)。在完成了課程文件的學習之後,學員們最重要的任務,也是最有趣的部分就是去嘗試掌握/突破整個PWK Labs Network!很多的問題,是沒有辦法從課程文件中獲得解答的,學員必須自行在網路上尋找需要的資訊,或未知的知識。有時候,也許一兩周也沒辦法突破一台機器,但必須調整自己的心情,重新去排查已知和未知的資訊,嘗試獲得新資訊且取得突破。這也是為什麼整個課程的slogan是Try Harder!
        回到我的個人經驗,在看了許多國外文章之後,發現蠻多人是說平日4小時、假日8小時的讀書時間是必須的,但是因為自己平日要上班,工作地點和住家又還蠻遠的。我實際上在執行是確保自己平日3小時,假日就盡量念,確保8小時的學習。老實說,有時候會因為找不到方向,而不斷瞎忙,所以學習時間這件事,其實還是見仁見智。過程中,也有加班到沒時間念,也有重感冒就荒廢了2周的情況。其實是蠻考驗自己的堅持和意志的,總是會想說要多休息一下,或者是是否太少陪陪親人朋友,但還是需要不斷明確自己的目標與方向。十分感謝家人和女友,願意支持和體諒我不能陪伴的這120天(是的,我多extend了30天)。

考試模式

        考試的方式是會給予應試者一個獨立的Lab環境和5個指定要攻破機器的IP。在你預約的時間到的時候,會收到VPN的Lab Access,時間為23小時45分,在這個指定時間內,需要攻破5台機器(至少4台,每台有不同的分數),已類似CTF的方式,要求應試者獲得root.txt,並且做截圖。其中應試者被允許使用Metasploit Framework在一台機器上,一旦選定,不管是否成功都不允許在使用這個工具到其他機器上(其實我的經驗是可以直接不用,因為好像是沒有用的)。在23小時45分之後,Lab Access會被中斷。接下來的24小時,是給應試者寫報告的時間,應試者必須像真實的滲透測試從業人員一樣,撰寫完整的測試報告,內容包含:Executive Summary、Test Scope、Methodologies、Findings、Mitigation Recommendations等等。當Offensive Security收到應試者的報告之後,大約3~5天左右,就會決定應試者是否能通過考試!

未來方向

        在通過OSCP之後,並不是一個終點。只是獲得了一個進入滲透測試領域的入門磚,其實整個滲透測試的領域,從Hardware、Firmware、Infrastructure、Wireless、Web、Mobile都有,還有很多需要學習的部分。例如:逆向工程和進階技巧的OSCE、無線網路的OSWP、網頁安全的eWPTX,等等。我想期許自己在滲透測試和資訊安全的領域上學到更多知識,越走越遠!大家想要知道整個滲透測試的overview,請參考這篇IOT penetration testing:https://www.networkworld.com/article/3198495/internet-of-things/how-to-conduct-an-iot-pen-test.html        祝福大家都能在學習的旅程上有所精進 : -)


學習資源/準備方法

        首先要介紹的是Vulhub,這是一個靶機的分享平台,由網路上的同好們自發的設計有漏洞的VM機器,在上傳到Vulhub上給大家練習和互相探討。其中有許多和OSCP類似,並且可以激發新人的想像力的機器,我會列在下面。(老實說,在我的30天extension之前,我就一直覺得自己為什麼做了研究,也熟讀了課程文件,還是有很多破解不了的機器。在研究了這些機器和其他人的write-up之後,才明白自己過少的經驗,造成了想像力的不足~哈哈)
建議練習的Vulhub機器:
(1) Kioptrix 系列: https://www.vulnhub.com/series/kioptrix,8/  (很好的入門學習靶機)
(2) pWnOS 系列: https://www.vulnhub.com/series/pwnos,3/
(3) Stapler: 1: https://www.vulnhub.com/entry/stapler-1,150/  (g0tmi1k的作品)
(4) VulnOS 系列:https://www.vulnhub.com/series/vulnos,36/
(5) SickOs 系列:https://www.vulnhub.com/series/sickos,70/
(6) FristiLeaks: 1.3:https://www.vulnhub.com/entry/fristileaks-13,133/
(7) Kevgir:https://www.vulnhub.com/entry/kevgir-1,137/
(8) Droopy v0.2:https://www.vulnhub.com/entry/droopy-v02,143/
(9) Brainpan: 1:https://www.vulnhub.com/entry/brainpan-1,51/
(10) HackLAB: Vulnix:https://www.vulnhub.com/entry/hacklab-vulnix,48/
(11) /dev/random: scream:https://www.vulnhub.com/entry/devrandom-scream,47/
(12) SecTalks系列:https://www.vulnhub.com/series/sectalks,76/
(13) SkyTower: 1:https://www.vulnhub.com/entry/skytower-1,96/
(14) Pegasus:https://www.vulnhub.com/entry/pegasus-1,109/ 
       (string formatting and c reverse shell)
(15) NullByte: 1:https://www.vulnhub.com/entry/nullbyte-1,126/
(16) Troll 系列:https://www.vulnhub.com/series/tr0ll,49/

        再來,大家在學習如何提權(Privilege Escalation)的時候,一定會遇到許多不明白或無從下手的情況,這裡有幾個網站可以幫助大家瞭解,怎麼去做權限提升:
FuzzySecurity - Windows Privilege Escalation Fundamentals:
         http://www.fuzzysecurity.com/tutorials/16.html
g0tm1lk - Basic Linux Privilege Escalation:
         https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/
Rebootuser - Local Linux Enumeration & Privilege Escalation Cheat Sheet:
        https://www.rebootuser.com/?p=1623

        另外,有關port forwarding(pivoting)的技術,有時候我們需要用已破解的內網機器,作為一個支點,繼續做滲透,這時候就會需要使用到port forwarding:
NETSEC - Dynamic Port Forwarding(SSH):
        https://netsec.ws/?p=278
HighOn.Coffee - SSH & Meterpreter Pivoting Techique:   
        https://highon.coffee/blog/ssh-meterpreter-pivoting-techniques/

        接著,向大家介紹一下Pentest Monkey的網站,這個網站提供了許多有用的Cheat Sheet,是很好的參考資料。
Reverse Shell Cheat Sheet:http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
SQL Injection Cheat Sheets:http://pentestmonkey.net/category/cheat-sheet/sql-injection

        最後,推薦一個我自己很喜歡的線上暴力破解Hash網站:
CrackStation:https://crackstation.net/

參考Blog

        g0tm1lk blog:https://blog.g0tmi1k.com/2011/07/pentesting-with-backtrack-pwb/
        Security Shift:https://www.securitysift.com/offsec-pwb-oscp/
        Network Intelligence:http://niiconsulting.com/checkmate/2017/06/a-detail-guide-on-oscp-preparation-from-newbie-to-oscp/
        F4l13n5n0w:http://f4l13n5n0w.github.io/blog/2015/05/05/jing-yan-fen-xiang-oscp-shen-tou-ce-shi-ren-zheng/

留言

  1. Congrats!!!! I have failed the first time, and busy preping for the 2nd try and hopefully I can make it in the next try.

    May I pm you to exchange ideas?

    Thanks,

    回覆刪除
    回覆
    1. Sure. I'm glad to have a discussion with you : )

      刪除
  2. Hello,

    Got your message but no email of yours instead of the noreply-comment@blogger.com

    :)

    回覆刪除
    回覆
    1. Just add you as contacts. You should be able to find me after accepting that : )

      刪除
    2. Hahahahaha, looks like Google might not want me to contact you. No invite.

      刪除
    3. I guess you need to check your Google+ and add email information into your profile : )

      刪除
    4. LOL~ let me try.... suck at this social media stuff :)

      刪除
    5. Hi,

      I have added my email but have not seen your invite :)

      刪除
    6. I don't know why. Maybe you need to add me as contacts.

      刪除
    7. Cool, I have tried "PurpleSky", but no luck. Do you have any other handles?

      Thanks

      刪除
    8. I just set my email to be visible. Now, you can email me directly : )

      刪除
  3. 很高兴看到一篇中文的分享,作者能留个联系方式嘛。

    回覆刪除

張貼留言

Welcome to share your comments or questions : -)
Enjoy life!

The Hottest Articles

OWASP Security Shepherd Project - My Practice & Solutions

OWASP Security Shepherd Project - SQL Injection 3 (Injection Challenge)