<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      政企安全 正文
      發私信給李勤
      發送

      0

      萬字實錄:從DDCTF大賽看當前網絡安全新趨勢 | 雷鋒網公開課總結文+視頻(上篇)

      本文作者: 李勤 2017-06-16 12:01 專題:雷峰網公開課
      導語:大量干貨解析。

      如果說,滴滴出行(以下簡稱滴滴)是近幾年來讓大家出行發生翻天覆地變化的一家公司,想必你不會反對。

      據滴滴給出的官方數據,滴滴全平臺上每天超過2000萬訂單。與此而來的是,這么多乘客的消費數據和個人信息,滴滴怎么守護?

      萬字實錄:從DDCTF大賽看當前網絡安全新趨勢 | 雷鋒網公開課總結文+視頻(上篇)

      快速增長的滴滴意識到了這一點。2016年9月底,硅谷安全教父弓峰敏與網絡安全資深專家卜崢加盟滴滴,弓峰敏出任滴滴信息安全戰略副總裁和滴滴研究院副院長,負責制定信息安全戰略和研發下一代信息安全技術,卜崢則擔任滴滴信息安全副總裁,全面領導信息安全團隊。今年3月9日,滴滴又宣布在加利福尼亞硅谷成立滴滴美國研究院,重點發展大數據安全和智能駕駛兩大核心領域。

      弓峰敏表示:“滴滴平臺從乘客到司機到合作伙伴,涉及大量金融付費交易的過程,帶來信息保護以及類似身份信息偷盜、欺詐犯罪等有關問題,滴滴需要保護客戶信息、避免付費和交易過程中的欺詐以及個人賬戶信息泄露等,而最讓人振奮的是,滴滴不只是解決出行問題,同時還能解決更大的問題,從國家到全球層面,包括城市發展、交通、環境保護等社會問題,這是極大的挑戰!”

      隨后,滴滴在 5 月 17 日啟動了首屆滴滴信息安全闖關賽 (DDCTF),5月30日已結束。

      先挖網絡安全大佬,再通過大賽尋找優秀的網絡安全人才進行儲備,滴滴走了一條“肉眼可見”重視安全的道路。

      但是,別人怎么分析都是“邊角料”,我們看滴滴自己怎么說。

      6月8日,雷鋒網宅客頻道(微信ID : letshome)邀請滴滴公司三位安全研究人員來一場硬創公開課,聊了聊如何看待當前網絡安全新趨勢,以及滴滴接下來怎么做。

      嘉賓介紹

      翟津健:斯坦福大學計算機專業

      楊軍鋒 : 獲微軟 MitigationBypass Bounty

      王宇 : 在 Black Hat USA2014 演講和出任 GeekPwn 活動評委

      劉瀟鋒:滴滴出行信息安全工程師,多年Web安全建設、攻防溯源、安全研究經歷。

      萬字實錄:從DDCTF大賽看當前網絡安全新趨勢 | 雷鋒網公開課總結文+視頻(上篇)

      [從左到右依次為翟津健、楊軍鋒、王宇、劉瀟鋒]

      以下是公開課總結文實錄+視頻,在不妨礙原意的表達上,雷鋒網略有刪節,并分為上下兩篇,視頻均有:

      若想獲得此次公開課完整 PPT ,請在雷鋒網網絡安全頻道的微信公眾號“宅客頻道”(微信ID:letshome)回復“滴滴公開課”。

      楊軍鋒:這次是由我們四個人,包括王宇、翟老師、劉瀟鋒和我來給各位觀眾聊聊這次 CTF 比賽以及當前網絡趨勢的情況。我們講解題目的同時會穿插一些我們對現在網絡安全趨勢的看法。

      這里是我們四個人一些簡單的介紹,可能大伙都比較熟悉,翟老師是屬于一路學霸性的,瀟鋒是搞web搞得比較好的人,我是里面最矬,來打平均線的一個人。

      這次我們要聊聊為什么我們要辦 CTF 。我們希望通過辦 CTF 來傳達我們對安全的一些理念,包括我們需要什么樣的人才,我們期望的這些技能是什么,我們希望通過 CTF 傳達信息給同學們。我們這次辦CTF的一個重要目的,就是促進同學們對滴滴安全的了解,知道我們對極客精神的一種追求。

      這是我們的愿景,最重要的還是要玩得開心,在玩得開心的同時,能夠從中得到一些知識。有什么補充的嗎?

      劉瀟鋒:沒有什么補充的,我覺得CTF活動更是一種交流,還是玩得開心最重要。

      楊軍鋒:我們這里的愿景是我們都在這次比賽中玩得開心,同時能從玩比賽里拿走一些東西,不管是經驗也好,鍛煉也好,知識也好。

      在這次比賽里面,我看到有一些同學可能在某一個方向比較薄弱,看到他花了幾天的時間去學,有時學web,學一些知識,回來解題,我非常高興看到這樣的同學,一邊做題,一邊學習,然后在學和做中,我看到有一位同學,他在最后解題思路里寫到,這次比賽解決了他很多年沒有系統化學習過的一些知識點,這就是我們聽到最好的回饋,同學們學到東西,我們非常開心。

      我們接下來的議程就是會講解一些題目,但是由于我們的時間有限,不會把每一道題所有細節都陳列出來,主要就是講講思路,大概是怎么做的,應該從什么方向想。這些解題思路并不是唯一的,除了這些解題思路之外,可能還有其他的一些很好的解題思路,我們無法一一陳列在這里,可能會有更好的解題思路。我們在這里講的只是給出了一個預期的解題方式,不是標準,也不是唯一的。

      這次比賽我們一共準備了11道題目,很多同學說為什么沒有漏洞利用的題目,這個題目由于最初規劃候,我們想要作為線上賽,沒有任何服務器交互的環節。所以在這種情況下,完全對溢出的利用題目也好,同學們解題、服務器搭建還是各方面,跟我們最初設想的可能會有點兒不一樣。

      我們最初決定的所有的題目都是離線題,不需要同學們連接服務器,但是最后玩出web題目什么的,還是搭建了線上的環境,這是后來由于出題時一些不得不折中的地方,除了這三道web題,其他都是離線可以解的題目。

      第一道題目是Mach-O上的一個逆向題,接下來就是一個安卓題,主要是JAVA的、逆向的,比較簡單,這些都是windows題目,這道題目主要就是模擬典型的釣魚攻擊場景,是長著一個word文檔的圖標。這個是Panic,就是由教授來出題的,這個崩潰題目,你只要加載、驅動,然后你Mach-O,Panic就是會崩潰了。Injection就是web題目。

      接下來Android normal這道題就是翟老師出的。這道是快戰攻擊題,這道題挺有意思的,我相信很多同學如果做到它,印象應該挺深刻的。然后是Crackme,是到RC6到AEC算法變形題目,很多同學對它很有怨氣,今天它的出題人也來到了現場,不是來到了現場,也來到了線上。接下來的這道題目就是代碼神經題,我見到有好幾位同學被卡在這里。Findkey這道題就是比較純粹的數學題了。最后一道壓軸題是翟老師出的安卓難題。

      這個排序我們是根據經驗按照我們想的難度排的,但是確實是也不是很嚴格地按照難度梯隊排列,但是大體上是升序的難度級別變化。

      我們在講題目之前,先來講講解這些題目所需要的一些工具,有一些工具可能是我們比較偏愛的,但是你也可以用其他的同類型的工具,都可以,這個沒有一定非得要用哪個工具去完成調試、抓包這些任務。

      web版編譯工具的話,剛開始比賽的時候有一些國外的同學過來問我們說他們沒有IDA,怎么辦?其實IDA是有一個5.0的免費版本的,只不過是不支持反編譯長C維代碼,如果版權意識比較好的同學,可以選擇使用免費版本。當然我并不是在這里倡導我們使用盜版的IDA,我出于一個官方的立場,是絕對不能推薦使用盜版的。

      這個Hopper,我不知道怎么念前面這個反匯編工具,這個好像只是說Mac的,所以如果有用戶Mac電腦的同學,你們可以考慮使用這個反編譯工具,聽說是挺好用的,但是我本人沒有試過。

      接下來這個snowman,我不知道有多少同學知道,這個工具是支持生成偽代碼的,可以不依賴于IDA直接工作,如果你實在是版權意識比較強,希望享受F5的待遇,snowman可能是不錯的選擇。

      接下來這個應該打CTF的同學都應該知道,但是我其實沒怎么用過它,所以我就沒辦法多介紹。JEB是PK的時候應該用的比較多,后來這個GUI的程序,也是一個JAVA的反編譯程序,挺好用的。

      調試工具的方面,提供選擇的面也是蠻多的,有OD、inmulity,由于前兩個Oldydbg inmulity都沒有支持64位windows,這個是支持64位的,而且我看到他們最近的開發進度也非常快,我們也可以關注一下,這個可能是我們最常用的,特別是在我們調系統和各方面必不可少的調試工具。GDB我相信用過windows或者是Unis的同學都應該比較熟悉,因為CTF里面出現比較多的題目應該都是需要GDB去調的,IDA本身也有一個調試支持的功能,都是可以用的。

      除了前面所有這些調試反編譯工具之外,抓包的這部分工具也比較多,各種各樣的,這里提供了一些選項給同學們。其他的類似工具我覺得比較有用,而Cooker是一個虛擬的分析系統,特別是你把一個APK、ESE提交到分析平臺里面去,會給出一部分比較詳細的分析報告,當你有時候在分析的時候是比較有用的,因為你比較直觀地得到一些分析報告。

      這個工具套件我相信對windows有接觸甚至沒有接觸的老用戶都應該知道,它是微軟出的一套官方的工具,里面包含了進程監控以及行為監控、進程管理器一些很強大的工具。

      這是后面的一些工具,就是Netcat,這個工具就是NC,我們通常所知道端口監聽,連端口的時候經常要用到的。然后salcat就是轉發端口,這個時候就比較有用了。

      這個工具比如說在求解一些線性規劃或者是其他很多求解類題目,是比較有用的,你指定了約束條件讓它跑吧,可能就比較容易求解了。

      這個是我在這次比賽里面看到同學們的解題思路才知道有這么一個神器,我不知道怎么念,它也是一個有點兒像mitlab的這么一個元件,可以求解很多像離散對數、離散數學很多東西它都可以做,就是離散數論的一些計算它能做之外,其他的功能也很強大,推薦都去了解了解。

      教授這里有什么地方要補充嗎?

      王宇:我覺得可能每個人都可能有一些用得比較順手的小工具吧,也就差不多是這些吧,可能最多再有一些插件,包括我相信每一個選手都會攢一堆特別好用的腳本,每個人都有一點兒擅長的東西。

      楊軍鋒:那教授剛才也提了一些插件什么的,都挺有幫助的,謝謝教授的建議。

      接下來這道題目,第一道入門的題目是Mac,為什么出Mac?教授說一說。

      王宇:第一道論文題目就是Mac的嗎?

      楊軍鋒:對,Mac64位的。

      王宇:就是藍屏的那個?

      楊軍鋒:不是,這道是查理的那個。第一道題目因為畢竟是入門題,我們對選手的預期是比較低的,不管你懂不懂逆向,我們都覺得你應該可以做出來這道題目,因為畢竟是入門題目,我還認為是比較簡單的一道題目。所以很多同學剛拿到第一道題目的時候,問我是不是沒錢就做不了題目,不是這樣的,沒錢也能做題目,我們都是沒錢的人,所以不是說沒有錢就做不了這道題目。

      另外這道題目其實由于太簡單了,所以靜態分析已經足夠了,不一定要動態地去調試。當然你可以動態調試,如果你有錢,有Mac筆記本,可以動態調試,即便沒有Mac筆記本,搭建一個虛擬機去調試也是可以的。

      這道題目就像剛才的,用IDA或者是snowman去反編譯后,就基本上能看到只有幾個函數,我相信你很容易能找到關鍵點,你就一個一個函數去翻,看到有一個地方有易貨,就是它了。這個函數不在正常的執行流上面,你正常執行可能走不到這里來,你可能發現幾個函數,一個一個翻之后發現這里有輸出,這里有易貨,出于常年打CTF的慣例,應該已經意識到這里有問題了,那這樣就比較簡單了。

      很多同學就覺得在標紅框的這句話里面會有一點點困惑,不知道這里是怎么計算出來的,我在這里簡單講講。這是一個開始,一個函數地址減去另一個函數地址,這個值其實是固定的,你只需要找到這個函數的地址之后,人工算算,算一下這個結果是多少,再移位,移完位之后再易貨,這個全局數組的第一個字節,事實上你就已經拿到了V2。這里還有一個函數,你會發現你不需要去關心它到底是干嘛的。

      接下來你看到的就是一個典型的解密流程,為什么你知道它是解密流程?后面有一個fanao allput,已經知道這里有一個最終的輸出,就是輸出解密結果。

      我也看到當時很多提交題目的同學們,把這個全局字符數組的第一個字節好像是一個A還是V,就把它當成了郵箱地址的一部分發來,一直沒有收到我們的回信,覺得是不是出問題了。其實這里你要留意這句最后的輸出,你會發現輸出是從第一個,索引是1開始輸出的,這里有一個地址,這里是以索引為1的第一個字節,如果從1開始計數是從第二個字節開始輸出。

      所以這道題目比較簡單。

      剛才為什么我們第一道題目會是一個Mac題目,我在這里補充一點兒,因為我們現在大量的辦公機器都是Mac的,包括我們滴滴里面很多同事,大部分同事都是用Mac辦公的,Mac安全對于我們來說是一個很重要的部分。所以不管是我們內部防護,還是在研究方面,我們都認為Mac是一個不可忽視的平臺。因為有人用的地方,它就會產生信息,產生信息就會有價值,這些有價值的信息是需要我們保護的,這是我們第一道題出Mac的考慮。

      楊軍鋒:王宇老師是對于windows、安卓、Mac平臺都有比較深的研究,屬于非常優秀的專家,不知道他對第一道題目有什么看法。

      王宇:第一道題是一個入門題,我相信可能不需要太多的訓練都能把第一道題處理出來。剛才軍鋒同學說的我覺得是這樣的。

      我印象比較深的是2015年,有一個比較大的事件,就是美國的新地平線號探測器,它飛躍了冥王星,花了9年時間,48億公里,NASA是當時很興奮的一個機構,它在世界網絡上瘋狂地放各種冥王星的照片,甚至每天都是在以照片直播的形式直播近距離看冥王星。

      你可以看到NASA看到內部慶祝的照片,他們所有的工程師幾乎99%都是在用Mac book的機器。從這些照片去分析,你就可以推測出某些特殊的機構,或者是在某些趨勢,已經是重心開始慢慢地由傳統的PC向Mac平臺和移動平臺轉移。

      所以安全這個東西應該是有前綴,它的前綴應該是計算機安全,所以它應該是依附在計算機產業鏈的鏈條上的,應該是隨著計算機熱點的不斷變換在變換的。

      我覺得各位同學也不應該把自己局限在某一個很窄的領域上,應該是見多識廣的多面手,我相信這樣更受企業的歡迎。

      所以第一道題和我們這次的出題考慮,雖然沒有漏洞相關的題目,但是可能我們盡量讓平臺更豐富一些,有移動的、安卓的、Mac的、web的、windows的,應該來說有這方面的考慮。

      楊軍鋒:好的,那我們就先開始講Android easy這道題目吧,由于翟老師不在,我在這里簡單給大家講講這道題目。Android easy這道題目真的就很easy,真的很簡單,非常簡單,以至于我覺得不用花太多的時間跟大家說。因為你直接反編譯之后,看到的就是跟原碼差不多的,完全一樣的這么一個代碼,我們會看得到在這里非常簡潔,第一就是易貨兩個數組。

      你看到中間有這些,其實這頁PPT是翟老師寫的,后面這些像偏移這些都不用看,你直接把兩個數組給易貨完之后,然后把所有字符打印出來,你發現里面就包含著key,把這個key交過來,這道題目就OK了。

      接下來講這道windows題目,很多同學拿到題目第一個反應就覺得這涉及到windows惡意木馬的題目,確實它長得比較像惡意木馬,長得像word,你雙擊它,突然就不見了。所以把一些同學給嚇到了,真是不好意思,我們這些題目全部都是比較干凈的,不會侵害你的計算機,所以不用擔心。

      這個題目背景是這樣子的,現在當前的APTE以及大眾化這種黑客集團、軟件這些界限在不斷模糊,以前很多時候我們覺得APTE會用高端的技術來做攻擊,比如說漏洞,高端的利用去打一個企業,現在你會慢慢發現有一些APTE集團開始用一些釣魚的手法,你看起來很低端,但是很管用。因為一個企業里面有幾萬人,只要一個人中招就可以了。

      所以這些看起來粗糙,但是成本低,收益大的,這些手法,像現在的紅攻擊,你在很多地方慢慢發現,十年前曾經很火爆的紅病毒,現在有重新泛濫的趨勢。那像這些PE文件值長得像一個文檔的攻擊手法很低級,但是確實到今天為止,還是管用的。

      所以這個程序就是一個整個像word文檔,雙擊就會打開一個真正的文檔,就把這個刪除了,接著是一個Payload來運行,完全就是惡意軟件的套路,但是只是一個比較友好的惡意軟件。這個惡意軟件在UPS外面扎了一層混淆,其實不是兩層殼,你可以理解為兩層殼,為什么要扎入一場混淆呢?因為我怕很多同學直接就用UPS解壓文件,直接就拿到了,根本就不用動手脫殼,不用調試器怎么去分析。

      同時里面有一個很小的反調試的功能,只檢查PEB的級位,這個位置,如果發現正在被調試的話,就篡改掉默認進程堆,這會導致堆函數里面,離真正原始的反調試的點比較遠,這樣同學比較難去定位,這是故意惡心人的。

      怎么去解這道題目呢?脫殼和不脫殼都是可以的,怎么去避免反調試呢?Ollydbg裝OD這個插件就具有的反調試功能,如果你不知道怎么安裝,那我今天直接去吾愛破解上直接拉吾愛破解專版,這個插件也集成了反調試的一些功能,我看很多同學直接用Ollydbg,根本就沒有去碰反調試的那一塊代碼。

      接下來怎么辦?你可以脫殼,然后把它弄出來,用IDA分析,也可以在關鍵函數,比如說你會用行為監控發現它會寫一個文件,會打開一個文件,你在關鍵函數上殺一個斷點,等它斷下來的時候,可以dnp這個程序出來進行,或者是你直接就在調試器里面調試也是可以搞定的。

      這個主要邏輯就是釋放一個文檔,釋放一個DOCS文檔,并且打開,然后把字符復制到臨時目錄底下,然后創建一個進程,啟動一個新的實例,最后刪除原始的拷貝。

      接下來就是下載Payload,就是像圖片一樣的東西,使用IC4算法去解密到JPG,解密完之后,在這里執行,然后在里面還會有一個單字節易貨解密,最后解密完之后,就把這段削殼,那段其實是面向sbori的削殼,執行之后就彈出一個框,里面就都會有的那個key。

      這里面有一個坑點,就是在Payload前面的四個字節其實是個時間戳,這個時間戳如果在1800秒之后,當前的時間戳大約這個圖片要是Payload的時間戳1800秒以上,這個Payload就不會被執行,你如果去詳細分析的時候,就會發現這里有一個坑,然后把這個坑跳過去,接下來你的代碼就可以直接執行這段belou,最后拿到key了。很多同學說這個key事實上出題人是做了一個反向混淆,中間插了H,但是其實不是,由于它是一段代碼,所以有一個push,就是H,這是匯編語言的push指令,并不是我故意去混淆的。

      下一道題目是教授的Panic題目,把時間交給教授。

      王宇:隨便弄了一道 Mac 驅動的Panic題目。我覺得任何一個想從事內核開發相關的同學,首先調試環境,還有內核調試工具,包括調試的手段,這些東西都是一個逃不過的話題,無論你去打算做內核開發還是做用戶開發,這個話題或者是這個時間的投入是成長必不可少的階段,是逃不過去的。

      我認識的很多同學都是機器上一堆環境,首先是一堆機器,機器上都是一堆環境,就是調試環境,這些都算是簡單的,因為廠商會默認給你做一些支持。但是反過來,如果大家以后想做安卓 root或者是iphone的越獄,你會發現那些環境的調試友好程度是更加不友好的,可能在系統上是不會給你有一個內核級等你的調試器連上來,也不會給你提供符號或者是原代碼。

      這些系統可能都算是最強健的系統,如果大家想搞一些更冷門的東西,比如說像車載的系統調試、手機基站通訊的調試,這些東西的調試難度和調試環境的搭建、模擬,包括像一些思科專屬設備的mix指令和一些專屬設備的調試,可能會更花時間。

      所以我們在這邊簡單地考察了一下,假設一個學生從來沒有接觸過Mac,他從零接觸,到把調試環境搭起來大概花多長時間,可能這個時間的花費要在三個小時左右,這是給大家預估的成本。

      結合第一張圖,Mac系統調試的時候,我們可以看到第一張圖,我弄了一個10.11的系統,LIDB是可以把這個系統斷在加載階段,這個時候系統啟動它的,如果我們愿意的話,可以把它斷下來,如果內核是自己編譯的話,那就可以做相關的登錄。

      下一頁是這道題目的本身了,這道題目的解法是真的沒有太多的難度,因為我是告訴大家,只要加載就一定會crash,只要crash,內存里面一定會有key的信息。

      所以我們看到的至少玩這個題的解法有三種,另外為了降低難度的話,這道題其實是放出了所有的符號,既然有符號,靜態分析的難度是很低的。很多同學已經在代碼中找到了做易貨的函數,因為key的格式基本上是公開的,前面是一個生成的哈希值,后面是一個@滴滴出行結尾的域名,你直接去找@,還有.com這種關鍵字,其實很容易就能把這個郵箱的key給枚舉出來。所以我看到大部分同學,可能是90%的同學都是用枚舉的方法做的,但是大概也有三位同學用的是大環境去做的。

      其實你只要把環境搭起來,從第二張圖可以看到,直接在滯塵器里面搜一圈,發現至少是前幾個很可疑,每一個都去內存看一眼,就可以找到了。

      這是靜態的方法和動態的方法。

      另外還有一些同學用的是創建了一個pradonp,然后從中間搜這個特征,這也是一個很好的方法。我相信一個人對這個理解和用的手段不一樣,有靜態簡易的方法,也有動態稍微難一點的方法,雖然動態的方法會至少花三小時的時間,但是這個時間我個人認為是值得的。

      再下一頁,我截了一個調試的截圖,一個全黑的頁面,就是LIDB,這個圖如果大家熟悉undibge的話,再看這個會覺得很簡陋,非常簡陋。

      第一,它連個密令行的輸入窗口都沒有給你,你想在這邊輸密令是不太現實的,這個是LIDB在密令行里輸JY跳出來的默認界面。

      第二,這個界面對于byneri級別的調試支持其實是做得非常爛的。比如,我們在最右邊的cosdek的里面,看到戰爭的第0層,連byneri地址都不給你顯示,只是默認顯示原代碼。

      最大的一個問題是它跟nousceoul調試相比的話,windows現在看來真的是越見良性,給你做了大量的工具是免費的。

      另外,它還做了上百條內建的building的conmad,你可以輸入簡單的感嘆號××004327系統就能直接幫你解析符號,只要能找到對應的single,能幫你解析符號,能幫你去辨明內核的數據結構,能幫你把內核的數據結構按照相對可讀的格式給你打出來。

      實際上這件事情已經幫大家省了非常多的時間,但是可能你會發現在××004349沒有太多人幫你做這件事情,特別是××可以看到蘋果對于Mac的內核開發是非常不友好的。

      這個是給大家簡單地展示一下調試大概是長什么樣。

      這個調試環境已經非常簡單,如果大家以這個為起點的話,再去看iphone的越獄,你們會發現調試的友好程度可能會再往下一個量級,無論是從符號的支持、加密文件如何做解密,還有調試密令,包括像友好程度,挺考驗選手們的耐心和實力的。

      我的幻燈片前三頁已經講完了,最后一頁其實是做了一個截圖,是想說一下那道題目有一個附加的小問題。Panic其實是很簡單的,你只要一加載,過一小會兒,這一小會兒可能是幾百個毫秒,這個系統就Panic,就藍屏重啟了,但是它的原因是什么?

      如果是他想回答這個問題,想得到這個題的附加分,可能需要的背景知識有:

      第一,搭建一個調試環境。

      第二,可能需要動態調試一下這個驅動,大概是在做什么。

      第三,如果調試這個驅動去看這個驅動的時限的話,就會發現這是Mac平臺標準的發System Callstack驅動,可能是需要知道一下Mac的文件系統是怎么做回調這件事情。如果大家熟悉windows驅動開發的話,mini showter driver整個的設計其實是非常講究的,微軟20多年、30年的設計迭代了好多版,現在這個mini foot的設計其實是非常漂亮的一版設計。

      比如,以第三方做showter driver的方便程度來講,我說的第三方可能是指殺毒軟件廠商,做硬盤加密的廠商,還有做磁盤還原、過濾、影子系統的廠商,這類廠商在做產品架構的時候,微軟已經幫你考慮了很多事情了,很多事情都需要你做,但是反過來,在Mac Cernol給你callstack的條件是非常簡陋的。你可以看到從2003年到2017年14年間callstack的代碼都沒有怎么更新過,這件事情在windows cernol其實是不可思議的。

      我覺得比較奇葩的一點,你作為一個文件系統的回調,至少系統應該告訴你這個文件應該被創建或者是打開,但是真正去看這個Mac的文件系統規律驅動的時候,你會發現Mac沒有把文件創建的事件作為一個回調發給你。我想作為第三方開發的人,一定想要區分出什么是文件的創建和什么是文件的打開,這是一個很關鍵的問題。怎么做呢?可能只有自己寫代碼來做了,既然Mac沒有給你提供任何的幫助,那就只有自己做了。

      所以我在第四頁的截圖,左邊的截圖是我自己寫的內存的打印,我downp了某一個函數入口的RPP所有callstack的信息,通過解析這個信息,我們能找到每一層callstack的戰爭和防御。右邊就是我在驅動里面集成了一個disdome的引擎,我會訪問我想關心的內核函數。

      我在這邊列了兩個,每一個都列了前多少個字節,沒有列太多。

      第一,反匯編OSKEXT Start這個函數,這個函數是所有驅動加載的函數。

      第二,VM Open,這個東西是屬于文件系統的處理函數。

      也就是說我如果結合左邊的圖去downp callstack,解析戰爭,再結合右邊的圖去反匯編,我能把整個文件系統的callstack調用站,我所有負函數至少能識別出來。這個時候再去結合負函數里面找一些特征。

      比如說文件的操作,負函數里面有一個調用,里面帶著參數的Fnode,如果置不同位的話,表示的含義是不一樣的。比如說2是表示創建,0是表示打開等等。如果我能定位到它,并且我能解析當前文件實踐Fnode的值是多少的話,實際上我就能區分出這個行為到底是一個文件的打開行為還是創建行為。但是這個過程理論上應該是操作系統幫你做,但是如果操作系統沒有幫你做的話,你就得自己來。所以我其實是在這邊演示了一個怎么自己來的一個代碼。

      再回到這道題目的附加分,為什么這個系統藍屏了?如果能把這些東西都簡單摸一圈,它的答案應該是在31次文件操作的時,并且當前的文件事件是一個qufir操作。

      這就是整個出題的考量和題目的細節。它可能會比較花選手的時間,特別是如果選手不熟悉的話,但是實際上真的去花一點兒時間折騰系統調試,我覺得是值得的,并且相對來講是比較練內功的。

      我上大學時,有一位老叫張銀奎,他剛開始寫他那本鴻篇巨著《軟件調試》的第一版,那時候我是上大三。當時我是主動跳出去幫他看看,幫他打雜。實際上我真的去審校這本書的時候,我發現里面有非常多的細節,他那本書更多的是在windows Cenol,因為他本人是英特爾的,他可能集中在英特爾CPU。

      如果大家再去工作中結合Mac等等,實際上內功的修煉還是逃不了的。剛才有同學在直播間里說一方面可能需要廣度,另一方面深度怎么做呢?每一個點的積累都是值得花時間的。

      劉瀟鋒:我們確定出來一共有四列的時候,就可以在腦子里面構想一下這個 flag 所在的這張表大概是一個什么樣的結構,用我們現在在界面上看到的這樣一些東西。我們有四個標題,每個標題里面有內容,標題里面可以通過ID這個參數知道肯定在這個表里有一個ID。flag應該是在第四列,因為總共就只有四列。所以我們就畫出了像PPT里面的這樣的一張圖,flag大概是在這個里面,我們需要在這里面注入出來。

      剛才前面是限制了空格、逗號、引號、斜線,當然這個對于大家常搞四核注入的人來說,這個比較容易繞過的,不允許空格,我們可以用萬字實錄:從DDCTF大賽看當前網絡安全新趨勢 | 雷鋒網公開課總結文+視頻(上篇);不允許逗號,可以用join的形式,我們需要多少字段可以用join構造出這樣一個字段數;如果不允許引號的話,可以采用十六進制編碼。

      有了這些手段,基本上可以去實施了,因為在測試時沒有發現關鍵字被過濾,所以可以嘗試一下,先使用聯合查詢注入這樣的方式,接下來的注入方式其實很套路的,就是利用masacal系統表、information sikima這樣一些庫里面的表的字段。

      首先第一個語句,就是把數據庫的名給注出來,我做了一個處理,就是把所有的0a,之前說空格是過濾的,但是我們用0a來做間隔符,但是為了方便大家看PPT,我就把0a又改成了空格,實際上大家測試的時候還要換成0a的。第一個語句就是把數據庫注出來,中間有一個十六進制編碼,解析出來就是information sikima,就是說我們先獲取這個數據庫里面到底有哪些庫名,把information這個系統庫先給排出去,這個是很常見的思路。我們注出來一個結果,比如說數據庫名是T1。

      接下來我們再用table name這個表把表名注出來,這也是很常規的方式,就是news。

      接下來再注字段名,是用callum name這個字段來注出來,是secret。

      這樣我們就還原出了之前我們這張表格里的flag所在字段的字段名是secret。

      接下來就是很顯然的,我們會去構造,從某一個庫、某一張表提取某一個字段,這樣我們就可以把flag拿出來了,當時這里有坑,這道題的坑就在這兒,把secret的字段也給過濾了。所以說可能做到這兒會卡一下。其實你去仔細想一下,或者是精心構造一下,就可以繞過這個限制。

      這里面有兩種方法。

      第一,盲注。我可以不知道flag具體是什么,但是我可以用union的方式去構造一個字符串,和flag做一個比較、排序,根據前端頁面的顯示,我們會發現這個差異,這樣的話我們不斷地調整這個字符串,按字典序,我們就逐漸比較,就會把這個flag比較出來。這個可能需要大家用panson或者是PHP去寫一個腳本,跑得更快一些。

      第二,構造一個子查詢。大家看我的PPT,相當于是拼了好幾次,把這個flag的值給拼出來了。這里提醒一下大家,大家看最后一行為什么要這么寫?其實也很顯然,因為不允許逗號,我們不能寫逗號,只能用這種方式寫,這個時候flag就注出來了。

      楊軍鋒:接下來這個題目是Android Normal,很多同學要求重復講一遍剛才的注入題目的第一頁,你把剛才那一頁再跟同學們講一下。

      嘉賓:OK,第一頁其實沒有什么,就是題目的一個介紹。

      因為我們在線題,你肯定要訪問一下我們的頁面,我們會看到頁面上顯示了這幾個標題,每個標題是一個超鏈,你點進去以后會看到下面有一個針對這個標題的介紹,就是類似于這個標題文章的內容,最下面是flag,點進去,這個flag本身就是標題,flag is here就是這個文章的內容。但是這個頁面里面并沒有flag的值。

      所以我們找到了這個注入點,就是news,叫php ID=4。

      接下來我們要測試它有沒有過濾特殊字符,我們測試完了發現單引號、雙引號、斜線、空格都過濾了。

      第一頁就是這些內容,接下來我們用all derby去判測出原始的secal語句里面到底有幾點,查詢出來的內容有幾點。因為union查詢這個大家應該都知道的,子查詢里面的列數和前面的原始查詢的列數是一樣,才可以在數據庫當中成功執行反饋結果。

      翟津?。?/span>跟Android easy一樣,Android Normal就是用C++寫的,所以思路也是一樣的,看到第18到21行,就是XOR的操作,23行開始是一個outside,就相當于JAVA里的outside,向右移了一位,然后把第一個取出來。24行就是說在不停地找最后一個end,end就是一個0,就從頭到尾把這個key取到,這個是Android Normal的題。

      楊軍鋒:翟老師,你出這道題目,我們也是希望安卓平臺、windows平臺、Mac平臺都希望每一個平臺都有,使得我們題目的豐富度會更高一點。

      下面一個題目是web題目。

      劉瀟鋒:這個XSS題要比cecal room那道題難一些,做出來的人也少一些,大概20個人左右,這道題其實主要是考了一下CSP頭,就是HTML5平時持的那個內容安全策略投。

      首先這也是一個線上的題,大家訪問了這個題的頁面,會看到有一個Message Board,就是一個提交信息的界面,就是聊天吧。

      下面有一個verification code,就是說驗證碼還要提交,這個驗證碼大家看一下,挺復雜的,這個驗證碼需要我們填寫,做了一次MD5,又做了一次字符TRY5的截取6位以后,要和那個相等。

      這個目的其實也很明顯,因為XSS的題大家常參加CTF比賽的同學應該都知道,它一定是后臺有一個程序在跑,你提交給他什么東西,他帶著管理員的cookie去用瀏覽器訪問,一定是在做這樣的事情。

      所以做了這樣一個驗證碼的限制,實際上也是讓大家別頻繁地這么刷,降低瀏覽器開啟、關閉的速度。這個我本地測試過,我Mac是I7的處理器,算這個碼,其實有些碼還是要算一段時間的,快的話可能一分鐘之內就會出結果,慢的時候可能兩、三分鐘甚至十分鐘可能才能創出MD5這個哈希值。

      我們現在回歸正題吧,下面的這個腳本大家可以看一下,這種腳本很容易做了。我們用瀏覽器調試功能就可以看到這個頁面在返回的時候有一個CSP頭,這個CSP頭設置的default-src是self,script-src也是self,默認和腳本狀態下只允許加載本域的資源。

      但是CSP由于是一個非常新的規范,也就是近幾年才開始推廣開來的,所以說它存在著一些問題,主要是不同瀏覽器對標準的支持是不是跟得上最新的標準,支持上有一些問題。

      所以說這道題其實也是利用了chrome瀏覽器對CSP頭的一個bypass。

      其實大家在網上可以看到這種bypass、CSP頭的方式,這道題可以利用link這個標簽,REL屬性設置成預加載的時候,是可以訪問外域的,是可以向外域請求資源的。

      我們用一個在公網上的VPS監聽一個端口,這里面舉例就是7777這樣一個端口,然后把這個link標簽在Message Borad那個地方提交上去,提交上去以后瀏覽器一定會帶著管理員的cookie打開瀏覽器訪問頁面,這個頁面里就是你輸入的內容,你輸入的內容就已經被echo到這個頁面里了,是一個link標簽,相當于瀏覽器會自動地加載這個link標簽訪問那個地址,那個地址是你設置的VPS的地址,這樣的話VPS就聽到了這個請求,在referer字段里面打出了這樣一個信息,這個referer就是指示了瀏覽器在訪問這個link之前所在的頁面是什么。

      這里面值得關注的就是有一個哈希字段,這個時候大家就可以思考一下,這個哈希字段是做什么用的。其實就是它用來標識每一個用戶每次提交的Payload的位置,你訪問這個地址,帶著哈希,就會執行哈希對應的Payload。其實我們可以在本地瀏覽器里面訪問一下referer里面的請求,我們會發現它就正好是我們剛才提交的Payload,我們就會在我們的瀏覽器里執行,但是我們的瀏覽器里面只有我們自己的cookie,沒有管理員的cookie,所以說我們沒有拿到flag,這道題我們猜到flag是在管理員的cookie里。

      這個時候我們發現CSP頭里面沒有支持腳本的內聯執行,也就是說我們在提交的時候塑造的內聯JS腳本是沒有辦法執行的,這個時候我們再結合剛才的哈希,我們開開腦洞怎么繞過這個限制。

      我在下面直接告訴大家結果吧,我們可以通過二次攻擊。

      第一次,我們把一個JS腳本提交上去,提交的同時我們用link標簽把這次提交的哈希值從referer里邊帶出來,大家看一下頁面上的這個截圖,我們提交了link標簽和下面的Location.href,提交這個字段,由于link標簽打過來的哈希值我們記錄下來。接下來再去提交一個script的標簽,script標簽的sals字段就是剛才的referer里面記錄的地址。

      這樣的話我們第二次提交的時候,后端會調用瀏覽器去加載這個script標簽的sals的域,加載的時候正好是我們第一次提交的JS代碼。這樣的話我們沒有做inline的操作,我們沒有內嵌inline的JS代碼,我們是用外域加載,而且這個外域還是在我們的self的限制范圍內的,所以說這樣我們就實現了一個在CSP這個限制策略下把我們的JS腳本執行起來了,執行的時候就會把cookie也帶回來,帶回來發現是一個64的編碼,我們解碼以后發現是這樣的,上面寫著set cookie、flag,還有flag的內容,有一個時間戳,后面是pass,因為cookie有一個路徑。

      我們發現這只是這道題flag一個位置的說明,告訴我們這個cookie在當前的根目下是拿不到的,必須要在T2,這個flag is here這個路徑下才能拿到cookie。我們就想辦法怎么去讓我們的頁面到這個目錄下,然后把cookie拿過來以后再傳過來。就是構造下面截圖當中這樣一個Payload,就是動態創建一個iframe的標簽,這個iframe標簽的sals字段就是剛才說的那個存放cookie的目錄。由于它們是在一個同域下,不存在跨域的問題,所以我們可以在當前域去通過瀏覽器對象獲取到我們創建的iframe標簽里面cookie。

      大家可以看一下這個Payload,我們通過兩次提交,第一次提交的時候把我們接下來要執行的JS腳本先提交上去,換回了這個哈希值,再構造一個script標簽,這個標簽的sals屬性就是剛才的那個referer,這樣的話第二次再提交的時候,瀏覽器帶著管理員的cookie去訪問這個地址,間接地就訪問了剛才動態創建iframe的腳本,這個腳本在iframe的內部是目標路徑,在這個目標路徑下拿到cookie,然后再通過iframe傳到當前的腳本里,再給我們反饋回來。大概就是這樣的流程。

      最后的結果就是截圖里面看到的get后面這樣一大串,這里面就把flag給帶出來了。

      楊軍鋒:接下來這道題目是教授的,很多同學對這道題目怨氣很大,我都理解,因為我對它也有挺大怨氣的。下面有請教授。

      王宇:為什么要有怨氣?

      楊軍鋒:因為太難了。

      王宇:這道題其實沒有太大的難度,可能就是題型會有比較多的東西,因為它是一張圖片做展示,里面肯定是嵌了一些文件,解密有一個密碼,反正就是比較雜,最后其實是一個Crackme算法的逆向。

      如果從頭開始說的話,13行代碼就可以完成前兩步的工作,主要是做一個解碼,把頭簡單修復一下,就能從圖片里面找到了,當然得定位到文件的偏移了,就能從這張圖片里提出一個壓縮包,壓縮包是給了一個密碼提示,解密完之后就是一個標準的Crackme算法的破解題了。

      這道題目拿到了Crackme的程序,實際上如果大家之前看Crackme大賽,你會發現這道題目已經是難度降得非常低了,它既沒有復雜的算法,因為幾個標準的東西,MD5、RC6和VES這些東西,沒有復雜的算法,也沒有加殼,我沒有選擇加殼,也沒有加venpratict這種變態虛擬機殼。理論上只要熟悉算法的話,花的時間應該在兩個小時左右。

      改的東西是仁者見仁,智者見智,因為這種算法里面可改的地方太多了,我只是隨便挑了幾個點做了一點兒小微調,但是我做什么微調呢?作為想解題的人就得做一個逆操作,這樣的話才能把這個算法給解出來。

      微調是幾個地方:

      第一,MD5里面的init表里面的初始值,這個改實際上對于題目沒有任何影響,拿它當黑盒就可以了,根本不用關心我這邊改了什么東西。

      第二,2、4、6至少變了左移這些東西,左移的位數,包括像矩陣復值的順序。

      第三,AES的算法變了置換表的內容和虛化表的內容,我如果把這些表的東西都給變了的話,反過來查表的方法這個函數可能我也得重新寫一下。

      第四,4×4矩陣,我把里面的初始值也給變了,做了一下位移,我記得好像是左移了一位。反過來想去解題,解出key的人,所有的操作都得實際操作,我做了左移,他們就得做右移。

      其實我覺得只要熟悉這幾個算法的人,理論上是可以對比標準算法的生成邏輯,花點兒時間寫一個腳本去跑一下我變了什么的逆邏輯。其實能看出規律的,因為我左移一位,大家右移就好了,這樣的話就能把所有的東西還原了,這就OK了。

      當時寫得還比較倉促,還出了bug,因為這個代碼實際上是我2009年、2010年甚至是2008年那會兒寫的東西,好久沒有維護了,只不過這次是把它捆在了一張圖片里面,這個可能是想讓大家多一些樂趣的地方。

      我記得有一次我在藍蓮花參加的一個比賽,他們的圖片很變態的,嵌了很多玩意兒。這個題目其實真的沒有太多的點,我覺得想要高難度還是最后津健老師給大家展示一下流利的英文演講。

      楊軍鋒:其實教授剛才講的這個,他把關鍵的代碼已經貼在這里了,教授給大伙講講哪一個地區你做了變化?

      王宇:我所有貼出來的地區都做了變化。

      楊軍鋒:好的,那我理解了。

      王宇:貼出來的link我是在網上隨便找的,因為都是標準算法,那三個link都是標準的link,我變的就是這些地方,如果想去找dif的話,就在這些地方找就好了,實際上沒有幾處。

      楊軍鋒:同學們都看見了。行,有一些同學會問,如果他們沒辦法識別出來這個RC6的話,那逆回去了難度是不是很高?

      王宇:這是一個好問題,其實當時為了故意沒有這樣的難度,我隱藏了一些東西,比如說像有些key的生成故意沒有寫init的函數,然后把init的結果直接寫在代碼里了,做了一些最基本的特征隱藏。但是這一類的東西如果大家熟悉IDA的話,因為DIA官網每年都有IDA插件的評比,有很多插件得年度冠軍的插件,通過bineri級別、相似度去識別你代碼里面用了哪些庫,如果大家用那個庫去分析這個程序的話,他能非常輕易地識別出你的代碼里面有多少代碼和RC6的代碼重合度非常高,相似度可能達到70%、80%、90%,實際上這個算法的識別就跑不了了。AES理論上如果大家熟悉工具,這道題目的解題應該很快的。

      楊軍鋒:好的,這道題目還有別的補充嗎?或者是有什么延展性的?對解密這塊你有沒有什么東西要跟同學們講?

      王宇:這些都是基本功,看雪那本書《加密解密》我覺得可能大家都是看得比較早的幾本書之一了,工作中未必能用到,但是這些知識是應該需要掌握的。所以可能把幾個串起來,再捆上一些圖片逼著自己看一眼,如果能扛下來,這也是一個進步。

      楊軍鋒:好的,我們這道題就到這里了。web題還是最受同學們歡迎的題目,這道題是web題里面最難的一道題目,還是由又帥又瘦的劉老師來跟大家講解一下。

      劉瀟鋒這個題出的時候有沒有告訴大家這是一個代碼審計題?

      楊軍鋒告訴了。

      (由于篇幅限制,想看接下來的內容,請搜索下篇)

      直播視頻


      雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。

      分享:
      相關文章

      編輯、作者

      跟蹤互聯網安全、黑客、極客。微信:qinqin0511。
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 亚洲日本在线电影| 欧美国产日韩久久mv| 无码gogo大胆啪啪艺术| 3p视频在线观看| 久久涩综合| 国产老头多毛Gay老年男| 四虎永久在线精品国产馆v视影院| 久久人妻少妇嫩草av蜜桃| 周至县| 无码av中文字幕免费放| 中文字幕亚洲天堂| 久久婷婷五月综合色一区二区 | 88XV日韩| 久久亚洲v无码专区成人| 国模少妇无码一区二区三区| 国产精品lululu在线观看| 成人免费无码视频在线网站| 九九视频精品免费观看6| 无尺码精品产品视频| 富蕴县| 全黄h全肉边做边吃奶视频| 熟女AV在线| 国产九九在线| 91视频在线观看18| 免费人成黄页在线观看美国| 亚洲欧洲日产国码久在线| 日本中文字幕一区二区视频| 亚洲大尺度无码专区尤物| 欧美交性一级视频免费| 国产成人精品日本亚洲直播| 84pao强力打造永久免费高速高清| 国产精品久久毛片av大全日韩| 3P免费视频在线观看| 一本—道久久a久久精品蜜桃| 亚洲另类图| 少妇精品亚洲一区二区三区| 国产精品va无码一区二区| 亚洲AV午夜成人无码电影| 中文日韩在线一区二区| 一区二区三区极品销魂| 亚洲国产午夜精品理论片在线播放|