Solución de problemas de intrusión en Linux

Solución de problemas de intrusión en Linux

Prefacio

Cuando una empresa sufre una piratería, un fallo del sistema u otro incidente de seguridad que afecta el funcionamiento normal de la empresa, es urgente abordarlo lo antes posible, para que el sistema de información de la red de la empresa pueda reanudar el trabajo normal en el menor tiempo posible. , además, encontrar el origen de la intrusión, y restaurar el proceso del accidente de intrusión, al mismo tiempo, se dan soluciones y medidas preventivas para recuperar o reducir las pérdidas económicas para la empresa.

En vista de los eventos de ataque comunes, combinados con el análisis y resolución de incidentes de respuesta de emergencia en el trabajo, se resumen algunas ideas para la investigación de intrusiones en servidores Linux.

1. Ideas de investigación de intrusiones

Seguridad de la cuenta

Uso básico:

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  查看登陆多久、多少用户,负载状态

Investigación de intrusión:

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 目录一并删除

Comando de historia

Uso básico:

Ver los comandos del sistema ejecutados por la cuenta a través del archivo .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 文件中的记录。

Investigación de intrusión:

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

Verifique el puerto anormal

Utilice el comando de conexión de red netstat para analizar el puerto sospechoso, IP, PID

netstat -antlp | more

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

Verificar procesos anormales

Utilice el comando ps para analizar el proceso

ps aux | grep pid 

Compruebe los elementos de inicio

Uso básico:

Diagrama esquemático del nivel de operación del sistema:

Nivel de ejecución sentido
0 Apagar
1 El modo de usuario único se puede imaginar como el modo seguro de Windows, utilizado principalmente para la reparación del sistema
2 Modo de línea de comando incompleto, sin servicio NFS
3 Modo de línea de comando completo, es la interfaz de caracteres estándar
4 Reserva del sistema
5 Modo de gráficos
6 Reiniciar

Ver comandos de nivel de ejecución runlevel

Nivel de permiso predeterminado del sistema

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

Archivo de configuración de arranque

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

Ejemplo: cuando necesitamos arrancar nuestro propio script, solo necesitamos colocar el script ejecutable en el directorio /etc/init.d, y luego crear un enlace flexible en el archivo /etc/rc.d/rc*.d.

Nota: El * aquí representa los siete niveles de 0,1,2,3,4,5,6

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

Aquí sshd es el archivo de script de un servicio específico, S100ssh es su enlace suave y el comienzo de S representa el inicio automático al cargar; si es un archivo de script que comienza con K, representa la necesidad de cerrarse cuando el nivel de ejecución está cargado.

Investigación de intrusión:

Archivo de inicio:

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

Verifique las tareas programadas

Uso basico

1. Utilice crontab para crear tareas programadas

  • Comando básico

    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. Utilice el comando anacron para lograr la programación de tareas de sincronización asincrónica

  • Casos de uso

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

Investigación de intrusión

Concéntrese en si hay scripts maliciosos en los siguientes directorios

/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/*

Consejos:

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

Consultar servicio

El servicio se inicia automáticamente

El primer método de modificación:

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

El segundo método de modificación:

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

El tercer método de modificación:

Utilice el comando ntsysv para administrar el inicio automático, puede administrar servicios independientes y servicios xinetd.

Investigación de intrusión

1. Consultar servicios instalados:

Servicio de instalación de paquetes RPM

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

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

Servicio de instalación del paquete de código fuente

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

Verificar archivos anormales

1. Vea directorios confidenciales, como archivos en el directorio / tmp, y preste atención a las carpetas ocultas. Las carpetas llamadas "..." tienen atributos ocultos

2. Obtener la hora de creación del descubrimiento de WEBSHELL y troyanos de control remoto, ¿cómo averiguar los archivos creados en el mismo rango de tiempo?

Puede usar el comando de búsqueda para buscar, como find / opt -iname “*” -atime 1 -type f para averiguar los archivos visitados por / opt el día anterior

3. Para archivos sospechosos, puede usar stat para crear y modificar la hora.

Verifique el registro del sistema

La ubicación de almacenamiento predeterminada de los registros: / var / log /

Ver configuración de registro: más /etc/rsyslog.conf

Archivo de registro Descripción
/ var / log / cron Se registran los registros relacionados con las tareas de temporización del sistema
/ var / log / cups Registro de información de impresión
/ var / log / dmesg Registre la información de autocomprobación del kernel cuando el sistema esté encendido, también puede usar el comando dmesg para ver directamente la información de autocomprobación del kernel
/ var / log / mailog Registrar la información del correo
/ var / log / message Un registro que registra información importante sobre el sistema. Este archivo de registro registrará la mayor parte de la información importante del sistema Linux.Si hay un problema con el sistema, lo primero que debe verificar debe ser este archivo de registro.
/ var / log / btmp Registre el registro de error de inicio de sesión. Este archivo es un archivo binario y no se puede ver directamente con vi. En su lugar, utilice el comando lastb para ver
/ var / log / lastlog Registre el registro de la última hora de inicio de sesión de todos los usuarios en el sistema. Este archivo es un archivo binario, no directamente vi, pero use el comando lastlog para ver
/ var / log / wtmp Registre permanentemente la información de inicio y cierre de sesión de todos los usuarios, así como los eventos de inicio, reinicio y apagado del sistema. El mismo archivo también es un archivo binario, no puede vi directamente, pero debe usar el último comando para ver
/ var / log / utmp Registre la información del usuario actualmente conectado. Este archivo continuará cambiando con el inicio y cierre de sesión del usuario, y solo registra la información del usuario actualmente conectado. De manera similar, este archivo no puede ser directamente vi, pero use w, who, users y otros comandos para consultar
/ var / log / secure Registre la información de autenticación y autorización, siempre que se registre el programa que involucra la cuenta y la contraseña, como el inicio de sesión SSH, su cambio de usuario, la autorización de sudo, incluso la adición de usuarios y la modificación de las contraseñas de los usuarios se registrarán en este archivo de registro

Habilidades de análisis de registros:


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

2. Herramientas

Matanza de rootkit

  • chkrootkit

    Sitio web: http://www.chkrootkit.org

    使用方法:
    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

    Sitio web: http://rkhunter.sourceforge.net

    使用方法:
    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
    

Matanza de virus

  • Clamav

    Sitio web: http://www.clamav.net/download.html

    Método de instalación uno:

    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目录并且显示有问题的文件的扫描结果
    

    Método de instalación dos:

    #安装
    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
    

matanza de concha web

Versión de Linux:

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

Verificación de RPM

La integridad del sistema se puede verificar a través del -Va que viene con rpm. Verifique todos los paquetes de software de rpm para ver qué comandos se han reemplazado:

./rpm -Va > rpm.log

Si todo se verifica correctamente, no se generará ninguna salida. Si hay inconsistencias, se mostrarán. El formato de salida es una cadena de 8 bits y cada carácter se usa para representar una comparación entre el archivo y un atributo en el Base de datos RPM. El resultado, si es. (Punto), significa que la prueba pasó.

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

Si se reemplaza el comando, si lo restaura de nuevo:

文件提取还原案例:
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/ 目录 修复文件丢失

Script de verificación de seguridad de Linux

Dirección del proyecto Github:

https://github.com/grayddq/GScan

https://github.com/ppabc/security_check

https://github.com/T0xst/linux

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43650289/article/details/112548189
Recomendado
Clasificación