知识屋:更实用的电脑技术知识网站
所在位置:首页 > 网络安全 > 安全资讯

处理被ssh-scan入侵的Linux主机记录

发布时间:2014-07-15 11:50:30作者:知识屋

早上发现一台Linux AS 4的主机被Hacker入侵了,有一大堆scanssh的进程。
 
入侵者一般利用oracle/sybase/nagios/tuxedo等常用Linux/UNIX的应用服务的用户名套passwd.txt等口令字典文件循环尝试用22端口ssh登录。
 
再在局域网中查找使用了弱口令的“肉鸡”的主机,试图入侵。
 
再一看进程,好多ssh-scan的进程。估计是密码设得太简单,被人家黑了。处理思路:找到ssh-scan进程的相应程序文件,删除之。
       先查看定时任务,没有看到有异常的定时任务。
       最后处理步骤如下:
      1、ps -ef|grep ssh-scan (或ps –ajxf)
ps -ef|grep ssh
500       8923     1  0 Jul02 ?        00:00:22 ./scanssh
500       8928     1  0 Jul02 ?        00:00:22 ./scanssh
500       8929     1  0 Jul02 ?        00:00:20 ./scanssh
500       8937     1  0 Jul02 ?        00:00:18 ./scanssh
500       8938     1  0 Jul02 ?        00:00:21 ./scanssh
500       8939     1  0 Jul02 ?        00:00:21 ./scanssh
500       8941     1  0 Jul02 ?        00:00:18 ./scanssh
500       8948     1  0 Jul02 ?        00:00:17 ./scanssh
500       8949     1  0 Jul02 ?        00:00:14 ./scanssh
500       8953     1  0 Jul02 ?        00:00:21 ./scanssh
500       8955     1  0 Jul02 ?        00:00:17 ./scanssh
500       8957     1  0 Jul02 ?        00:00:27 ./scanssh
500       8966     1  0 Jul02 ?        00:00:22 ./scanssh
500       8967     1  0 Jul02 ?        00:00:22 ./scanssh
500       8968     1  0 Jul02 ?        00:00:22 ./scanssh
500       8969     1  0 Jul02 ?        00:00:10 ./scanssh
500       8971     1  0 Jul02 ?        00:00:21 ./scanssh
500       8975     1  0 Jul02 ?        00:00:00 ./scanssh
500       8980     1  0 Jul02 ?        00:00:00 ./scanssh
500       8984     1  0 Jul02 ?        00:00:18 ./scanssh
500       8986     1  0 Jul02 ?        00:00:06 ./scanssh
500       8996     1  0 Jul02 ?        00:00:03 ./scanssh
500       9015     1  0 Jul02 ?        00:00:31 ./scanssh
500       9016     1  0 Jul02 ?        00:00:21 ./scanssh
500       9019     1  0 Jul02 ?        00:00:19 ./scanssh
500       9025     1  0 Jul02 ?        00:00:21 ./scanssh
500       9026     1  0 Jul02 ?        00:00:20 ./scanssh
500       9031     1  0 Jul02 ?        00:00:37 ./scanssh
500       9059     1  0 Jul02 ?        00:00:00 ./scanssh
500       9061     1  0 Jul02 ?        00:00:00 ./scanssh
500       9062     1  0 Jul02 ?        00:00:00 ./scanssh
500       9066     1  0 Jul02 ?        00:00:20 ./scanssh
500       9067     1  0 Jul02 ?        00:00:21 ./scanssh
500       9077     1  0 Jul02 ?        00:00:20 ./scanssh
500      18696     1  0 Jun28 ?        00:00:00 ./scanssh
500      18697     1  0 Jun28 ?        00:00:00 ./scanssh
500      18698     1  0 Jun28 ?        00:00:00 ./scanssh
500      18699     1  0 Jun28 ?        00:00:00 ./scanssh
500      18706     1  0 Jun28 ?        00:00:00 ./scanssh
500      18715     1  0 Jun28 ?        00:00:00 ./scanssh
500      18716     1  0 Jun28 ?        00:00:05 ./scanssh
500      18727     1  0 Jun28 ?        00:00:00 ./scanssh
500      18731     1  0 Jun28 ?        00:00:00 ./scanssh
500      18733     1  0 Jun28 ?        00:00:00 ./scanssh
500      18740     1  0 Jun28 ?        00:00:00 ./scanssh
500      18741     1  0 Jun28 ?        00:00:02 ./scanssh
500      18747     1  0 Jun28 ?        00:00:00 ./scanssh
500      18760     1  0 Jun28 ?        00:00:04 ./scanssh
500      18762     1  0 Jun28 ?        00:00:00 ./scanssh
500      18767     1  0 Jun28 ?        00:00:00 ./scanssh
500      18770     1  0 Jun28 ?        00:00:01 ./scanssh
500      18789     1  0 Jun28 ?        00:00:00 ./scanssh
500      18791     1  0 Jun28 ?        00:00:00 ./scanssh
500      18800     1  0 Jun28 ?        00:00:00 ./scanssh
500      18821     1  0 Jun28 ?        00:00:00 ./scanssh
500      18822     1  0 Jun28 ?        00:00:00 ./scanssh
500      18823     1  0 Jun28 ?        00:01:10 ./scanssh
500      18824     1  0 Jun28 ?        00:00:00 ./scanssh
500      18828     1  0 Jun28 ?        00:01:17 ./scanssh
500      18829     1  0 Jun28 ?        00:00:04 ./scanssh
500      18832     1  0 Jun28 ?        00:00:00 ./scanssh
500      18833     1  0 Jun28 ?        00:00:00 ./scanssh
500      18836     1  0 Jun28 ?        00:00:00 ./scanssh
500      18838     1  0 Jun28 ?        00:00:00 ./scanssh
500      18841     1  0 Jun28 ?        00:00:02 ./scanssh
500      18842     1  0 Jun28 ?        00:00:03 ./scanssh
500      18863     1  0 Jun28 ?        00:00:02 ./scanssh
500      18866     1  0 Jun28 ?        00:00:00 ./scanssh
500      18884     1  0 Jun28 ?        00:00:00 ./scanssh
500      18896     1  0 Jun28 ?        00:00:02 ./scanssh
500      18899     1  0 Jun28 ?        00:00:00 ./scanssh
500      18902     1  0 Jun28 ?        00:00:00 ./scanssh
500      18907     1  0 Jun28 ?        00:00:00 ./scanssh
500      18916     1  0 Jun28 ?        00:00:16 ./scanssh
500      18917     1  0 Jun28 ?        00:00:00 ./scanssh
500      18938     1  0 Jun28 ?        00:00:04 ./scanssh
500      18942     1  0 Jun28 ?        00:00:00 ./scanssh
500      18943     1  0 Jun28 ?        00:00:02 ./scanssh
500      18947     1  0 Jun28 ?        00:00:00 ./scanssh
500      18951     1  0 Jun28 ?        00:00:00 ./scanssh500      18953     1  0 Jun28 ?        00:00:00 ./scanssh
500      18969     1  0 Jun28 ?        00:00:00 ./scanssh
500      18982     1  0 Jun28 ?        00:00:00 ./scanssh
500      18988     1  0 Jun28 ?        00:00:00 ./scanssh
500      19018     1  0 Jun28 ?        00:00:13 ./scanssh
500      19027     1  0 Jun28 ?        00:00:00 ./scanssh
500      19053     1  0 Jun28 ?        00:00:30 ./scanssh
500      19061     1  0 Jun28 ?        00:00:00 ./scanssh
500      19086     1  0 Jun28 ?        00:00:19 ./scanssh
500      19095     1  0 Jun28 ?        00:00:00 ./scanssh
500      19103     1  0 Jun28 ?        00:00:00 ./scanssh
500      19111     1  0 Jun28 ?        00:00:00 ./scanssh
root     24539 27230  0 11:32 ?        00:00:00 sshd: swzj [priv]
swzj     24541 24539  0 11:32 ?        00:00:00 sshd: swzj@pts/6
root     27230     1  0 Apr12 ?        00:01:34 /usr/sbin/sshd
root     27657 24598  0 13:28 pts/6    00:00:00 grep ssh

 

 
  
 
      2、找到ssh-scan对应的进程号PID,如有一个是19061 。
      3、进入到/proc/PID对应的目录,cd /proc/19061
      4、ls -al,查看cwd和exe对应的选项,找到应用程序所在目录。
      5、将其全部杀死后killall -9 scanssh,删除对应目录。
       或者 # ps -ef|grep -v grep|grep scanssh|awk '{print $2}'|xargs kill
            # ps -ef|grep -v grep|grep SCREEN|awk '{print $2}'|xargs kill
      6、将用户密码全部修改。
     用netstat -an|grep 22看,仍然有很多连接,reboot服务器,系统运行正常。
 
   另,参考链接:http://www.vvvk.net/archives/311#more-311
