20199113 2019-2020-2 《网络攻防实践》第八周作业
20199113 2019-2020-2 《网络攻防实践》第8周作业
1.实践内容
Linux结构
Linux操作系统的发行版本:Ubuntu、Debian、Fedora、CentOS、RHEL、OpenSUSE和Slackware等。
Linux的优势:
-
跨平台的硬件支持
-
丰富的软件支持
-
多用户多任务
-
可靠的安全性
-
良好的稳定性
-
完善的网络功能
Linux的系统结构内核的总体结构如下图:
Linux系统进程和线程管理机制
Linux 是一个多进程的操作系统, 所以其他的进程必须等到系统将处理器使用权分配给自己之后才能运行。 当正在运行的进程等待其他的系统资源时, Linux 内核将取得处理器的控制权, 并将处理器分配给其他正在等待的进程, 它按照内核中的调度算法决定将处理器分配给哪一个进程。
Linux系统内存管理机制
内存管理:是Linux内核中最重要的子系统,它主要提供对内存资源的访问控制。从系统中每个进程的角度看,地址空间中只有自身一个进程,无法感知到其他进程的存在。Linux将虚拟地址空间划分为两个部分,分别为内核空间和用户空间
Linux系统的设备处理机制
设备驱动程序:Linux内核中处理或者管理硬件控制器的软件。
基本特点:抽象了设备的处理。
Linux支持三类硬件设备:字符设备、块设备和网络设备。
Linux系统的网络机制
Linux系统的调用机制
系统调用:程序透过访问接口来访问硬件设备和其他系统资源。
Linux系统的系统调用通过软中断来实现
linux安全机制
Linux身份认证机制
-
用户:Linux可以创建多个拥有不同权限的用户。用户的类型有:root用户,拥有最高权限的用户,因此很受攻击者青睐;普通用户,由使用者创建并使用的用户,权限受限;系统用户;没有登陆的能力,用于系统运行的用户。同时linux还有用户组,同一组内的用户有相同的权限。
-
用户远程登录认证:Linux可以使用SSH服务来进行远程登陆。登陆方式有:基于口令的身份认证;公钥身份认证,将公钥放在要登陆的服务器上(可以抵抗中间人攻击)。
-
网络服务身份认证:linux提供了PAM(可插入身份认证模块),将服务的认证与服务分离开,自由的给不同的服务配置不同的认证方式。
linux授权与访问控制
- 所有文件与设备资源的访问控制都通过VFS虚拟文件系统实现
- 虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统授权和访问控制
- 文件所有者:该文件属于哪个用户
- 文件访问权限:通过附带的10个标志位进行设置
- 文件的特殊执行权限:常见的SUID、SGID权限
linux安全审计机制
主要通过三个主要的日志子系统实现
- 连接时间日志:系统管理员能跟踪谁在何时登录到系统
- 进程统计日志:为系统中的基本服务提供命令使用统计
- 错误日志记录:报告值得注意的事件
linux远程攻防
从远程网络侵入linux有如下几种
-
对linux的网络服务的用户口令进行猜测攻击。
-
发掘某个网络服务的漏洞并进行利用,注入攻击负载模块代码,然后获得本地shell的访问权。
-
通过网页木马、欺诈邮件等一些东西进行社会工程学攻击让用户主动安装执行恶意程序。
-
Linux作为一个路由器或者开启混杂模式的时候,可能会被路过的包攻击。
远程口令猜测
-
工具:Brutus、THC Hydra、Cain and Abel.
-
防御:使用强口令字;严格的口令字管理制度;在非标准端口上运行容易被攻击的服务;使用一些口令猜测攻击检测和防御软件;使用防火墙配置。
linux网络服务远程渗透攻击
截至2011Linux系统常见网络服务的安全漏洞及渗透攻击代码如下:
防范:禁用不必要的网络服务;选择更安全的网络协议与服务软件,并使用最佳安全实践部署;及时更新网络服务版本;使用xinetd、防火墙为Linux网络服务添加访问控制机制;建立入侵检测与应急响应计划流程。
攻击linux客户端程序和用户
- 攻击Linux平台的客户端程序
常用web浏览器攻击和电子邮件客户端攻击
- 攻击Linux系统用户
对服务器管理员进行Google hacking获取管理员各方面信息
- 防范措施
及时更新软件
提高自身抗欺骗能力
在下载软件的时候通过官方下载渠道,并校验MD5
攻击linux路由器和监听器
- 针对使用Linux作为路由器系统的路由器的攻击
- 针对Linux下运行的监听器的攻击,如
wireshark
、dumpcap
等 - 防范:
增强安全意识,关注厂商的安全威胁报告
及时进行固件的升级
掌握攻击者的入侵渗透手段,并进行渗透测试
linux和本地安全
linux本地特权提升
-
在攻击者获得了访问权之后,提权的最简单的方法就是获得root的用户口令,然后提权。
-
除了第一种方法,攻击者还可以利用su或者sudo的漏洞进行提权。
-
最常见的攻击方法是攻击那些有root特权程序的代码的漏洞。途径分为攻击SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞。第一种在之前提到过,第二种的原理是在运行linux kernel以及第三方内核驱动程序的时候
会有完全的系统控制权,而其中的漏洞自然成了攻击者的目标。
消灭踪迹
- linux的审计日志主要集中在/var/log下,一般攻击者在攻陷linux之后,会去修改日志,不留下自己的踪迹。
远程控制后门程序
- linux本身就有很多远程登陆和控制的软件,攻击者可以将这些原有的系统程序替换成一些别的程序,让自己随时可以登录。
二、实践过程
实践一:使用Metaploit进行Linux远程渗透攻击
使用Metaspolit作为渗透测试软件,攻击Linux靶机上的Samba服务usermap_script安全漏洞,获取Linux靶机的主机访问权限。
首先,通过命令msfconsole
启动渗透软件
通过命令use exploit/multi/samba/usermap_script
使用渗透攻击模块。
设置攻击的PAYLOAD
为cmd/unix/reverse
设置攻击参数RHOST
为靶机地址192.168.200.125
,并通过exploit开始攻击
输入ifconfig
查看靶机IP,与真实IP一致,验证了本次渗透攻击已经成功。执行whoami
查看获得权限为root,如图:
实践二:
攻击方:使用metasploit,选择靶机中发现的漏洞进行攻击,获得远程控制权,并尝试进一步获得roo权限。
防守方:使用tcpdump/wireshark/snort进行监听获得数据包文件,结合分析过程,获得攻击者的ip、目标ip和端口、攻击发起时间、攻击利用漏洞、使用shellcode、以及成功之后在命令行输入的信息。
看第一个TCP包,192.168.200.2
向192.168.200.125
发起的TCP连接请求,这应该是正式发起攻击的时间。攻击者IP:192.168.200.2
,目标IP:192.168.200.125
,目标端口:139
。
接着在此追踪TCP数据流,可以看到所使用shellcode
nohup
就是no hangup,不要挂断,忽略hup信号。标准输出内容会输出到当前目录的nohup.out日志文件中而不终端显示。sh -c...
让 bash 将一个字串作为完整的命令来执行。&>
中间没有空格。linux中的文件号,1是标准输出流,2是错误输出流,此处&>的意思是合并 标准输出和错误输出并重定向。/dev/null
是linux的一个空设备,放入这里的数据立即清除,所以只能写,读不出来什么。最后面&
就是后台运行的意思 。
攻击成功之后在本地执行的命令
3.学习中遇到的问题及解决
命令用错了。。。
4.实践总结
自己的基础知识还是不足,以后还需继续努力。。