自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

頁游安全攻與防

安全 應(yīng)用安全
頁游,最最核心的就是客戶端(swf)與服務(wù)端的游戲通信了。游戲通信產(chǎn)生的封包,內(nèi)容是否可識別,可篡改,可重放,處理邏輯是否有漏洞,都決定了這款游戲是否有重大的漏洞。

網(wǎng)頁游戲的安全問題,在剛?cè)肼毥佑|的時(shí)候,寫過兩篇比較淺顯的文章。雖然頁游安全總體上并沒有顯著變化,沒有新的攻擊方法,也沒有新的防御方法,我個(gè)人的工作重心也由頁游安全轉(zhuǎn)向了手游安全,但出于完美主義的偏執(zhí),還是希望寫一篇覆蓋完整的頁游安全文章,希望能給頁游產(chǎn)業(yè)一點(diǎn)幫助。

一、協(xié)議安全(swf安全):自動封包 (重點(diǎn))

頁游,最最核心的就是客戶端(swf)與服務(wù)端的游戲通信了。游戲通信產(chǎn)生的封包,內(nèi)容是否可識別,可篡改,可重放,處理邏輯是否有漏洞,都決定了這款游戲是否有重大的漏洞。

我們知道頁游前端和后臺的通信一般有兩者方式,一種是http連接,一種是socket連接,前者適用于小型頁游,例如內(nèi)嵌在QQ平臺的QQ農(nóng)場,后者適用于大型頁游。

不同的通信方式,產(chǎn)生的數(shù)據(jù)包格式也不一樣,像HTTP AMF的可以使用charles來抓包查看,像sockets的可以使用WPE抓包查看。

以socket 通信為例,協(xié)議采用自定義格式,一般由兩部分組成,包頭與包體,包頭一般是固定長度,包體為可變長度。包頭一般是一些基本信息,例如包長度,版本號,命令號,用戶ID,序列號等;包體就是操作命令對應(yīng)的接收參數(shù),參數(shù)個(gè)數(shù)不同,參數(shù)類型不同會導(dǎo)致包體長度不同。

只要摸清楚協(xié)議算法,即包是如何生成的,就可以構(gòu)造數(shù)據(jù)包與服務(wù)器自由通話,這一后果是非常嚴(yán)重的。自由通話意味著你不需要老老實(shí)實(shí)的在客戶端操作,一條數(shù)據(jù)包就能代替你一連串的操作,例如發(fā)送一條數(shù)據(jù)包完成一個(gè)任務(wù),常用于快速升級,淘寶上的頁游代練絕大多數(shù)都是采用的這種方式;自由通話更意味著你可以繞過客戶端的邏輯判斷,傳任意參數(shù)給服務(wù)端。說到這里,你可能覺得只要服務(wù)端能正常處理來自客戶端的參數(shù),不出邏輯錯(cuò)誤,不出配置錯(cuò)誤,就萬事大吉。這種想法很常見,例如上海寶開公司的某個(gè)開發(fā)就說過,我們的游戲邏輯判斷都在服務(wù)端,我們沒有外掛。我推測這個(gè)人應(yīng)該不怎么上外網(wǎng)。

理想是豐滿的,現(xiàn)實(shí)是骨感的,怎么能保證后臺不將邏輯寫錯(cuò),策劃運(yùn)營不將配置弄錯(cuò)呢,特別是在高強(qiáng)度的通宵加班后。你可能說靠測試呀,中國頁游行業(yè),配給給游戲的測試人員是非常少的,相應(yīng)的測試時(shí)間也是遠(yuǎn)遠(yuǎn)不足的,并且測試技術(shù)也非常需要提高,總的來說,在頁游行業(yè),能做完整協(xié)議測試的公司不多。但玩家,特別是從事外掛制作代練服務(wù)的打金工作室會“幫你”好好地徹底地做協(xié)議測試。他們會先反編譯客戶端上的SWF文件(緩存中的,內(nèi)存中的)得到協(xié)議生成算法,制作成封包工具,遍歷每個(gè)協(xié)議號,每個(gè)參數(shù)輸入,讓你的錯(cuò)誤無從遁形。

我見過一個(gè)非常聰明的外掛制作者,在外掛中添加了腳本分享平臺,號召大家共同摸索,將有問題的封包以腳本的方式上傳以供大家下載,這種集思廣益真的很妙,腳本的分享會給“找bug”精神獎(jiǎng)勵(lì),將其帳號公布出來以供大家瞻仰,因此樂意分享的人很多。而且作者還很負(fù)責(zé)的有腳本審核機(jī)制,并支持快捷的查詢。這是什么樣的用戶體驗(yàn)呀,這就是頁游外掛界的app store