附录:/PROC目录介绍
原文:http://www.freeos.com/articles/2879/  translated by bugzilla_zhu
Proc 文件系统是一个实时的,常驻内存的文件系统,它跟踪进程在你机器上的运行情况和你系统的状态。继续你可以学到很多/proc文件的知识。
/proc 伪文件系统最令人震惊的是它事实上不存在于任何的媒介上。/proc文件系统是常驻虚拟内存并且维持着操作系统的动态数据的一个伪文件系统。大部分的 /proc文件系统信息被实时更新来与当前操作系统的状态一致。/proc文件系统的内容能被任何有相应权限的人读取。但是,/proc文件系统的特定的 部分只能被这个进程的拥有者和root用户读取。/proc文件系统的内容从特定的/proc目录得到数据并且显示出来,它们有很多用途。
在 linux下,我们有工具像lscpi,scanpci和pnpdump,它们帮助我们检测大量的PCI,ISA 硬件芯片设置并且帮助我们对io,dma和irq的值作最好的选择。通过查看/proc文件系车母髦植问?闹担?颐强梢钥吹叫矶嗄诤撕徒?痰牡鼻白刺?� 我们用dmesg命令举个例子。
bash# dmesg
Dmesg 帮助我们确定已经被内核检测到和初始化的设备。我们有工具像"ps"和"top",给我们一个准确的快照,这个快照是关于进程在机器上运行的状态和一个当 前运行在机器上的清醒和睡眠的进程的列表。你曾经想过这些通过"ps"和"top"进程给出的信息的准确的出处吗?这些进程的信息来自/proc文件系 统,当进程发生改变的时候它随时更新。
让我们看一下linux机器的root目录的列表快照。
drwxr-xr-x 14 root root 291 Oct 25 18:47 opt
dr-xr-xr-x 86 root root 0 Nov 30 2000 proc <--
drwx--x--x 16 root root 841 Nov 20 00:10 root
drwxr-xr-x 5 root root 4627 Oct 15 11:42 sbin

 

