.net 本地文件管理 代码_如何在百万行代码中发现隐藏的后门
试想一下,如果你的网站被入侵,攻击者留下隐藏的后门,你真的都可以找出来嘛?面对一个大中型的应用系统,数以百万级的代码行,是不可能做到每个文件每段代码进行手工检查的。
即使是一款拥有99.9%的Webshell检出率的检测引擎,依然可能存在Webshell绕过的情况。另外,像暗链、网页劫持、页面跳转等常见的黑帽SEO手法,也很难通过手动检测或工具检测全部识别出来。
最好的方式就是做文件完整性验证。通过与原始代码对比,可以快速发现文件是否被篡改以及被篡改的位置。当然,第一个前提是,你所在的团队已具备代码版本管理的能力,如果你是个人站长,相信你已经备份了原始代码。
本文将结合实际应用,介绍几种文件完整性验证方式,可以帮助你找出代码中所有隐藏的后门。
1、文件MD5校验
当下载D盾_Web查杀工具的时候,我们可以留意到下载的压缩包里,除了有一个exe
可执行文件,还有一个文件md5
值。这个是软件作者在发布软件时,通过md5
算法计算出该exe
文件的“特征值”。
下载地址:http://www.d99net.net/down/WebShellKill_V2.0.9.zip
文件MD5:29285decadbce3918a4f8429ec33df46 WebShellKill.exe
当用户下载软件时,可以使用相同的校验算法计算下载到exe
文件的特征值,并与软件开发者发布的特征值比较。如果两个特征值相同,则认为下载到的exe
文件是正确的。如果两个特征值不同,则认为下载到exe
文件是被篡改过的。
那同理可得,我们可以将所有网站文件计算一次hash
值保存,当出现应急情况时,重新计算一次hash
值,并与上次保存的hash
值进行对比,从而输出新创建的、修改过及删除的文件列表。
文件hash
值计算:
def md5sum(file):
m=hashlib.md5()
if os.path.isfile(file):
f=open(file,'rb')
for line in f:
m.update(line)
f.close
else:
m.update(file)
return (m.hexdigest())
对文件进行哈希值重新计算,进行校验对比,测试效果:
如上图,在上传目录新增了一个evil.php
文件,还有一个被篡改的文件是low.php
。使用常见的编辑器NotePad++
进行对比,可以发现low.php
文件里被插入了一句话webshell
。
2、diff命令
在Linux
中,我们经常使用diff
来比较两个文本文件的差异。同样,我们可以通过一行命令快速找出两个项目文件的差异。
diff -c -a -r cms1 cms2
如下图所示,前三行列出了两个要对比的文件目录的差异,可以发现low.php
文件被篡改过,篡改的内容是@eval($_POST['g']);
。
备注:如果只是想查看两个文件是否不同又不想显示差异之处的话,可以加上-q
选项。
3、版本控制工具
版本控制工具,比如说git
,重新上传代码到git
,add+commit+push
,然后打开项目,点击commits
,在历史提交版本里面,查看文件更改内容,很容易就可以发现代码被篡改的地方了。
另外,也可以通过git diff
用来比较文件之间的不同。
4、代码对比工具
关键词:代码对比工具,搜索一下,你会找到很多好用的工具。这里我们推荐两款效果还不错的工具,Beyond Compare
和WinMerge
。
Beyond Compare
Beyond Compare
是一套由Scooter Software
推出的文件比较工具。主要用途是对比两个文件夹或者文件,并将差异以颜色标示,比较范围包括目录,文档内容等。
下载地址:
http://www.scootersoftware.com/download.php
软件使用示例,通过文件夹比较,找出文件夹中的差异内容。
1、双击Beyond Compare
,打开软件主页,选择文件夹比较。
2、在双边栏输入文件夹路径,点击显示差别,列出差异部分的内容,紫色部分为新增文件,红色部分为篡改文件。
3、双击具体文件,进入代码对比,找到代码差异部分。
WinMerge
WinMerge
是一款运行于Windows
系统下的文件比较和合并工具,使用它可以非常方便地比较文件夹和文件,以易于理解的可视文本格式显示差异。
下载地址:
https://winmerge.org/downloads/
1、文件—打开,选择文件或文件夹,然后点击进行比较。
2、在同一个界面里,通过颜色和文本提示,显示文件夹内容差异。
加入我的知识星球,获取更多安全干货。
.net 本地文件管理 代码_如何在百万行代码中发现隐藏的后门相关推荐
- python 功能 代码_挑战“不可能”的代码:你不知道的Python功能
本文转载自公众号"读芯术"(ID:AI_Discovery) Python看似简单,但实则变化万千,笔者总都能看到一些代码以近乎不可能的方式呈现.这些功能很精妙,以至于我无法想象没 ...
- python图像分类代码_Kaggle—So Easy!百行代码实现排名Top 5%的图像分类比赛
Kaggle-So Easy!百行代码实现排名Top 5%的图像分类比赛 作者:七月在线彭老师 说明:本文最初由彭老师授权翟惠良发布在公众号"七月在线实验室"上,现再由July重新 ...
- python实现excel搜索_从几百个Excel中查找数据,用Python一分钟搞定
今天给大家分享一个真实的办公自动化需求,日常办公肯定都会遇到的,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大! 一.需求说明 首先我们来看下今天的需求,有一份档案记录总表的Ex ...
- 史上最烂代码_历史上最大的代码库
史上最烂代码 Here's a diagram of the biggest codebases in history, as measured by lines of code: 这是历史上最大的代 ...
- python测验5 函数和代码_测验5: 函数和代码复用 (第5周)-单选题
1.以下选项不是函数作用的是: A. 提 ...
- idea看更改过的代码_就是你把所有代码全写在一个类里的?
来源 | https://urlify.cn/6jQRN3 最近,在对已有项目进行扩展的时候,发现要改动的一个类它长900行,开放了近40个public接口,我流着泪把它给改完了. 为了防止这样的惨剧 ...
- 一台微型计算机_Linux的上百万行代码,一台新的微型计算机以及Google和Microsoft的更多产品
一台微型计算机 在本周的开源新闻摘要中,我们介绍了用于Linux的一百万行代码,来自Google和Microsoft的更多开源软件,用于教育的新型微型计算机等等! 开源新闻:2015年7月4日至7月1 ...
- 押错宝!一次性将百万行代码从 Flow 迁移至 TypeScript
作者 | Caleb Meredith,Andrew Wang 译者 | 弯月 责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 以下为译文: 最近,为了紧跟时代发展的脚步, ...
- ONAP如何将Open-O和ECOMP数百万行代码合并?
今年2月份,Linux基金会旗下两大开源MANO工作组Open-O和ECOMP日前宣布正式合并成为一个组织,开放网络自动化平台(ONAP). 早在去年,AT&T就谋求将其生产环境中使用的ECO ...
最新文章
- 【VS+QT开发】找不到到qhostinfo.h文件
- 传说之下地图素材_文旅黄陵——轩辕黄帝传说故事(十一) 杜康酿酒的传说...
- codeforces1455 D. Sequence and Swaps
- Linux下Nginx的安装和简单管理
- net 中web.config一个配置文件解决方法 (其他配置文件引入方式)
- 30. 最小的K个数(C++版本)
- Java 递归求后一个数是前两个数之和
- 网易面试软件测试面试题
- M-02-10.[紫猫]Sqlite3数据库插件
- linux gpt转mbr命令,linux GPT转mbr
- PDF能编辑吗,PDF文件怎么拆分页面
- 论文研读 —— 5. FaceNet A Unified Embedding for Face Recognition and Clustering (3/3)
- 这一年,我所阐释的Linux哲学
- asp站点服务器,ASP网站搭建 ASP服务器搭建 教程
- python开发网页视频播放器_python实现媒体播放器功能
- 迁移学习和finetune的区别及迁移学习代码实现
- 用HTML做窗体程序界面
- 文件操作和IO --- 文件操作
- SAP BOM的类二维报表
- 回车符与换行符的区别
热门文章
- 计算机与代数---如何计算log---实现[2]
- word中插入手写的电子签名
- DPU-PYNQ使用笔记
- [论文阅读] 基于辅助函数的IVA(使用源先验的四阶关系)
- Excel催化剂开源第31波-pdf相关功能实现及类库介绍
- Oracle如何切换session,oracle修改process和session数
- Python中except用法和作用
- 图形化编程与python的区别_计算机编程启蒙为什么要选图形化编程和python
- C语言程序设计卢萍,卢萍
- 06- 移动端APP兼容性测试以及APP兼容性测试手机选择与云测试技术