<返回更多

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

2021-08-04    代码大叔
加入收藏

编程语言: Nodejs

知识要点: 文件的16进制解析

木马我们见得多, 以前多数会以EXE可执行文件形式出现

后来, 开始在Web上出现, 主要侵扰Web页面, 给正常的html/ASP等加上木马代码

再后来, 开始直接在图片内部出现, 让人防不胜防

比如下面2张图(文件名:demo.jpg)

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

这是张正常的图片:demo.jpg


如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

这是张含非法代码(无害)的图片:demo-2.jpg

相信从表面上没人看得出来区别是什么

透过表面, 我们来看看这2张图的本质

借助Notepad先打开正常的图片(demo.jpg)

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

 

我们看到的是一堆乱码,

选择菜单"插件 -> HEX-Editor -> View in HEX"(无此插件的可以先搜索安装)

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

 

首先我们要先知道, 所有的文件头几个节字可以区分出文件格式

像JPG文件的文件头2个字节是16进制 FFD8

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

 

利用这点,可以判定它确实是JPG文件,这个比用文件扩展名判断靠谱得多

然后再来看看文件尾

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

 

查资料可以得知, JPG文件尾的2个字节应该是FFD9或者是FFD8

看得出来这个demo.jpg文件是正常的;

再来用同样的方法看看demo-2.jpg的文件尾(文件头已查证是正常)

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

 

明显的, 在最后FFD9后面多出了一些"不寻常"的东西, 右侧可以看到疑似脚本的东西

本文我们讨论的是如何识别被伪装的图片, 至于图片中如何植入木马及如何让它发作不在讨论范围

问题和现象讲清楚了

然后我们来说说在代码级别怎么防范

先上效果

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

分别扫描2个文件, 得到上图结果

怎么实现呢, 我们用Nodejs来举例

const fs = require('fs')
let fpath = 'd:/demo.jpg';
let packSize = 2;                            //定义数据包大小(2字节)
let buf = new Buffer.alloc(packSize);        //对象用于表示固定长度的字节序列
let fd = fs.openSync(fpath, 'r');
fs.readSync(fd, buf, 0, buf.length, null);
console.log(fpath, ">>>>>head:", buf.toString('hex'));  //16进制方式打印

这样就可以提取出图片文件的文件头

d:/demo.jpg >>>>>head: ffd8

接下来取文件尾2字节

let fileInfo = fs.statSync(fpath);      //取得文件信息
let fileSize = fileInfo.size;           //文件长度
buf = new Buffer.alloc(packSize);            //定义缓冲区
fs.readSync(fd, buf, 0, buf.length, (fileSize - fel));  //取出文件尾2字节
console.log(fpath, ">>>>>end:", buf.toString('hex'));   //16进制方式打印

结果:

d:/demo.jpg >>>>>end: ffd9

 

接下来只要收集各种不同文件需要校验的文件头和文件尾标志

加上自己做个校验算法就可以达到扫描文件安全的目的

算起来可以当成一个最简版的查毒(木马)工具呢

收工

如何破解黑客的手段:揪出给图片施放的特洛伊木马(Trojan Horse)

 

这期就酱,下期再见

复杂的问题简单化

每次只关注一个知识点

对技术有兴趣的小伙伴可以关注我, 我经常分享各种奇奇怪怪的技术知识

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>