因为/proc文件系统是一个虚拟的文件系统并且常驻内存,每次当你的linux机器重启的时候它被重新创建。看一下上面的root目录。proc目录的大小是0并且最后一次修改时间是当前日期。
使用/proc/sys文件系统来解析内核参数。
/proc文件系统的另一个非常重要的部分是/proc/sys目录。在这个目录下你可以对指定的内核参数做实时的改变。一个好的例子如下。
/proc/sys/net/ipv4/ip_forward
当 你cat这个文件的内容的时候你可以看到以上这个文件中ip_forward有一个默认值为"0"。这意味着通过这个机器作IP转发是不允许的。但是通过 改变这个文件中的值从"0"到"1",这个配置能实时地被改变。然后我们立刻可以在我们的linux机器上作IP转发,不用重启系统。/proc文件系统的内容
/proc目录列表如下。实际的列表很长。我们下面给出的是一个比较短的版本。
1 114 1210 1211 1212 1227 133 137 148 160 161 163 167 168 169
170 171 172 173 174 186 190 193 194 195 203 206 207 208 209
210 211 220 221 222 223 224 225 226 227 229 230 234 246 253 279
296 3 4 5 500 501 6 667 668 669 683 684 685 7 711 712 713 737 763
764 765 766 773 774 775 782 79 88 92 asound bus cmdline config.gz
cpuinfo devices dma fb filesystems fs ide interrupts ioports
kcore kcore_elf kmsg ksyms loadavg locks lvm mdstat meminfo
memstat misc modules mounts net partitions pci rtc scsi self
slabinfo stat swaps sys tty uptime version

 

在上面的快照中你看到的每一个数字和单词都是/proc目录的内容。让我们学习更多这个目录中用数字命名的内容。
数字命名的目录
1 114 1210 1211 1212 1227 133 137 148 160 161 163 167 168 169
170 171 172 173 174 186 190 193 194 195 203 206 207 208 209
210 211 220 221 222 223 224 225 226 227 229 230 234 246 253 279
296 3 4 5 500 501 6 667 668 669 683 684 685 7 711 712 713 737 763
764 765 766 773 774 775 782 79 88 92

 

