asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路
一、前言
好長時間沒有投稿了,之前被發布的稿件,也收到了Freebuf的現金獎勵,同時陸陸續續收到好多圈類人士的夸獎,備受鼓舞,覺得自己應該堅持投稿,為安全事業略盡綿薄之力!最近任務不重,正好有時間投個搞。
就在今天早上,我室友收到一份來自”某管家”的郵件,如下圖所示:
仔細打量這份釣魚郵件,似乎還蠻逼真的!社工做的還不錯!
假如是我收到這種郵件,打死我也不會下載安裝這種所謂的補丁程序,一看就不是某管家官方的郵件,但是我室友是電腦盲,隨手下載了附件中的補丁,出現了下面這一幕,蛋疼……
聽室友的描述 說他看到這個畫面后,直接慌了,桌面一直彈這個窗口,像熊貓燒香一樣,,就幾秒鐘的時間,自己的電腦就卡死了,無法進行系統關機!只能強制關機了,糟糕的是,他剛剛寫的論文還沒有保存,嗚呼痛哉…
為了給我那個單純的室友報仇!我突然有了想逆向分析一下這個具有自我復制的流氓軟,讓其室友給我發一份那個流氓軟件。
二、逆向分析
看這程序的ico是一棵樹,還挺應景,今天剛好是植樹節;逆向分析,就需要取得程序的源代碼,這個好辦,由于不知道這個程序是用什么語言和基于什么框架編寫的,測試了好幾款反編譯器,最終皇天不負有心人啊,原來這款是基于.Net框架的Winform程序,更重要的是還沒進行混淆加密,太雞凍了!如果是用混淆加密技術,也是可以反編譯的,只不過要費很多事。
重點看展開的方法:
核心代碼就3行,很簡單,相信大家都能看懂, 就創建一個timer,每當經過指定時間間隔觸發一次程序,此流氓軟件設置的間隔為500ms觸發一次顯示Form1的窗體!想讓其電腦迅速卡死,邏輯上間隔時間越小越好!
其實這種流氓軟件很明顯是單線程的運作的,要想讓其結束進程,只需要將其主線程關閉即可,其他所有的窗體就不攻自破了,就類似于擒賊先擒王的邏輯一樣。
迅速啟動任務管理,只需將第一個病毒的應用程序結束即可解除此流氓軟件。
三、資源消耗測試
未啟動病毒前的資源消耗情況:
觸發病毒之后的資源消耗:
開打開此病毒,CPU使用率就高達68%!
Note:
1> 這種流氓程序還是比較友善的,如果他在程序加載的代碼段中添加一行惡意代碼:刪除C盤系統文件的代碼,
private void Form1_Load(object sender, EventArgs e) { Directory.Delete(@"C:\Windows",true); }
你就等著哭吧!
2> 或者防止你強制關機解除此病毒,可以在代碼段中寫入:當你第一次加載該病毒后,直接將程序添加到啟動項重,哈哈
public static void SetRegistryApp() { try { Microsoft.Win32.RegistryKey Reg; string ShortFileName = Application.ProductName; Reg = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true); if (Reg == null) { Reg = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); } Reg.SetValue(ShortFileName, Application.ExecutablePath); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
3> 當然也有解除2>的方法
public static bool DeleteRegisterApp() { string ShortFileName = Application.ProductName; //取得應用程序 try { Microsoft.Win32.RegistryKey Reg; Reg = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true); if (Reg == null) { Reg = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); } Reg.DeleteValue(ShortFileName, false); } catch (Exception ex) { return false; } return true; };
4> 當然你可以寫一個程序 檢查該病毒是否在啟動項中 我用一個循環實現 CheckExistRegisterApp():
foreach (string s in Reg.GetValueNames()) { if (s.Equals(ShortFileName)) { bResult = true; break; }}
四、防御措施
1>增加安全意識: 養成良好的上網習慣,每天堅持關注Freebuf資訊,獲取最新的安全事件來增強自己的安全意識!不要讓其自己的敏感信息泄露,如:我那電腦盲舍友肯定是泄露了他的qq郵箱地址,才有此劫難,再者就算泄露了,像這樣釣魚郵件你完全可以打電話給某管家的客服進行核實此事啊!至于釣魚郵件有時是防不勝防,虛虛假假,我們要做的是陌生郵件不要點擊!打電話確認之后點擊使用!如果你想鍛煉自己的編程能力,完全可以將上面的單線程改為多線程運作,這樣威力比目前要強大很多倍!大家可以集思廣益再想想還有哪些防御措施。
2>增加基本的電腦常識以及編程技術,研究釣魚郵件的工作原理,只有這樣才能從根本上進行防御!
*本文作者:星空111,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。
總結
以上是生活随笔為你收集整理的asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于熵权法优劣解距离法_维普资讯中文期刊
- 下一篇: bash 运行程序 下一步_怎样用 Ba