如何使用ssdeep检测webshell

如何使用ssdeep检测webshell,第1张

一 、安装ssdeep

下载ssdeep并安装 。

二、识别webshell实例

接下来我们下载一个webshell,试一试如何使用ssdeep来识别webshell

以b374kphp为例

首先获得webshell b374kphp的ssdeep hash(fuzzy hashing)值,并存储到b37_hashstxt文件

ssdeep -b webshell/b374kphp >b37_hashstxt

cat b37_hashstxt

ssdeep,11--blocksize:hash:hash,filename384:UsaSwsF3RtJhwhxY5janx0Rig5xJx52FRsBU0ipgFHF3xR:44snx0Rig5x752EBUxpc5,"b374kphp"

然后使用这个值来获得相似度,相似度为100(当然啦,因为没有做任何修改)

ssdeep -bm b37_hashstxt webshell/b374kphp

b374kphp matches b37_hashstxt:b374kphp (100)

为了方便理解,我们拿ssdeep与md5做类比

md5 webshell/b374kphp

MD5 (webshell/b374kphp) = b8d3f0f9ad8b1083f24072f8cfe13e04

我们知道对文件取md5值是用于验证文件的完整性的,因为它对任意的修改都能感受到(hash碰撞小概率事件除外)

而ssdeep则用于计算文件相似度,它是通过计算上下文相关的分段hash值(fuzzy hashing)来判断文件相似度的。

在识别webshell的场景中,我们可以先获取样本的ssdeep hash值,然后设置相似度范围,来识别同一系列的变形shell

想想一个小白黑客获得一个好用的webshell后,第一件事会干嘛肯定是改变登录账号密码

cp webshell/b374kphp webshell/b374kphpbak

vim webshell/b374kphpbak

心思稍微重点的想绕过WAF的童鞋,说不定还会修改cookie中的关键字

例如批量替换cookie txtauth关键字

修改完毕后,分别用md5与ssdeep来看发生了什么

md5 webshell/b374kphpbak

MD5 (webshell/b374kphpbak) = b8d3f0f9ad8b1083f24072f8cfe13e04

md5值发生了变化,说明webshell文本内容发生了变化

接着使用ssdeep来查看修改后的webshell的相似度

ssdeep -bm b37_hashstxt webshell/

b374kphp matches b37_hashstxt:b374kphp (100) #原始webshellb374kphpbak matches b37_hashstxt:b374kphp (97)#修改了登录账号与作者标记b374kphpbak2 matches b37_hashstxt:b374kphp (88)#修改了登录账号、作者标记、cookie特征

最后,我们选择一个合适的相似度来判断是否为webshell(真实场景中,调参找到合适的阈值才是考验人的活)

例如,只筛选相似度90以上的

ssdeep -t 90 -bm b37_hashstxt webshell/

b374kphp matches b37_hashstxt:b374kphp (100)b374kphpbak matches b37_hashstxt:b374kphp (97)

三、扩展

除了使用ssdeep来查找相似的恶意软件(静态文本),我们还可以逆向思维,根据相似度来判断混在正常进程中的恶意进程,依据是进程在运行时由于变量变化而发生的变动是轻微的,而代码被加壳后的的变化是相当显著的,例如UPX加壳会使相似度瞬降到0%。

需要使用辅助工具"文件MD5值查看器 "才能查看。文件MD5值查看器(MD5 Free File Hasher)是一款小巧的文件MD5值查看工具,使用简单载入文件,就能查看到该文件的MD5值

使用步骤:

下载完成后运行软件

点击"selecta file"选择要查看md5文件

选择后,"md5 hash"文本框就会显示出当前文件md5值

MD5叫信息-摘要算法,是一种密码的算法,它可以对任何文件产生一个唯一的MD5验证码,每个文件的MD5码就如同每个人的指纹一样,都是不同的,这样,一旦这个文件在传输过程中,其内容被损坏或者被修改的话,那么这个文件的MD5码就会发生变化,通过对文件MD5的验证,可以得知获得的文件是否完整。

你好,哈希算法很多,自带有,sha1函数跟md5函数,获取的哈希值要读取内容去运算,

如$file=file_get_contents("路径"); echo sha1($file);//哈希值,echo md5($file);//md5值,这两个都是摘要。谢谢

以上就是关于如何使用ssdeep检测webshell全部的内容,包括:如何使用ssdeep检测webshell、一个文件的MD5值怎么看的、PHP 如何获取图片的哈希值啊。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9292540.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存