天天看點

惡意代碼的世界——編寫惡意代碼,遠比寫一個功能來得容易

作者:司鏡233

惡意代碼的威力

代碼能存在于哪裡?不僅限于計算機,任何通信、控制類的裝置中,都會有代碼,而惡意的代碼能輕松将其變為災難。

  • 讓自動駕駛的車,駛入河中
  • 修改火箭發射路線
  • 讓自動續航的飛機墜落
  • 讓工廠裡的加工機器,失控發瘋
  • 悄悄轉走你銀行卡的錢,還讓你無法上網

下面,舉兩個例子來感受一下惡意代碼的威力

事件一:“震網”行動,一個對波斯帝國的網絡飛彈

波斯帝國,也就是現在的伊朗。伊朗在國際上處于什麼位置?

  • 中東霸主
  • 亞洲經濟強國
  • 石油出口總量世界第二
  • 聯合國創始成員
  • 軍隊人數世界第九

突然,伊朗濃縮鈾的提純技術進步飛速,這讓某些組織感到極其不安。那要如何辦呢?很好的一個方案便是用惡意代碼入侵伊朗的系統。

問題也比較棘手:

  • 伊朗的核電站與世隔絕,根本沒接通網際網路,無法遠端入侵
  • 工廠内部的設施結構,一概不知

但是,可以确定:

  • 工廠内一定有電腦,而且應該是有桌面視窗操作的系統,并且系統大機率會有用windows的電腦
  • 一定有内部區域網路,或是可以插入U盤
  • 由于要提純核原料,應該還會用到工業控制系統,而世界上的工業控制軟體也就那麼幾家

于是,經過幾經測試,一場名為“震網”的幾行惡意代碼:

  • 消無聲息地将伊朗的核設施搞癱瘓了
  • 上千台離心機運作失控
  • 幾乎所有的終端被感染
  • 監控錄像被篡改

那是什麼原理,讓幾行惡意代碼,就造成了如此大的傷害?從專業角度說,是這幾行代碼,同時調用了幾個“零日漏洞”。

零日漏洞

新發現的,還未被他人惡意利用過的軟體漏洞or軟體缺陷。

整個過程可以模拟為:

專業術語 類比行為
RPC遠端執行漏洞 蒙騙操作人員,讓他們以為平安無事

快捷方式解析漏洞;

列印機背景程式服務漏洞

偵探員四處偵探,尋找攻擊目标
核心模式驅動程式漏洞 打掩護,感染U盤
任務計劃程式漏洞 假冒長官,向其他電腦發号施令,胡作非為;消除痕迹,讓網絡巡警麻痹大意

事後,“震網”被吹噓成無比精準的“網絡飛彈”,但實際上,在攻擊伊朗核設施的時候,還造成了大面積的“誤傷”。

據統計,震網感染了全球超過45000台電腦,出了伊朗損失最為慘重外,也殃及了印度尼西亞、印度、阿塞拜疆、巴基斯坦、美國等。

總結來看,震網的影響:

  • 攻擊伊朗核設施,緻其癱瘓
  • 波及其他電腦,造成誤傷

但除此之外,震網能做的事情還有很多:

  • 進入多種工業控制軟體,奪取核心裝置的控制權
  • 攻擊石油運輸管道、發電廠、大型通信設施、機場等多種工業、民用基礎設施
  • 威脅鋼鐵、汽車、電力、運輸、水利、化工、石油等核心領域

雖然我們作為普通群眾,不太能被波及到,但還是要注意,不要被惡意代碼盯上,否則我們将變成别人的免費提款機。

針對美國的DDos攻擊,導緻近半個美國的網絡癱瘓

如果說伊朗不夠強大,某些組織可以用惡意軟體修理它;可即便是世界上拳頭最硬、錢包最鼓的美國,也嘗嘗被惡意代碼搞的鼻青臉腫。

2016年10月22日淩晨,美國域名伺服器管理服務供應商Dyn,遭受了一次DDos攻擊,導緻美國近半的網絡癱瘓,東海岸的許多網站,無法正常營運,包括但不限于Twitter、亞馬遜、Shopify、PayPal等。Dyn對于網際網路公司,相當于農貿市場對餐廳的重要性,農貿市場關閉了,那麼餐廳也是無米之炊。

什麼是DDos攻擊?就是分布式拒絕服務攻擊。駭客們從世界各地雇傭了大量的打手,讓他們湧入Dyn公司的大門,将其圍堵的水洩不通。導緻正常要辦理事情、工作及生活的人,無法正常地生活。

據不完全統計,此次攻擊,人數多達千萬,惡意代碼控制了網絡裝置,大部分的智能家居,包括冰箱、電視等。

惡意代碼,何以作惡

作為普通人的我們,要想避免惡意代碼給我帶來傷害,就要先了解它為什麼能作惡,通過什麼方式來作惡?

換位思考一下,假設我們現在要寫一個惡意代碼,要如何設計呢?首先,我們想一想,電腦是由什麼組成的?簡單來說,分為硬體和軟體。

硬體決定體力,軟體決定智力

軟體,其實就是代碼。我們将做好事的代碼稱作善意代碼,将做壞事的代碼稱作惡意代碼。

現如今,計算機存在于千千萬萬的零部件中,形态上千變萬化。你的手機、電腦,我們日常坐的汽車、高鐵、輪船、飛機,家用的電器、儀表等,凡是電腦可以做的事情,都可以移入惡意代碼,這就導緻,惡的無邊無界。

編寫惡意代碼,遠比善意代碼容易

世界普遍的規律,做好事難,做壞事容易;成事難,敗事容易。如果要做對比的話,惡意代碼隻需要把事情搞砸就可以了。

