预备知识:

将一个程序放入到后台,悄悄的执行
  ./xxx.sh &

进程:
  用户进程:由用户来管理
  系统进程:由系统内核自行管理

系统中的每个进程,都有一个位置的ID,这就是pid,而且每次启动进程以后,PID都不相同

进程相关的命令
  jobs
    作用:查看当前运行在后台的进程有哪些
    信息
      第一列:进程编号
      第二列:进程状态
      第三列:进程是如何发起的

  fg   进程编号    把进程从后台调到前台执行
  kill %进程编号  杀死进程

  ps aux   打印系统所有进程

num=`ps aux | grep myser |wc -l`   #执行grep myser本身就会创建一个进程,如果有myser这个进程则num为2,如果没有myser这个进程,则num为1,

kill作用杀死进程
  格式:kill 信号级别 进程PID

  信号级别
    -9:斩立决。立刻杀死进程
    -15:死缓。等待现有的客户端处理完毕之后,立刻杀死进程
        【等待期间新的用户请求无法被接入】

木马最终效果
  让程序自动运行,而且是开机自动运行起来
  程序还可以自我保护
  防止程序文件被删除

实现步骤
1. 开发一个伪木马myser,位置:可以随便放,这里为了方便放在/下,实际使用时是放在非常隐蔽的目录下
#!/bin/bash
while true
do
  touch /home/`date +%T`.txt    #在/home/下每隔一秒就创建一个文件,文件名为 创建时间.txt
  sleep 1
done

创建完后赋权限        chmod +x myser

试运行      ./myser      ctrl+c停止  cd到/home/目录下查看

2. 将这个木马设置为开机自动启动
在/etc/rc.local中写入
/bin/bash /myser &

3. 开发一个检查木马进程是否正在运行的程序,check.sh ,位置:可以随便放,这里为了方便放在/下,实际使用时是放在非常隐蔽的目录下
#!/bin/bash
num=`ps aux | grep myser |wc -l`   #执行grep myser本身就会创建一个进程,如果有myser这个进程则num为2,如果没有myser这个进程,则num为1(),

if [ $num -eq 1 ];then     #num为1则表示木马进程已被杀死,需重新启动木马
  /bin/bash /myser &   # &表示后台启动,不再屏幕上出现信息
fi

创建完后赋权限        chmod +x check.sh

4.将check.sh写进或放进计划任务中

  思路1:

    写进计划任务中  但这样很容易用crontab -l 查看发现

      crontab -e     #创建计划任务

      

      每分钟执行一次

      *  *  *  *  *    # 分 时 日 月 周

      crontab -l    #查看当前创建了哪些计划任务

      

  思路2:
    将check.sh放在/etc/cron.d/cron.hourly  
    这个目录下的程序会每隔1h自动执行一次
  思路3:
    执行check.sh的计划任务写在/etc/crontab   #这个目录下的crontab中的任务计划不会出现在crontab -l中
    */5 * * * * /bin/bash /etc/check.sh
  思路4:
    在/etc/init.d下随便找个程序,将执行check的命令写进去

5.重启验证效果---------------reboot关机

  开机后在/home/下发现一堆文件

  

  脚本正在运行

  

  杀死进程

  

  过一分钟后再次查看,发现进程已重启,注意看PID是不一样的,表示进程是重新启动过的

  

  自此完成

linux下模拟一个木马程序运行过程的更多相关文章

  1. linux下第一个C程序

    首先,用vi编辑器新建一个文件 $vi hi.c 输入以下的程序(怎么用vi不说了) #include <stdio.h> int main() { printf("hello. ...

  2. linux下,一个运行中的程序,究竟占用了多少内存

    linux下,一个运行中的程序,究竟占用了多少内存 1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用 ...

  3. (转)在.NET程序运行过程中,什么是堆,什么是栈?什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗?“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗?

    转自:http://www.cnblogs.com/xiaoyao2011/archive/2011/09/09/2172427.html 在.NET程序运行过程中,什么是堆,什么是栈? 堆也就是托管 ...

  4. 作业六:分析Linux内核创建一个新进程的过程

    分析Linux内核创建一个新进程的过程 进程描述符PCB----task_struct数据结构 操作系统:1.进程管理 2.内存管理 3 文件系统 一.新进程如何创建和修改task_struct数据结 ...

  5. DirectShow程序运行过程简析

    这段时间一直在学习陆其明老师的<DirectShow开发指南>一书,书中对DirectShow的很多细节讲解清晰,但是却容易让人缺少对全局的把握.在学习过程中,整理了关于DirectSho ...

  6. 不错的linux下通用的java程序启动脚本

    不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...

  7. Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 2 部分: DTrace

    DTrace的原理本系列文章详细地介绍了一个 Linux 下的全新的调式.诊断和性能测量工具 Systemtap 和它所依赖的基础 kprobe 以及促使开发该工具的先驱 DTrace 并给出实际使用 ...

  8. Linux 下的一个全新的性能测量和调式诊断工具 Systemtap,第 1 部分: kprobe

    kprobe 的原理.编程接口.局限性和使用注意事项 本系列文章详细地介绍了一个Linux下的全新的调式.诊断和性能测量工具Systemtap和它所依赖的基础kprobe以及促使开发该工具的先驱DTr ...

  9. java 程序运行过程 简介

    这里的Java程序运行过程,是指我们编译好代码之后,在命令行开始执行java xxx命令,到java程序开始执行起来的这一过程,我们称其为运行时. 第一步,操作系统解析我们输入的java xxx命令, ...

随机推荐

  1. NIO学习笔记四 :SocketChannel 和 ServerSocketChannel

    Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器. ...

  2. 配置Tree Shaking来减少JavaScript的打包体积

    译者按: 用Tree Shaking技术来减少JavaScript的Payload大小 原文: Reduce JavaScript Payloads with Tree Shaking 译者: Fun ...

  3. css清除默认样式

    CSS 清除默认样式   通常有以下几句就够了: *{margin:0;padding:0} li{list-style:none} img{vertical-align:top;border:non ...

  4. 利用火车头采集A67手机电影教程一

    今天将讲述:利用火车头采集A67手机电影,并导入到网站中,如果你要更多更快的教程,请访问:http://www.it28.cn/category-191.html 现在以A67中的电影中的动作片为例: ...

  5. ​《数据库系统概念》1-数据抽象、模型及SQL

    ​DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DB ...

  6. Runtime消息动态解析与转发流程

    先上图: 下面根据具体代码看这张图. 一.创建一个Person类, Person.h #import <Foundation/Foundation.h> @interface Person ...

  7. 【Java入门提高篇】Day27 Java容器类详解(九)LinkedList详解

    这次介绍一下List接口的另一个践行者——LinkedList,这是一位集诸多技能于一身的List接口践行者,可谓十八般武艺,样样精通,栈.队列.双端队列.链表.双向链表都可以用它来模拟,话不多说,赶 ...

  8. vue.js的安装

    使用nodejs安装Vue-cli 1.安装完成node,node有自带的npm,可以直接在cmd中,找到nodeJs安装的路径下,进行命令行全局安装vue-cli.(npm install --gl ...

  9. python 3.3.2报错:No module named 'urllib2'

    ModuleNotFoundError: No module named 'urllib3' 1. ImportError: No module named 'cookielib'1 Python3中 ...

  10. JDBC数据类型、Java数据类型、标准sql类型

    本概述是从<JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference>这本书中摘引来的.JavaSoft ...