頁游安全攻與防

看到這里,你或許想,我保護(hù)好SWF文件,不讓其逆向不就行了嗎?有需求,就有滿足需求的地方,市面上有不少給SWF提供加密服務(wù)的收費(fèi)產(chǎn)品,例如Amayeta SWF Encrypt 和 DComSoft SWF Protector ,因?yàn)槭召M(fèi),沒用過這些產(chǎn)品,不知道具體原理,但據(jù)了解,最常用SWF加密方式,就是破壞SWF標(biāo)準(zhǔn)文件頭,通過向SWF的二進(jìn)制文件的文件頭寫入無意義的數(shù)據(jù),從而導(dǎo)致反編譯軟件無法正常解析SWF文件。下圖是使用反編譯器打開加密的SWF文件,會提示無法解析

頁游安全攻與防

我們可以對比一下采用這種加密方式的swf文件頭內(nèi)容:

(1)未加密swf文件

頁游安全攻與防 

正常的SWF文件,文件頭部是由一個(gè)三字節(jié)的標(biāo)識符開始,為0×46、0×57、0×53(“FWS”)或者0×43、0×57、0×53(“CWS”)其中之一。“FWS”標(biāo)識符說明該文件是未壓縮的SWF文件,“CWS”標(biāo)識符則說明該文件前8個(gè)字節(jié)之后(即文件長度字段之后)的全部數(shù)據(jù)為開源的標(biāo)準(zhǔn)ZLIB方式壓縮。#p#

(2)加密后的SWF文件

頁游安全攻與防

很明顯,文件頭部變成了無意義的符號。

