浅谈Web入侵检测

  • A+
所属分类:安全文章

做攻击久了也该总结它的常见方法和未知手段攻击要怎么检防。今年比较热门的一个话题“红蓝对抗”,无非就是用作于内部演练攻击提升防御体系。不明为啥突然又火的一个词。


首先在检测webshell前期我们需要了解它的一些特性,比如webshell 的功能有哪些?提供上传下载、提权、执行恶意命令。在基于它常见调用的命令执行、文件操作、数据库、加解密等函数,以及尽可能被bypass利用到的xor、字符串反转、压缩、截断重组的方法。了解相关信息后基于他们的信息进行关键字黑名单化,利用脚本进行检测。(网上文章转载)


在服务器中对nginx设置 统一格式传入elk。

示例1
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
'$host "$request_uri" $status'
'"$http_referer" "$http_user_agent"';

示例2
log_format main '$remote_addr [$time_local] '
'$host "$request_uri" $status "$request"'
'"$http_referer" "$http_user_agent" "$request_time"';

若不配置log_format或者不在access_log配置中指定log_format,则默认格式为:
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent";


关于变量的解释:

浅谈Web入侵检测

浅谈Web入侵检测


在未有系统,且日志量不大时可以采用对accesslog进行uri、ip等top10罗列,具体作用用于分析是否存在恶意ip、哪个接口访问过高等维度。

awk '{print $7}' access.log | sort -n |uniq -c | sort -rn | head -n 10

浅谈Web入侵检测

上述演示仅为我服务器日志。


持续访问行为其实是一个维度,还有可以去判断某些时间段内访问这个文件是否加载了js、css等文件,如果没有可以判断疑似恶意文件,毕竟在正常程序当中是会包含这些进行请求的。


getshell后一步的操作可能是需要通过菜刀、蚂剑、CKnife等工具进行连接,这块建模可以统称为基于流量特征进行检测。之前网上一篇文章针对菜刀做了相关分析:

浅谈Web入侵检测


经过解码后可以看到当前执行的命令是netstat -an,若检测到包含"z1"等字符串特征时可以判断被中国菜刀工具所连接中。


还有就是之前网传七年之久的cs后门空格

浅谈Web入侵检测

只要对常用的软件进行研究、分析,后续加入规则当中就没有这么多事了。


还有就是可以通过单一字符、少量字符构成的动态文件名进行检测,如:1.jsp、abcdefg.php之类的。以及凌晨某个时刻对x文件进行请求且没有Referer,加入weibu、ipip.net之类识别ip等作出判断是否存在历史攻击行为,如果是就可以进行告警但要联动上述说的才行,否则光靠ip来判断每天的告警数量会看不过来的。还可以加入机器算法进行处理(没研究过 略过不讲。


值得推荐阅读《企业安全数据分析实践与思考》

https://static.cdxy.me/data-knowledge-action_cdxy.pdf,看完后能学到不少。毕竟我不是专业去做这样的事情,需要再给点时间去做。


除了对原始数据进行异常检测、威胁检测以外,还需要每天有专门的安全运营去查看这些告警。安全运营的定位是什么?可以参考去年朋友圈比较火的一片文章《我理解的安全运营

https://zhuanlan.zhihu.com/p/39467201


如果在甲方需要给领导看的系统层面可以基于很多方式去做大屏进行展示,但是实际前期还是把数据收集、归类等做的足够好时,再做图形化展示效果更佳。


demo

浅谈Web入侵检测

浅谈Web入侵检测

浅谈Web入侵检测



这是之前在摩拜组了个小组做的一些事情,上述仅为设计师做的demo图罢了。其实攻击分布图当时设计挺好的,只不过前端可能不太熟悉这个导致换了比较简单先凑合。另外这个仅不过是半成品,中间掺杂较多因素,不讲了。还有很多要做的,待后续细化再见!


浅谈Web入侵检测

以上临时工所述
我司一概不负责

本文始发于微信公众号(逢人斗智斗勇):浅谈Web入侵检测

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: