文章
技术

有没有办法证明文件不包含计算机病毒?

请教2047的各位信息安全专家:任何格式的文件都有可能携带计算机病毒吗?

我有时候会想分享几个音频文件,有没有办法证明这些文件不是或不包含窃取信息或破坏软件系统的病毒?

菜单
  1. Squirrel  
  2. 邹韬奋 外逃贪官CA
    邹韬奋   虽然韬光养晦,亦当奋起而争(拜登永不为奴:h.2047.one)
  3. Squirrel  

    @消极 #175354

    js和py是可执行文件。计算机中的文件有的只包含数据,有的包含数据和指令。指令就是能被计算机执行的代码,比如exe文件本质上是一长串二进制代码。在Windows系统中包含exe、dll等后缀的文件是可执行文件;在Unix/Linux系统中任何文件都可以是可执行文件(主要看用户给不给执行权限),但只有真正包含指令的可执行文件会被计算机执行。

    病毒只可能存在于包含指令的可执行文件中。计算机病毒本质上是恶意指令,通常嵌入在一些正常的指令中,只有当指令被计算机系统执行后病毒才能获得系统权限并且破坏系统。

    像txt、jpg、mp3等纯数据文件不包含指令,自然不可能包含病毒。在Unix/Linux系统中有的可执行文件没有执行权限,即使这些可执行文件中包含病毒,只要没有执行的机会,病毒也不可能破坏系统。

    有些包含病毒的可执行文件可能伪装成txt、jpg、mp3等纯数据文件骗用户执行。

  4. 希格斯玻色子  

    证明与证明是不一样的,分两种情况:

    1.向有技术知识的人证明:对于图像、音频视频,如果他实在不放心,可以让他先执行一次压缩或转码,这样处理后就算有病毒也被破坏了。

    2.向无技术知识的人证明:你跟他讲原理没用,你用自己的名义证明没用,他要是不信你,你怎么说都没用。因此只能通过第三方机构,比如杀毒软件之类的,看他信谁信什么机构。

    另外可以考虑使用一些可以在线播放的网站,或者自己搭建一个网站,只要他平时用浏览器看别的网站,就没理由不信你,除非你的信誉比一般人差并且能力比一般人强。

  5. 路人甲  

    @Squirrel #175353 好,谢谢。但是我记得有些媒体文件的某些部分似乎可以隐藏代码?

  6. 王二  

    音频文件没必要证明; 证明音频文件是否包含病毒,这件事本身很荒谬。

  7. 邹韬奋 外逃贪官CA
    邹韬奋   虽然韬光养晦,亦当奋起而争(拜登永不为奴:h.2047.one)

    按照thphd的说法,任何文件都有用软件打开的机会,如果用来读取该文件的应用软件有bug,例如thphd举的缓冲区溢出bug,那文件可以恶意地编写,以至于触发bug后可以执行任意代码(execute arbitrary code)。

    现在计算机系统别说软件了,硬件上还有防御措施,禁止你执行溢出的代码。

    而且其实编写相关的攻击文件难度是很大的,因为大部分文件不是单一软件打开的,例如音频文件,常见的播放器有许多种,如果某个bug只在某一播放器的某一版本中存在,那怎么有效地攻击大量的计算机呢?

  8. rebecca   我不是品葱的神,但是后来发生了一些事情

    我有时候会想分享几个音频文件,有没有办法证明这些文件不是或不包含窃取信息或破坏软件系统的病毒?

    用杀毒软件扫描,是一种常见的“证明”方式,既然楼主这么问,我猜楼主关心的是能否“严格证明”,即能否100%排除一个音频文件为病毒的可能性。

    在讨论这个问题之前,应该先定义什么是“病毒”,什么是“音频文件”。

    有人说病毒是恶意程序,而音频文件不是程序,所以不可能是病毒,这种说法是错误的。

    @Squirrel #175353

    可执行文件才能携带病毒

    其实音频文件也可以包含程序,所以也可以携带病毒,例如将病毒程序放在音频文件的metadata(作曲家名字)中,利用播放器程序的漏洞触发执行。

    而病毒也可以伪装成音频文件,例如 song.mp3.exe。如果这病毒是手工打造,甚至不会被杀毒软件识别出来。在计算机系统中,所谓的可执行文件和不可执行文件,除文件名以外是没有任何区别的,实际上任何文件都可能是可执行文件。

    换言之,任何文件内部都可能包含可执行程序。而可执行的定义也是模糊的,在windows上不可执行的文件,在别的系统上也许就可执行了。即便确定一个文件包含可执行程序,如果这个程序没有恶意,也不能说它是病毒。那怎么判断一个程序是否恶意呢?从源代码/机器码去判断?如何区分善意和恶意?

    所以从文件本身去严格地证明一个文件没有携带可执行的恶意程序,是不可能实现的任务,杀毒软件也只能识别那些已经出了名的常见病毒。

    正因如此,人们往往会借助其他渠道辅助判断。既然识别可执行程序很难,那就识别恶意,例如安全专家经常会说“不要打开来源不明的文件”,也就是把“来源不明”约等同于“恶意”。


    最后补充一点,目前对信息安全威胁最大的不是病毒,而是木马。

  9. 路人甲  
    内容已隐藏
    内容已被作者本人或管理员隐藏。 如有疑问,请点击菜单按钮,查看管理日志以了解原因。
  10. 路人甲  

    @rebecca #175467

    song.mp3.exe

    這種文件不會被識別偽mp3音頻文件,以最後的擴展名為準。

    最后补充一点,目前对信息安全威胁最大的不是病毒,而是木马。

    木馬也是計算機病毒的一種(木馬病毒)

    好吧,令人沮喪。

  11. Squirrel  

    @rebecca #175467

    其实音频文件也可以包含程序,所以也可以携带病毒,例如将病毒程序放在音频文件的metadata(作曲家名字)中,利用播放器程序的漏洞触发执行。

    是因为缓冲区溢出吗?攻击者输入特定的数据让播放器程序出现缓冲区溢出,使播放器执行的下一条指令从正常区域跳转到数据文件的某些特定区域,如果这些区域中包含攻击者植入的代码,的确有可能把这些代码执行。不过这种操作难度很大。


    11月27日更新:

    缓冲区溢出攻击原理可以参考这里。植入数据文件某些特定区域的病毒程序称作shellcode。