• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉,開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            網游木馬防御技術漫談

            Posted on 2010-01-08 17:42 S.l.e!ep.¢% 閱讀(318) 評論(0)  編輯 收藏 引用 所屬分類: RootKit
            網游木馬防御技術漫談
            2008年06月04日 星期三 下午 10:40
            大家好!首先講講網游木馬常用攻擊技術。第二,講講從開發商的角度,以較低的成本實現防御網游木馬的策略。首先是鍵盤記錄,所謂的鍵盤記錄是在在鍵盤輸入的時候木馬會把你的鍵盤輸入的信息記錄下來,網上流傳最廣、最通俗的方法就是安裝全局消息鉤子,從而竊取密碼。原來消息鉤子這種進入密碼的方法用得比較多,但是從2006年起主動防御的流行這類方法會被行為監控攔截,比如卡巴斯基這種主動防御就防這個。后來逐步地有一些黑客發掘出以前使用的比較少的被廠商所忽視的一種方法,例如圖片上舉到的這些(圖)。

            前面幾個安裝全局消息鉤子、GetKeyState、GetAsyncKeyState 、 DirtecX接口的方法是從用戶態實現的。原始輸出設備raw input用它來竊取密碼,這也是屬于用戶態的。鍵盤過濾驅動以及掛鉤鍵盤驅動的Dispatch例程等方法屬于核心態實現的。 Ppt中后面提到的所謂的Inline Hook是廣義的,就是我進行掛接的時候可以在Rin3上掛,也可以在Rin0下掛,我的hook可以掛在自己的游戲程序里面,從而獲取密碼,深入的話也可以深到話kbclass設備的回調函數。突破nPtotect保護也不難。

            第二部分是內存讀取。用戶輸入密碼后,通常情況下密碼沒有經過處理的話,有一段時間用戶輸入的密碼會以明文的形式存放在內存中,包括登錄游戲后,游戲中人物裝備等級等信息都可以從游戲進程的內存中讀取。

            第三是星號密碼獲取以及緩存密碼,比如在QQ或MSN上輸入密碼的時候,可以選擇記錄密碼的情況。 使用GetWindowText函數就可以獲取常規的星號密碼,當然對于具有密碼屬性的輸入框在GetWindowText之前需要使用SendMessage取消其密碼屬性。

            下面講到瀏覽器插件,主要用于獲取IE相關的信息,也可以用來突破HTPS。

            來看張圖片,小區域精確截圖(圖),這種方法可以應對許多種網游的保護措施,先安裝一個全局鼠標鉤子,對你鼠標點擊的時候,比如鼠標點擊這邊,事先算一下你的按紐的像素,把邊長除以二,以鼠標點擊的點為正方形的中心,從而以這個點截取一個正方形,面積最大的就是我們所要的密碼信息。小區域精確截圖的方法和圖象識別,從而可以把圖象信息直接轉化為字符。如果說比較復雜,圖象識別不了的話,黑客們常使用的方法就是發郵件,因為發郵件是可以以HTML的方式,從而可以把圖片嵌在里面,黑客收到信的時候,看密碼就一目了然。雖然是截取的圖,但是也能很清楚地看到。

            除了剛才講的這些,下面還有應用得比較廣的,例如封包截取或者協議分析,從協議的角度分析人物信息、用戶名、密碼。現在還是有一些比較厲害的人可以通過調試,逆向工程,結合ARP欺騙,對于非對稱密鑰加密的話,傳統的破解方法比較困難。但是在局域網里面可以結合ARP欺騙、偽造,實現相應的效果。基本上現在的木馬在對付非對稱密鑰加密的時候基本上是采用欺騙的方法。

            還有一些其他技術,比如一些猥瑣方法,談技術含量比較低,但還是有效果。舉一個例子,很久之前人家想到QQ密碼,他自己寫一個界面和QQ基本上差不多的,然后輸入之后,再把真正的QQ進程運行起來。這是被人鄙視的方法,要鉆空子的話還是比較多的。幾年前盛大對安全很重視,那時候推出的盛大密寶,但它那種對于真正想竊取的人也是形同虛設,但是那個可能比較困難,或者還需要入侵它的服務器,把相應的算法搞清楚。這是比較困難的,但是用得比較多的,現在很容易實現的就比如這張圖(圖),我們后面講的解決方案也會碰到類似的問題,對于盛大密寶使用的這些方法,我先簡單地把盛大密寶的使用過程講一下。

            在輸入用戶名、密碼后,它會又出現一個對話框,盛大密寶是以1分鐘為間隔。以一分鐘為單位,有一個函數,那個函數有兩個變量,盛大密寶的序列號做了變量,還有一個變量就是和時間相關的。以一分鐘為單位,會隨機生成六位數,但是登錄之后游戲里面就會隨機抽取三位,請你輸入盛大密寶,所謂盛大密寶就像U盤大小,中間有一個寫字屏,以一分鐘為單位,按照它的算法隨機生成六位數,游戲的程序比如說請輸入第一位、第三位、第四位,從六位數里面選三位數,讓你輸入第幾,這是游戲隨機的。以我們常人的角度看來就很安全,安全性很高。但是還是能被破解,原理就是這樣(圖)。

            比如這里有兩臺機器,這臺機器上面已經感染了能夠破解密寶的高級木馬,攻擊者已獲取初次登錄及的用戶名、密碼。攻擊者用已獲得受害者的用戶名密碼登錄。當受害者登錄游戲時輸入的用戶名和密碼已被木馬程序換掉,登錄另外一個無關帳戶。為什么木馬要在受害者登錄時把他的帳號密碼換成其他帳號呢,因為一個帳號不能同時登錄。這樣受害者輸入自己的用戶名、密碼的時候其實已經變成另外一個人的帳號了。他進去之后會出現一個框,要求輸入盛大密寶隨機生成的6位數中的3位數。而且3位數的序號是給定的,比如第一位、第三位、第四位的六位數。從六位里面選三位位置是隨機的。攻擊者登錄后出現密寶信息輸入框,比如說請輸入六位數里面的第四位、五位、六位。如圖,攻擊者只需在木馬控制端里輸入四、五、六,點完發送。此時木馬端收到信息后就會把受害者的第一位、第三位、第四位提示信息換成四、五、六位。這樣受害者就會輸入盛大密寶隨機生成的6位數第4、5、6位數字,這正是攻擊者登錄游戲所需要的信息。所以攻擊者就實現了破解盛大密寶保護的效果。

            因為黑客進入游戲之后防止他再重新進入,發現帳號正在使用,可以在我們的木馬端做一些手腳,攔截封包兩三分鐘內讓他上不了網,等他看看是否有一些有價值的裝備或者游戲幣,等處理完之后再讓他上線。或者暴力一點,就是直接終止進程。也可以掛鉤NtCreateProcess/Ex、NtCreateSetion,在一定時間內禁止次進程創建。

            從內存讀取的方法在木馬里面也是使用得非常廣泛的。在QQ稍微老一點的版本也是同樣存在內存里面。現在有一些網上銀行及游戲,他可能采用軟鍵盤,我剛才說的對付軟件盤通常有兩種,一種是截圖的方法,還有就是掛鉤TextOut函數,取得軟件中的字符,類似于金山詞霸的技術,也就是是屏幕取詞,用戶點擊點密碼時已經被屏幕取詞獲得密碼的字符信息。我這里講的是一些主流的,還有針對特定的情況有一些比較猥瑣的方法。

            剛才是從攻擊的角度進行分析的。現在開始講怎樣防御。考慮防御站的角度不同,比如游戲開發商是從自己寫游戲的角度。從第三方安全軟件開發商,比如瑞星、卡巴斯基,或者從使用者、網絡管理員,比如網絡管理員怎么樣從邊界防火墻角度怎樣進行相應的配置。現在我講的主要側重于游戲開發者的角度。從游戲開發商的角度和第三方安裝軟件的防御角度還是有區別的。因為如果是游戲開發商的話,他做防御是要小型化,主要針對我自身的特性。不像安全軟件可以做的很全面很龐大。 從游戲開發商的角度是怎樣做最少的事情取得自身游戲的安全性。

            我們先從基于主機的角度談一談。我們剛才已經粗略地了解了網游木馬的密碼獲取常用手段,對應地我們要將緩存密碼加密,自定義窗口類對相應讀取密碼內容的窗口消息進行處理,從而使它用傳統的方法獲取不到密碼。第二是防范按鍵記錄,雖然這只是簡簡單單幾個字,我是把涉及到的面講一講,同樣是一個防范按鍵進入,可以做得很淺,但同樣也可以做得很深。越深入底層公開的資料越少,操作的系統提供的現成接口比較少,需要自己做的比較多,所以難度系數增大,從而會寫的人就比較少,安全性就提高了。但是隨著防御越往底層做,雖然安全性提高了,但是穩定性也下降了。從理論上說,只要原理正確的,也是可以做到穩定的。但是因為這些東西是人開發的,由于水平、經驗,尤其是開發時間的限制,沒有那么多時間去測試,沒有時間經過多種客戶環境的考驗,所以想推出一個非常底層的產品級的、比較穩定的,時間會比較漫長。現在防范鍵盤記錄的一個比較底層的比較穩定的方法是掛kbclass中的KeyboardClassServiceCallback,兼容性也較好,兼容USB、PS/2的。

            原來QQ采用的是虛擬鍵盤,虛擬鍵盤其實也是一種成本較低效果較好的方法。但需要防御我剛才說那些密碼竊取方法,比如掛鉤TextOut的屏幕取詞以及小區域精確截圖。另外就是軟鍵盤中按鍵的順序要隨機生成,還有就是軟鍵盤在屏幕上出現的位置最好也要隨機,如果大鍵盤位置固定的話還是很容易被盜取。還有就是最好不用字符,用比較復雜具有較強干擾性的圖片,這樣圖象解析就比較困難,一般只能用截屏。我們現在已經知道的屏幕截取的方法通常是CreateDC和模擬鼠標按鍵PrintScreen鍵,所以只要掛鉤相關函數就可以防止截取。從產品可用性的角度,在輸入密碼的一分鐘之內對截屏功能禁用,這樣對可用性也沒有什么影響,而且避免了因交互式保護的煩瑣帶來的用戶體驗下降的弊端。

            還有一種是在網吧里比較盛行的基于ARP欺騙竊取整個局域網內的游戲帳號信息。現在網吧基本上都是交換機的,基本上都是通過ARP欺騙的方法,就可以破取局域網里面其它機器的分包,如果能把網游的協議逆向分析出的話,就可以破解獲取整個局域網里所有使用游戲用戶的信息。對于網吧和局域網用戶,防范ARP欺騙是很有必要的。

            網游木馬使用的各種密碼竊取技術都會使用到相關的函數,從基于主機主動防御的角度,對相關函數掛鉤實施行為監控即可防御相應密碼防御技術,如 NtOpenProcess、NtReadVirtualMemory、NtUserSetWindowsHookEx、CreateDC等 。其中掛鉤NtOpenProcess/NtReadVirtualMemory用來防范木馬程序讀取游戲程序進程空間中的密碼,NtUserSetWindowsHookEx用來防范安裝全局鉤子。另外還可以枚舉設備棧,對鍵盤過濾驅動進行檢查。 通常安全軟件中使用較多的是編寫驅動程序掛鉤SSDT,還有少部分inline hook。去年出現的比較多的安全軟件的驅動漏洞不少是因為SSDT掛鉤后的處理函數編寫不完善,所以實現行為監控功能時我們自己的處理函數也要寫得很健壯,防止漏洞的產生。

            對于防御ARP欺騙,通常采取NDIS HOOK或者NDIS IMD技術,截取ARP包進行分析,丟棄偽造的欺騙包。另外實現還應建立一個可信的IP-MAC庫,所謂的可信基就是在確保網絡沒有欺騙的情況下,確保其他機器尤其是網關的IP-MAC映射關系,先把它存起來,然后截取到ARP封包時與事先建立的可信IP-MAC關系進行比較判斷。還有一個是比較簡單的,就是用系統自帶arp命令實現IP/MAC綁定的,但是對于Windows2000應該是沒有用的,這點網上幾乎沒有披露,印象中只有flashsky以前提及過。因為Windows2000沒有檢查IP-MAC綁定是靜態的還是動態的,雖然進行了綁定,但只要有ARP請求/應答包,WIindows系統還是會把偽造的IP-MAC對應關系添加到自身的ARP緩存表中。ARP的綁定功能在Windows2000里面形同虛設。所以通用有效的還是使用驅動利用NDIS HOOK/NDIS IMD技術攔截ARP包分析過濾。


            有些情況下要獲取游戲密碼以及人物信息的話,最好到它的進程空間里面去,所以有很多木馬就把自己的dll先注入到你的游戲進程里面。但是現在許多安全軟件比如卡巴7、江民2008都采用的主動防御技術,而已防范常規的諸如CreateRemoteThread、SetThreadContext等注入技術。為了繞過主動防御以及實現自啟動,某些木馬利用了Windows一個簡單的系統機制,就是目錄的優先級, 具體講如果當沒有寫絕對路徑只是相對路徑,調用dll時,優先加載同目錄下的,然后才是系統目錄。比如在網游目錄下釋放一個kernel32.dll,kernel32.dll所有Ring3程序都需要用到的吧,所以只要你的游戲程序運行起來了,木馬釋放的kernel32.dll也就注入到了游戲進程里面。 所以防止其他程序在游戲目錄中創建相關文件也是比較重要的。關于具體的實現技術可以采用文件過濾驅動,甚至是Ring3下的全局鉤子。另外,Ppt中提到的輔助方案:“游戲主進程檢查自身模塊中除了自身dll模塊以及已簽名文件有沒其他dll模塊,有則強行卸載”,與剛才說的互補的,還是比較有效的。

            還有就是保護自身程序不被修改,因為當安全軟件越來越嚴格,可能盜號木馬無路可走時就以修改你自身的程序實現密碼竊取以及自啟動,所以對游戲自身的保護也很重要。

            剛才說的主動防御行為監控的方法可以在不需要特征碼的情況下實現通用的防護,但是和傳統的特征碼的方法相結合的話,往往可以取得更好的效果。而且自動更新也很重要,萬一出現一個從來沒有出現過的比較強的破解方法的話,應急小組知道這個情況,可以立馬對程序進行更新。所以Office文件格式的漏洞為什么比PDF漏洞利用效果好,指的是非0day,因為PDF會強行自動更新,Office的是手動更新的(正版用戶Office2003以及以后也會自動更新了)。

            我們剛才是從游戲開發商的角度講,所以他不可能就像卡巴斯基從安全軟件的角度那樣實施縱深立體防御,面面俱到。無論你怎么防,雖然說能夠很大程度地防御,但是還是有漏過的地方。安全防護和黑客技術沒有誰最厲害,你這個安全方案出現的話他完全可以鉆你的空子,尤其做產品不是純粹從技術角度出發,往往因為從程序的穩定性以及使用友好型的角度都會犧牲一些安全強度。 所以很難做到百分之百的安全,所以我們不妨換一角度,找一個可信基。比如現在因為手機的普及,可以將帳號與手機關聯,登錄以及修改密碼時需要綁定的手機回復短信確認。有些游戲現在與MAC地址綁定,我認為綁定的話最好綁定PC以外的,因為木馬程序已在機器當中,運用廣義Hook的這一強大思想機型偽造,都能搞定。所以我們從另外一個角度,不應綁定pc上的,脫離它,比如和手機綁定,如果修改密碼的話,它就會收到一條短消息,如果確認修改密碼請回復Y等類似途徑。對于虛擬物品的操作發短信通知用戶并詢問。當然對于虛擬物品操作可以嘗試采用T+1方式,預先登記然后審核確認。
            再就是動態口令卡,就像工商銀行的網上銀行。還有移動證書/Usbkey等。相對而言比較安全。但對于動態口令卡以及類似盛大密寶的保護措施,需要防御我剛才介紹的破解盛大密寶的那種思路。可以和基于主機的防御方法相結合。另外動態口令卡算法健壯性和驗證服務器安全性也很重要。

            時間快到了,先談這些,謝謝大家。
            激情五月综合综合久久69| 国产一级持黄大片99久久| 久久精品国产免费一区| 久久久www免费人成精品| 久久这里只有精品视频99| 国产亚洲美女精品久久久| 99久久精品免费看国产| AA级片免费看视频久久| 精品视频久久久久| 久久综合九色欧美综合狠狠| 久久亚洲国产成人影院网站| 日产久久强奸免费的看| 一本久久精品一区二区| 99蜜桃臀久久久欧美精品网站| 精品综合久久久久久98| 久久精品夜夜夜夜夜久久| 99久久婷婷国产综合亚洲| 国内精品久久久久久久影视麻豆| 久久久国产精华液| 国内精品久久久久久久久电影网| 国产精品美女久久久久久2018| 精品国产一区二区三区久久| 国产女人aaa级久久久级| 思思久久99热免费精品6| 亚洲AV无码久久精品色欲| 国产一区二区三区久久| 三级片免费观看久久| 熟妇人妻久久中文字幕| A级毛片无码久久精品免费| 狠狠色丁香婷婷久久综合| 精品久久久久久成人AV| 久久露脸国产精品| 九九精品99久久久香蕉| 三级片免费观看久久| 久久国产精品无码HDAV| 久久中文字幕视频、最近更新| 久久99精品久久久久久hb无码| 亚洲精品NV久久久久久久久久| 国产精品99精品久久免费| 四虎影视久久久免费| 日本精品久久久久中文字幕|