實(shí)現(xiàn)函數(shù)示例(參考http://blog.sina.com.cn/s/blog_731fdd2b01010u9k.html)

頁游安全攻與防

有加密就有解密,加密的SWF文件需要還原,雖然反編譯不了加密后的SWF文件,但可以反編譯解密文件找到解密代碼來還原加密SWF文件的文件頭。(參考 http://www.2cto.com/Article/201211/167406.html )

頁游安全攻與防

很明顯,這種SWF加密方法沒什么作用。于是大家想著如何用一種無法反編譯的實(shí)現(xiàn)方法來隱藏加密算法,例如利用Alchemy能夠編譯C/C++代碼為AS字節(jié)碼但無法被反編譯的特性來隱藏加密算法。其實(shí)我懷疑目前有工具將Alchemy還原成C了,例如ASV(actionscript view 2012)就號稱是目前最強(qiáng)悍的SWF解密工具,網(wǎng)上都有該工具的團(tuán)購消息了。

我不懂SWF的加密解密,但我知道有一條萬能守則,任何加密在內(nèi)存中都是解密狀態(tài)的。當(dāng)無法解密的時(shí)候,就從內(nèi)存中查找導(dǎo)出吧,我們可以先使用SWF Memory Dumper從瀏覽器內(nèi)存中導(dǎo)出解密并解壓縮的SWF文件,再用傳播程度都爛大街的碩思閃客反編譯得到源碼。這一方法對游戲協(xié)議安全來說,是非常非常非常悲劇的。如下圖所示,包的組成結(jié)構(gòu),包中各個(gè)字段的生成算法都可以通過逆向解密SWF文件獲得!

頁游安全攻與防

例如下圖為游戲協(xié)議結(jié)構(gòu)

頁游安全攻與防

例如下圖就是游戲協(xié)議對應(yīng)的命令號

頁游安全攻與防

 例如下圖為游戲配置表

頁游安全攻與防

一切的一切,都注定了要想完全解決協(xié)議安全問題,只有靠AS混淆了。目前有一些收費(fèi)軟件提供AS混淆,例如secureSWF 。但奇怪的是,沒有多少頁游公司實(shí)施AS混淆。

寫到這里,或許你會幻想游戲協(xié)議算法不會被逆向得知,那不就完事大吉了嗎?再次申明,現(xiàn)實(shí)是殘忍的,即使不知道協(xié)議算法,照樣可以修改游戲封包。我們可以通過耐心的反復(fù)操作來對比封包的不同,定位到修改點(diǎn)。一般使用WPE工具,修改包體。WPE工具的關(guān)鍵就是過濾器,查找到符合指定特征的封包,將特定的位置替換為修改的值。如下圖所示,

頁游安全攻與防

除了封包篡改,最簡單的連封包結(jié)構(gòu)都不要猜測的就是封包重放作弊了,例如打怪是一條封包,只要反復(fù)重放該封包,就能輕易刷取經(jīng)驗(yàn)值了。

好的協(xié)議設(shè)計(jì),一定要考慮到防御封包篡改和封包重放,最簡單的方法是在封包的某個(gè)字段加入一個(gè)序列號,該序列號包含包體完整性檢驗(yàn)值,時(shí)間因素值,來區(qū)分封包是否是重放的,是否有被篡改。

有了好的協(xié)議設(shè)計(jì),協(xié)議是否安全了呢?協(xié)議的實(shí)現(xiàn)方法在客戶端SWF中,這一事實(shí)又講安全問題引回到SWF被逆向的問題上,只要被成功逆向,一切努力都打水漂了。雖然防御艱難,但也不能放棄,一種方法不行,可以用多種方法??偟膩碚f,為了協(xié)議安全,可以做如下措施(不僅僅從技術(shù)上):

1.好的協(xié)議設(shè)計(jì),防重放與篡改

2.SWF加密 ,注意加密算法的安全,最好AS混淆

3.耐心的做協(xié)議檢測,開發(fā)在提交測試前,做協(xié)議測試;測試在完成了功能測試,性能測試后也要搞好協(xié)議測試;策劃運(yùn)營對配置表做認(rèn)真的檢查;

4.設(shè)計(jì)一套監(jiān)控系統(tǒng),監(jiān)控游戲中的收益與消費(fèi),大量的刷取物品肯定會在數(shù)值變化中體現(xiàn)出來;

5.留意游戲論壇,游戲QQ群里是否有新漏洞的披露,外掛是否有更新;

6.頻繁更換加密算法,與外掛制作者PK更新速度。#p#

二、自動游戲+加速

自動游戲,簡單的說就是模擬鼠標(biāo)或鍵盤對游戲UI的操作,代替你做重復(fù)的工作。最簡單的自動游戲腳本可以使用按鍵精靈來制作,先對正常操作進(jìn)行錄制,然后編輯,設(shè)置熱鍵,最后回放即可。程序?qū)崿F(xiàn)中一般會有以下幾個(gè)關(guān)鍵函數(shù)

(1)模擬鍵盤

VOID keybd_event(

BYTE bVk, // 虛擬鍵碼

BYTE bScan, // 掃描碼

DWORD dwFlags,

ULONG_PTR dwExtraInfo // 附加鍵狀態(tài)

)

(2)模擬鼠標(biāo)

VOID mouse_event(

DWORD dwFlags, // motion and click options

DWORD dx, // horizontal position or change

DWORD dy, // vertical position or change

DWORD dwData, // wheel movement

ULONG_PTR dwExtraInfo // application-defined information

)

自動游戲的作弊方式常見于對戰(zhàn)刷怪類游戲,自動識別地圖中怪物出現(xiàn)的位置,自動出招打怪,自動拾取掉落寶物。往往還會配合加速外掛,總的來說,就是靠達(dá)成那種不知疲倦(腳本操作)、準(zhǔn)確度高(自動識別地圖中UI特征)、快速(對頁游就是加速flash的動畫播放速度)的操作方式來快速升級。

自動游戲類型外掛的防御比較簡單,增加人機(jī)識別的因素,類似于論壇避免批量注冊,采用只有人類才能識別的驗(yàn)證碼(題外話,不少網(wǎng)站的驗(yàn)證碼其實(shí)可以機(jī)器識別),例如對于對戰(zhàn)類游戲,記錄每次對戰(zhàn)的頻率和操作時(shí)間特性,對異常的操作彈出圖片驗(yàn)證,中斷自動游戲。

在實(shí)施圖片驗(yàn)證的時(shí)候,要考慮到兩個(gè)要素:

一是圖片是否真正的機(jī)器難以識別,要預(yù)防簡單的像素采集技術(shù);

二是圖片庫是否及時(shí)更新,要預(yù)防圖片庫的遍歷。

而加速外掛,也常見于對戰(zhàn)類游戲。改變操作速度有兩種情況。一種是使用變速齒輪之類的加速外掛加快flash動畫播放速度,一種是速度值為游戲中的某個(gè)變量值,修改了對應(yīng)的數(shù)值。

對于加快flash動畫播放速度的加速外掛,我們可以通過對比客戶端服務(wù)端時(shí)間是否同步來檢測,當(dāng)檢測到異常的時(shí)候,可以彈出圖片驗(yàn)證,中斷加速。

頁游安全攻與防

對于速度由游戲中數(shù)值控制的,做好協(xié)議安全,使其無法改封包中對應(yīng)的數(shù)值;做好SWF反逆向保護(hù),使其無法修改源碼中控制速度的邏輯。#p#

三、內(nèi)存安全:內(nèi)存修改

修改游戲在內(nèi)存中的數(shù)值是經(jīng)典的單機(jī)游戲作弊方法,同樣也適用于網(wǎng)頁游戲,原因很簡單,不可能每個(gè)來自客戶端的數(shù)據(jù),服務(wù)端都做驗(yàn)證。(看看頁游公司開發(fā)前端和后臺的比例吧?。┮陨缃活惥W(wǎng)頁游戲?yàn)槔?,其中會?nèi)嵌不少小游戲,這些小游戲可能是用來賺取游戲經(jīng)驗(yàn)或貨幣等數(shù)值的,很顯然,這種類型的小游戲基本就是主邏輯在客戶端的單機(jī)游戲,只是最后將游戲分?jǐn)?shù)上傳給服務(wù)器,服務(wù)器再根據(jù)游戲分?jǐn)?shù)的不同來下發(fā)相應(yīng)數(shù)額的游戲貨幣。我們完全可以在積分上傳前,在內(nèi)存中查找并修改該數(shù)值。 如下圖所示,用cheat engine去查找IE進(jìn)程中游戲分?jǐn)?shù)。