你看到的大量在这里列出的目录是进程,在我们对/proc文件系统作快照的时候它们正运行在你的机器上。让我们看一下目录的内容。
freeos:~ # cd /proc
freeos:/proc # ls -la 114
total 0
dr-xr-xr-x 3 named named 0 Nov 30 12:20 .
dr-xr-xr-x 89 root root 0 Nov 30 2000 ..
-r--r--r-- 1 root root 0 Nov 30 12:20 cmdline
lrwx------ 1 root root 0 Nov 30 12:20 cwd -> /var/named
-r-------- 1 root root 0 Nov 30 12:20 environ
lrwx------ 1 root root 0 Nov 30 12:20 exe -> /usr/sbin/named
dr-x------ 2 root root 0 Nov 30 12:20 fd
pr--r--r-- 1 root root 0 Nov 30 12:20 maps
-rw------- 1 root root 0 Nov 30 12:20 mem
lrwx------ 1 root root 0 Nov 30 12:20 root -> /
-r--r--r-- 1 root root 0 Nov 30 12:20 stat
-r--r--r-- 1 root root 0 Nov 30 12:20 statm
-r--r--r-- 1 root root 0 Nov 30 12:20 status

 

在我们执行命令之前我们需要作为root登录,因为大量的运行在系统上的进程可能被其他人拥有。通常你只有权限访问你开启的进程。在作为root登录之后,对任意的目录执行以上的命令并且与以上的输出作比较。
你有没有注意到你得到的输出与上面列出的内容有任何相似之处?是的,所有你选择查看的无关的目录的内容都是一样的,因为这些目录包括大量的进程的参数和状态,它的PID是你所在的当前目录的名字。各个参数的值和状态信息当然因进程不同而不同。
看上面输出的第一行。
-r--r--r-- 1 root root 0 Nov30 12:20 cmdline
"cmdline",这个文件包含整个用来产生进程的命令行。这个文件的内容是命令行参数包括传递来启动进程的所有参数。所有包含在这个文件的信息即命令和各个启动参数,没有任何的格式和任何的空格。
lrwx------ 1 root root 0 Nov 30 12:20 cwd -> /var/named
"cwd",像我们从上面看见的,这是一个符号链接,它指向进程的当前工作目录。
-r-------- 1 root root 0 Nov 30 12:20 environ
"environ"包括在VARIABL=value为这个进程定义的所有的环境变量。正如"cmdline"一样,包含在文件中的命令和各个参数的信息没有任何的格式和空格。
lrwx------ 1 root root 0 Nov 30 12:20 exe -> /usr/sbin/named
"exe",这是一个符号链接指向启动当前进程的可执行文件。
dr-x------ 2 root root 0 Nov 30 12:20 fd
"fd",这个目录包括被指定进程打开的文件描述符。
pr--r--r-- 1 root root 0 Nov 30 12:20 maps
"maps", 当你打出这个命名管道的内容,你可以看到进程的地址空间部分,当前被映射到一个文件。这个部分,从左到右是:和这个映射有关的地址空间,和这个映射有关的 权限,距离文件开始(即这个映射开始的地方)的偏移量,这个映射文件所在的设备,文件的inode号,最后是文件名本身。
"root",这是一个符号链接指向这个进程的/proc目录。
-r--r--r-- 1 root root 0 Nov 30 12:20 status
"status",这个文件给你有关进程名的信息,它的当前的状态,睡眠或者清醒,它的PID,UID,PPID和大量其它基本信息。这个信息可以在一个更简单和结构化的语法中看到,通过使用工具如"ps"和"top"。
关于大量/proc/*目录的基本信息
这个信息已经存在LASG, 第三章《/proc  文件系统》中。
/proc/cpuinfo
关于处理器,诸如它的类型,产地,型号和性能。
/proc/devices
当前运行的内核配置的设备的驱动列表。
/proc/dma
显示DMA通道此刻正在被使用。
/proc/filesystems
内核配置的文件系统。
/proc/interrupts
显示在使用的中断,和每个中断已经使用的次数
/proc/ioports
哪一个I/O端口正在使用
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