【应急响应】————7、服务器大量发包

背景

一哥们反应自己的测试机器总是关机,联系云主机客服得知服务器总是大量发包,导致技术关停该机器。

排查过程

Last查看登录记录

查找到一个可疑IP

[root@i-9kp9tipm dpkgd]# grep "1.180.212.21" /var/log/secure*
/var/log/secure-20170409:Apr  4 22:20:43 i-9kp9tipm sshd[25921]: Accepted password for root from 1.180.212.21 port 5777 ssh2
/var/log/secure-20170409:Apr  4 23:21:16 i-9kp9tipm sshd[29214]: Accepted password for root from 1.180.212.21 port 50625 ssh2
/var/log/secure-20170409:Apr  5 00:13:12 i-9kp9tipm sshd[31509]: Accepted password for root from 1.180.212.21 port 12305 ssh2
/var/log/secure-20170409:Apr  5 00:24:56 i-9kp9tipm sshd[32029]: Accepted password for root from 1.180.212.21 port 12334 ssh2

查看所有登录成功的记录

确认后得知119.254.100.106和124.207.112.10为正常IP,但是这哥们的Root密码也算是复杂。
既然Root被拿了,那么看一下常用命令呢

发现ps和netstat被替换

发现ss被替换

发现2进制程序pythno和.sshd,并且在bsd-port下也有两个可执行程序
在dpkgd目录下发现替换之前的命令

看一下.sshd文件的时间点。

用Strings查看一下

发现里面有很多IP地址。

查看下当前的连接:

发现了3个可以进程1742、1677、1683
看一下这些可执行程序在什么地方

发现这个ps看不到1742,然后我从自己主机上拷贝了一个ps过来,再执行下

这三个2进制程序

然后哥们反馈的是开机就会大量发包,来看下crontab,没有异常。查看rc.local没有异常。查看/etc/cron*没有异常。检查/etc/init.d的时候发现

/tmp下发现DDOS客户端文件

检查history没有发现操作记录。
检查mysql,发现密码简单123456,启动权限为mysql,plugin目录没有写入权限。
history中看到哥们之前有安装redis,且redis.conf中没有配置pass,检查/root/.ssh下没有发现异常,查看redis键未发现异常。
中间件是tomcat,发现/manager/html,没有账户。
项目为java项目,用到了struts2,检查struts2的版本

查看access log

没有发现异常

处理方式

1)加强SSH和Mysql密码,SSH限制IP访问,redis后期如果使用需配置认证。如无需对外提供服务,仅监听本地。
2)升级struts2到2.3.32版本
3)杀死进程

4)删除木马文件,拷贝正常命令

5)删除开机启动项

6)重启

网络协议编辑器是一个用于创建、编辑和发送网络协议数据包的工具。在Java中,你可以使用一些库来实现一个简单的网络协议编辑器。 一个常用的Java库是Netty,它提供了用于构建高性能、可扩展的网络应用程序的API。你可以使用Netty来创建一个网络协议编辑器,并使用它发送自定义的网络协议数据包。 下面是一个简单的示例代码,演示了如何使用Netty发送自定义的网络协议数据包: ```java import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; public class ProtocolEditor { private String serverHost; private int serverPort; public ProtocolEditor(String serverHost, int serverPort) { this.serverHost = serverHost; this.serverPort = serverPort; } public void sendPacket(byte[] packetData) { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap bootstrap = new Bootstrap() .group(group) .channel(NioSocketChannel.class) .option(ChannelOption.TCP_NODELAY, true) .handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(new ChannelInboundHandlerAdapter() { @Override public void channelActive(ChannelHandlerContext ctx) { ctx.writeAndFlush(packetData); } }); } }); bootstrap.connect(serverHost, serverPort).sync().channel().closeFuture().sync(); } catch (Exception e) { e.printStackTrace(); } finally { group.shutdownGracefully(); } } public static void main(String[] args) { String serverHost = "127.0.0.1"; int serverPort = 8080; // 创建一个 ProtocolEditor 对象 ProtocolEditor editor = new ProtocolEditor(serverHost, serverPort); // 构造自定义的网络协议数据包 byte[] packetData = new byte[]{0x01, 0x02, 0x03}; // 发送网络协议数据包 editor.sendPacket(packetData); } } ``` 上述代码中的 `sendPacket` 方法用于发送自定义的网络协议数据包。你可以根据自己的需求修改和扩展该方法来实现更复杂的功能。 希望以上信息对你有帮助!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值