将事情搞砸,主要有兩個難點:

  • 善意的代碼,不會主動配合
  • 使用代碼的使用者,不會主動點選明知是有害的按鈕

是以,我們需要針對難點來解決問題。

編寫惡意代碼的原則

  1. 讓被攻擊的善意代碼,配合惡意代碼來攻擊自己

其一:代碼中肯定有錯誤。

代碼都是人寫的,是人就一定會犯錯誤。據統計,平均每千行代碼,就會出現10~20個錯誤。其中可能就有重大的缺陷、緻命的漏洞。

其二:達成目的而寫的善意代碼,也是一把雙刃劍

比如我們生活中,用于切菜的工具,也可以作為兇器來傷人

其三:計算機并不區分善意還是惡意的代碼。

是以,隻要是代碼,計算機都會執行。

  1. 将惡意代碼植入目标系統,按時啟動

有一門利用人性弱點的學科,叫做“社會工程學”。比如,利用“好奇害死貓”定律,總會有使用者會資源點選惡意按鈕,将惡意代碼下載下傳到自己的電腦中,然後會通過網絡将惡意代碼,傳遍網絡中的每個角落。

我們無法保證周圍的所有人,都是鐵闆一塊。

惡意代碼的世界

計算機發展到如今,惡意代碼早已不是單一的形式,而是形成了龐大的家族和世界,下面,我們簡單了解下惡意代碼世界的頭頭們。

病毒家族

生物病毒,如埃博拉病毒、拉沙熱病毒,沾之即死。計算機病毒就像生物病毒一樣,具有傳播性、隐蔽性、感染性、潛伏性、可激發性、表現性、破壞性等。還具有自我繁殖、互相傳染、激活再生等特征。

早在1949年,馮·諾依曼就預見了計算機病毒的可能性,但是知道1986年,時隔二十多年,第一個病毒“大腦”,才在巴基斯坦誕生。

次年,“小球”和“石頭”降世,随後,計算機病毒越來越多,并開始繁衍、危害全球。

病毒家族的分支可以分為:非常駐型病毒;常駐型病毒。

非常駐型病毒:由偵察兵、主力部隊組成。先摸清敵情,然後感染檔案、繁殖自身、進行作惡,最後撤回。

常駐型病毒:隐藏在計算機内部,等待時機成熟,比如當作業系統運作某個特定的程式,病毒就不斷分裂複制,消耗系統資源。

當然,計算機病毒還有其他的分類方式。

惡意代碼的世界——編寫惡意代碼,遠比寫一個功能來得容易

蠕蟲

蠕蟲病毒作為病毒的一種,曆史上作惡多端,我們必須單獨拿出來說一說。

莫裡斯蠕蟲、美麗殺手、愛蟲病毒、紅色代碼、求職信、SQL蠕蟲王等,都是計算機蠕蟲病毒。它們的可怕之處是,不需要寄生到宿主代碼上,就能開始作惡了。

蠕蟲病毒分為主機蠕蟲和網絡蠕蟲。

惡意代碼的世界——編寫惡意代碼,遠比寫一個功能來得容易

僵屍

僵屍病毒,又稱為僵屍網絡,通過網際網路中繼聊天伺服器IRC,來控制多個計算機稱為“僵屍”,DDos攻擊,就相當于趕屍。

同時,駭客還可以利用僵屍計算機中的資訊,竊取大量的機密。而發現一個僵屍網絡是很困難的,作為僵屍計算機的使用者,并不知道自己的計算機已經稱為僵屍了。所有,僵屍已經稱為駭客們最為喜歡的工具之一。

據不完全統計,包括金融、能源、政府部門在内的,全球近百萬家機構和個人,都被僵屍攻擊過。

針對當下的手機使用者,僵屍攻擊更接地氣:

  • 莫名其妙扣了費用
  • 被各種廣告短信騷擾
  • 存款不翼而飛

木馬

全稱為特洛伊木馬,這源于古希臘中的一個典故。

在古希臘傳說中,希臘聯軍圍困特洛伊久攻不下,于是假裝撤退,留下一具巨大的中空木馬,特洛伊守軍不知是計,把木馬運進城中作為戰利品。夜深人靜之際,木馬腹中躲藏的希臘士兵打開城門,特洛伊淪陷。

後人常用“特洛伊木馬”這一典故,用來比喻在敵方營壘裡埋下伏兵裡應外合的活動。特洛伊木馬也是著名電腦木馬程式的名字。另有特洛伊木馬“Greekqift”一詞意為“害人的禮物”,就來源于這場著名的“特洛伊戰争”。

木馬與一般的病毒不同,它不會自我繁殖,也不刻意地感染其他檔案。而是盡量不懂,躲在一個地方,盡量僞裝自己。等時機一到,使用者在不知不覺中将其植入到自己的電腦中時,将自己的電腦變為“被控制端”,隐藏的木馬就在駭客的控制下,開始行動、破壞被控制端。

僅從行為上看,木馬和遠端控制軟體很相似,不過一個是惡意代碼,一個善意的軟體。

如何防範惡意代碼?

名目繁多的惡意代碼,我們無從辨識。就普通的個人使用者而言,我們應該如何防範惡意代碼呢?

  1. 不要執行任何來曆不明的軟體or程式
  2. 不要覺得自己的郵箱是安全的,不會收到惡意郵件
  3. 接收郵件中的檔案時,先查毒;也提醒接收自己郵件的朋友,有的病毒不在你的電腦上發作,在其他人的電腦上可能就複活了。
  4. 不要随意留下個人資料
  5. 不要相信網絡上,認識的新朋友

繼續閱讀