(cheat engine是我最喜歡的內(nèi)存修改工具,手游上的內(nèi)存修改工具和這個(gè)比起來簡直是胎兒版的。該工具支持自定義格式的內(nèi)存搜索,具備強(qiáng)大的反匯編功能,更妙的是可以直接生成外掛,特別贊的是竟然采用了游戲通關(guān)的方式來教授工具使用,我的博客中有第八關(guān)于第九關(guān)通關(guān)方法)

頁游安全攻與防

程序?qū)崿F(xiàn)一般會有以下幾個(gè)關(guān)鍵函數(shù)

(1)讀取進(jìn)程數(shù)據(jù)ReadProcessMemory

(2) 查找,查找算法可以按數(shù)值類型、掃描類型及內(nèi)存掃描方式來實(shí)現(xiàn)

例如數(shù)值類型有二進(jìn)制,1字節(jié),2字節(jié),4字節(jié)(游戲最常用),8字節(jié),浮點(diǎn)數(shù),雙浮點(diǎn)數(shù),文本,字節(jié)數(shù)組,自定義(這個(gè)最牛);

例如掃描類型可以支持精確查找,模糊查找(比...大,比...小,兩者之間),數(shù)值變化趨勢(數(shù)值處于增加中,數(shù)值出于減少中,數(shù)值沒有變動,與首次掃描數(shù)值相同,數(shù)值增加了某個(gè)指定值,數(shù)值減少了某個(gè)指定值);

例如內(nèi)存掃描方式有自定義掃描起始與終止地址,同時(shí)掃描只讀內(nèi)存,深度掃描,快速掃描,掃描時(shí)暫停游戲

(3)寫數(shù)據(jù)WriteProcessMemory

內(nèi)存修改的防御,有以下幾種建議:

(1)重要數(shù)值在內(nèi)存中拆分存放,使其無法簡單定位到(會使得游戲邏輯變復(fù)雜)

(2)默認(rèn)可以修改,在服務(wù)端控制收益上線。(考慮到成本,為目前主流控制方法)#p#

四、存檔安全:存檔修改

在flas在flash單機(jī)游戲時(shí)代,修改本地存檔文件,是游戲作弊的重要方式,相信有不少人就用過Flash存檔修改器。

頁游安全攻與防

