一个linux的样本分析
不久前收到的一个linux样本,之前linux平台下的样本见得并不多,正好做个记录。
样本启动之后,会将自身重命名拷贝到/usr/bin下,并删除自身,如此处就将自身文件amdhzbenfi命名为usnfpnglab。
运行中的样本进程。
/bin目录下的样本文件
该样本在运行的开始会通过fork进行一定的反调试,具体步骤是fork出一个子进程,然后父进程退出,子进程继续运行。从而导致gdb附加上之后无法调试运行,因为此时gdb的目标是父进程,所有运行之后会报错,此处可以通过gdb中的命令解决(只试用与gdb6.0以上哦)。
set follow-fork-mode child
该命令运行之后告知gdb会跟进fork子进程,但是需要注意的是,样本中用不少地方调用了类似system()这样的函数,如果此时该设置依然存在的话,gdb就会跑飞,所以此时可以通过以下两条命令来将这个设置关闭。
set follow-fork-mode parent
set detach-on-fork [on|off]
首先调用函数encrypt_code解密服务端对应的指令号。
解密算法为简单的一系列异或操作。
如下图为其中解密出的一系列指令的对应号。
之后调用addsernvice函数将自身添加为linux系统的自启动程序。
实际的添加操作。
之后会调用函数decrypt_remotestr,该函数会解密本地一段加密存储的数据,该数据包含了第一次与远端通信时的远端机器的信息,解密方法与指令解密一致。
解密之后的服务器信息,此处的服务器信息为第一次认证的远程机,之后的主控机使用的是另一个ip地址。
最后,开启监听,与远端162.212.182.116主机进行通信。
建立连接之后,会首先获取肉鸡的信息,如cpu等。
随后接受服务器的返回包,通过函数exec_packet执行返回包中来自主控机的命令。
在exec_packet中解析返回包的数据,执行相应的ddos攻击操作,规则如下:
5:syn,10:ack,4:dns
发送的http攻击包。
最后将自身分别拷贝到/usr/bin,/bin,/tmp三个目录下,并删除自身。
一个linux的样本分析的更多相关文章
- linux xorddos样本分析2
逆向分析 之后我们通过ida对该样本进行更深入的分析样本的main函数中,一开始会调用函数dec_conf对样本中的大量加密的字符串进行解密,如下图所示.
- linux xorddos样本分析1
样本行为 该样本为国庆期间接到的一个应急,发现为今年比较流行的xorddos,遂分析一番. 运行之后,查看进程,可以发现可疑进程ydxrooqtno,以及ppkzkneour. 多次运行发现除了ydx ...
- 一个 Linux 上分析死锁的简单方法
简介 死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这 ...
- 【转】一个 Linux 上分析死锁的简单方法
简介 死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这 ...
- 一个LINUX狂人的语录(个人认为很精辟)
http://blog.chinaunix.net/uid-57160-id-2734431.html?page=2 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的 ...
- 【转】Linux Writeback机制分析
1. bdi是什么? bdi,即是backing device info的缩写,顾名思义它描述备用存储设备相关描述信息,这在内核代码里用一个结构体backing_dev_info来表示. bdi,备用 ...
- linux源码分析2
linux源码分析 这里使用的linux版本是4.8,x86体系. 这篇是 http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html ...
- Linux网络地址转换分析
Linux网络地址转换分析 地址转换用来改变源/目的端口,是netfilter的一部分,也是通过hook点上注册相应的结构来工作. Nat注册的hook点和conntrack相同,只是优先级不同,数据 ...
- linux串口驱动分析
linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...
随机推荐
- Effective C++ -----条款28:避免返回handles指向对象内部成分
避免返回handles(包括reference.指针.迭代器)指向对象内部.遵守这个条款可增加封装性,帮助const成员函数的行为像个const,并将发生“虚吊号码牌”(dangling handle ...
- JAVA回调接口的理解
A类持有B接口的对象引用,B接口有一个callBack()方法,C类是B类的实现类,实现了callBack()方法,把C类传入A类,当A类执行完操作后调用callBack()方法,这时候A调用的就是C ...
- (转)Delphi工程文件说明
1.DPR: Delphi Project文件,包含了Pascal代码.应用系统的工程文件2.PAS: Pascal文件,Pascal单元的源代码,可以是与窗体有关的单元或是独立的单元.3.DFM:D ...
- Qt 安装一个Service
QString command = "sc create YourServiceName binPath= \""+application_path+"\&qu ...
- 比较原声socket 、GCDAsyncSocket
原声socket NSInputStream 输入流(OC)NSOutputStream 输出流(OC)1:通过c语言的输入输出流CFReadStreamRef/CFWirteStreamRef(输入 ...
- 【SSO单点系列】(1):CAS4.0 环境的搭建
一.概述 今天开始写CAS相关的第一篇文章,这篇文章主要是关于CAS环境的搭配,提供给刚刚接触CAS的一个入门指南,并演示一个CAS的最简单的实例 二.环境要求 博主的环境如下: win8.1 64 ...
- PHP常用函数大全。
php usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_ ...
- linux退出vi
linux退出vi操作,可以先按“esc”,再按“:”,“x”即可,这是要保存退出. 假如是修改过的,不保存,即是:先按 : ,然后输入 q! 回车 假如未改动,即先按 : ,然后输入 ...
- SQLServer子查询
in谓词子查询 select * from dbo.Worker where did in (select dID from DepartMent) 比较运算子查询 select * from Wor ...
- PHP中array_merge和array相加的区别分析
今天处理一个这样的问题:如何获取字符键名相同值不同的两个数组值集合,用array_merge和数组相加都不可行,让我认真比较了下PHP中array_merge和array相加的区别 首先来看看键名是s ...