# 20199131 2019-2020-2 《网络攻防实践》第8周作业
20199131 2019-2020-2 《网络攻防实践》第8周作业
1.实践内容
1.1 Linux操作系统基本框架概述
- linux系统整体架构及详细介绍如下
- Linux系统进程和线程管理机制
Linux 是一个多进程的操作系统, 所以其他的进程必须等到系统将处理器使用权分配给自己之后才能运行。 当正在运行的进程等待其他的系统资源时, Linux 内核将取得处理器的控制权, 并将处理器分配给其他正在等待的进程, 它按照内核中的调度算法决定将处理器分配给哪一个进程。 - Linux系统内存管理机制
内存管理:是Linux内核中最重要的子系统,它主要提供对内存资源的访问控制。从系统中每个进程的角度看,地址空间中只有自身一个进程,无法感知到其他进程的存在。Linux将虚拟地址空间划分为两个部分,分别为内核空间和用户空间 - Linux系统的设备处理机制
设备驱动程序:Linux内核中处理或者管理硬件控制器的软件。
基本特点是:抽象了设备的处理。
Linux支持三类硬件设备:字符设备、块设备和网络设备。 - Linux系统的网络机制
- Linux系统的调用机制
系统调用:程序透过访问接口来访问硬件设备和其他系统资源。
Linux系统的系统调用通过软中断来实现
1.2 Linux操作系统安全机制
- Linux身份认证机制
Linux用户(确保多个用户安全的使用Linux操作系统):Root根用户、普通用户、系统用户 - Linux用户组
- Linux本地登录用户认证机制
- Linux远程登录用户认证机制
- Linux的统一身份认证中间件-PAM
1.3 Linux系统远程攻防技术
- 远程口令字猜测攻击
通过前面提到的服务嗅探用户账户名或者使用缺省内件账户的用户名进行密码猜测。
口令字猜测攻击通常针对使用弱口令的的账户破解。
除了SSH网络服务之外,还可以通过对HTTP/HTTPS、FTP等用于自己账户体系和身份认证机制的网络服务进行猜测。
口令猜测的常用工具如下:Brutus、THC Hydra、Cain and Abel等工具。 - 防御远程口令猜测技术
确保每个用户都有自己的有效账户和口令字,而不是使用一个账户。
特权账户应避免远程直接登录,只能在本地登录。
口令长度至少达到8位,包含字母、数字和标点符号。
对多次认证失败进行纪录,并在多次无效登录之后断掉连接
不要再自己登录的所有系统上都使用相同的口令字
并要笔录自己的口令字
使用基于公开密钥证书的身份认证机制。
修改网络服务的默认端口。
1.4 Linux系统本地安全攻防技术
- Linux本地特权提升
本地特权提升的三种常用方式:破解Root用户的口令、发掘su和sudo程序中的安全漏洞以及攻击用户态SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞。
Linux口令字破解:通过/etc/shadow文件中纪录的口令的hash值,获取口令的加密值,后通过已知密文暴力猜测明文。
sudo缺陷进行特权提升:通过sudo程序的漏洞,绕过程序的身份认证机制,获取权限
利用用户态SUID程序:主要包括利用程序漏洞进行特权提升、本地缓冲区溢出攻击、符号连接攻击、竞争条件攻击、共享函数库攻击等 - 本地特权提升的防范措施
在安装软甲的过程中评估风险
及时对服务器进行升级维护
安全的配置系统,设置强口令字,
使用SELinux等安全增强模块
1.5 其他
2.实践过程
实践一:
实验环境:攻击机:Kali(192.168.200.17) 靶机:Metasploitable2-Linux(192.168.200.10)
Samba开放端口如下:
tcp:139、445端口
udp:137、138端口
- 打开 kali 并使用 nmap 进行扫描,发现139和445端口已经打开,可以尝试进行攻击
- 输入 msfconsole 打开 MSF命令行操作界面
- 找到usermap_script漏洞对应的攻击模块
- 使用模块
- 找到其拥有的攻击载荷(本次使用 bind_netcat载荷)
- set payload 载荷位置 使用该攻击载荷(shellcode)
- show options 查看配置参数
- set RHOST 192.168.200.10 配置载荷参数的IP为目标主机ip,set LHOST 192.168.200.17 配置载荷参数的IP为源主机ip
- exploit/run 启动攻击,成功拿到靶机权限
实践二:
实验环境:同实践一(IP地址变成了192.168.200.18)
攻击方:同实践一
防守方:
-
用wireshark抓包后,查看第一个数据包,可看到是一个ARP请求报文。接着往下看,攻击机kali(192.168.200.18)向靶机(192.168.200.10)发起的TCP连接请求,这应该是正式发起攻击的时间;
其中源端口号是44465,目的端口号是139
-
使用的shellcode
其中,nohup的意思是忽略SIGHUP信号,相当于守护进程的感觉(“守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务)
mkfifo 使用指定的文件名创建FIFO(也称为"命名管道"),允许独立的进程通讯
nc 可反弹shell命令,详见Linux下NC反弹shell命令(推荐)
根据以上信息,可以猜测这是攻击者所使用的shellcode -
攻击成功之后在本地执行的命令
3.学习中遇到的问题及解决
- 问题1:nessus无法通过web页面访问
- 问题1解决方案:卸载之后装了低一个版本的nessus
4.实践总结
把能看懂的原理尽量看懂