隨著頁游興起到現(xiàn)在的頁游繁盛,依賴于存檔進(jìn)行邏輯判斷的設(shè)計(jì)減少了,但這塊也不能完全忽略掉??倳幸恍┕δ苁切枰{(diào)用本地存檔的。例如登錄模塊中,記住密碼功能,會將密碼信息存儲在本地,以IE瀏覽器為例,在C:\Documents and Settings\(你的Windows用戶名)\Application Data\Macromedia \Flash Player\#SharedObjects\(一些隨機(jī)數(shù)字和字母)\ 文件夾下就可以看到存儲密碼的SOL文件,可以使用minerva工具查看,如下圖所示,密碼明文明文存儲的,SOL文件是永久性保存的,除非手動清除,如果玩家在公共環(huán)境下登錄,就會有盜號威脅。

頁游安全攻與防

也有些開發(fā)意識到了這個(gè)問題,而采用加密存儲方式,一般采用md5(其實(shí)md5不是真正的加密算法)。md5解密的在線網(wǎng)站非常多,如下圖所示,密碼通過兩次md5后存儲,我們可以在http://www.cmd5.com/ 查到。

頁游安全攻與防

所以建議存檔加密,采用自定義的加密算法,例如md5后轉(zhuǎn)置再md5,等等。#p#

五、帳號安全/充值安全:盜號/低價(jià)充值

帳號安全和充值安全不僅頁游如此,所有游戲,甚至所有線上應(yīng)用都如此。如果說開是個(gè)大的話題,我僅僅介紹頁游中常見的威脅與防御。

(一)、帳號安全

威脅:

1.外掛盜號

例如下面號稱可以無限刷取游戲貨幣的外掛,實(shí)際上在用戶輸入帳號和密碼后,將信息發(fā)送給盜號者的郵箱。

頁游安全攻與防

2. 社工盜號

在游戲中獲取信任,以為對方代練等好處為引誘盜取帳號。或通過獲取個(gè)人信息,從密保問題下手進(jìn)行盜號。

3.從游戲的帳號管理中心等web入口下手,進(jìn)行盜號。

例如登錄模塊沒有驗(yàn)證碼或驗(yàn)證碼實(shí)現(xiàn)機(jī)制漏洞,使用字典掃描批量盜號

4.傳輸嗅探盜號

5.利用帳號申訴流程漏洞進(jìn)行盜號

例如有些申訴打分機(jī)制存在提供多次充值證明就可以取回密碼的方式,先充值,再盜號。

防御:

1.安全意識宣傳

2.弱口令檢測

3.異地登錄提醒

4.登錄行為監(jiān)控

5.設(shè)計(jì)好帳號相關(guān)功能,例如申訴流程

(二)、充值安全

威脅:

1.社工

在網(wǎng)上發(fā)帖慌稱發(fā)現(xiàn)充值漏洞,騙取貪心網(wǎng)友給自己指定的帳號進(jìn)行充值

頁游安全攻與防

2.利用手機(jī)充值漏洞

使用快過期的手機(jī)廢卡進(jìn)行充值,大多數(shù)的充值不會再次檢測手機(jī)卡是否存活狀態(tài)

3.利用寬帶充值漏洞

盜取寬帶帳號進(jìn)行充值,由于不會實(shí)際影響游戲收益,頂多會出現(xiàn)受害者損失嚴(yán)重的情況下投訴帶來的不好影響。

4. 真正的充值漏洞

比如說廣泛采用的點(diǎn)卡充值,可能存在點(diǎn)卡被重放使用的漏洞

防御:

1.安全意識宣傳

2.充值相關(guān)功能的安全檢測

結(jié)論

總的來說,頁游的各種外掛問題很普遍,端游有的它都有,但安全防御不如端游,這很大程度上是因?yàn)轫撚蔚拈_發(fā)周期短,生存周期也短,例如較長的神仙道游頁才兩年了,甚至大多數(shù)頁游,只是為了短時(shí)間洗用戶搶錢,因此不會投入人力物力在外掛防御方面,或許第三方的安全服務(wù)會有點(diǎn)市場吧,比如說他們樂意購買支持多項(xiàng)目的AS混淆工具。總之,頁游是個(gè)浮躁的市場,只有生命周期強(qiáng)大的游戲,才會注意到外掛問題。

責(zé)任編輯:藍(lán)雨淚 來源: 紅黑聯(lián)盟
相關(guān)推薦

2012-08-31 15:42:17

2013-01-11 15:59:23

2021-05-27 12:30:49

網(wǎng)絡(luò)安全數(shù)據(jù)泄露加密

2012-08-03 09:25:14

2011-07-25 10:24:01

2011-08-01 10:07:38

2021-06-16 09:40:44

網(wǎng)絡(luò)安全物聯(lián)網(wǎng)代碼

2015-06-04 13:44:53

2012-10-08 14:09:23

傲游

2013-04-11 09:17:10

2009-11-10 12:08:15

2010-01-06 15:26:48

2015-10-19 10:45:30

Cocos

2021-04-25 21:45:25

網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全攻防ZigBee安全

2021-04-23 13:35:41

網(wǎng)絡(luò)安全藍(lán)牙Wi-Fi

2022-10-31 12:16:51

2012-08-28 10:08:10

云計(jì)算網(wǎng)游網(wǎng)游無端

2009-04-16 10:48:39

2012-08-10 18:10:09

手游

2011-12-16 10:37:24

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號