网络安全基础篇之Linux基础知识
渗透工具、配套视频、思维导图、面试题
#扫码找小助理领取#
一.Linux介绍
Linux是一套免费使用和自由传播的操作系统内核,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统内核。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统内核。
作为Web渗透的初学者,Linux基础知识和常用命令是我们的必备技能,我们不能只会操作Windows相关的工具。一方面很多网站都是基于Linux环境搭建,比如LAMP,其安全性更好;另一方面,很多命令或工具都集成在了Linux相关环境中,比如Kali等。
常见的操作系统包括:
Windows
Linux
Unix
Mac OS
为什么世界上有了很棒的Unix,还要发展Linux呢?
20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和MacOS这几种。Unix价格昂贵,不能运行于PC;DOS显得简陋,且源代码被软件厂商严格保密;MacOS是一种专门用于苹果计算机的操作系统。此时,计算机科学领域迫切需要一个更加完善、强大、廉价和完全开放的操作系统。
由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统内部工作原理。MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个,在吸收了MINIX精华的基础上,Linus于1991年写出了属于自己的Linux操作系统,版本为Linux0.01,这是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的X86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0,至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用。
Linux为什么会引起如此强烈的反响呢?因为Unix有版权,爱好编程的狂热分子在研究Unix的时候很容易吃上官司 ,而Linux是遵循GPL协议的,可以免费使用,让黑客们尽情的施展(这里的黑客指那些技术大牛,不是指那些利用计算机干坏事的人)。于是Linux提供内核(Kernel),GNU提供外围软件,就这样GNU/Linux诞生了。总之,Linux是一款免费共享、稳定性好、支持开源(Open Source)的操作系统,适合个人用户或黑客使用。
Linux发展历程如下
1991年:第一个版本0.0.2发布,代码只有约一万行
1992年:Linux0.96拥有4万行代码,大约1000人使用且大部分是黑客
1993年:Linux0.99发布,代码量10万行,用户约2万,采用GUN的GPL协议,从此迅速发展
Linux操作系统由内核及应用程序组成,不同的厂商根据各自的需要将各种应用软件和Linux内核打包成一个Linux发行版本。Linux常见发行版本包括:
RedHat Linux
SuSE Linux
Ubuntu Linux
Debian GUN/Linux
Mandrake Linux
Turbolinux
CentOS
Linux优点包括:
免费开源
多用户、多任务
支持多平台
可靠的安全稳定性能
丰富的网络功能
良好的界面
Linux比Windows安全性更好,针对Linux的病毒和木马比较少,开源使得Linux的漏洞也更少。经过多年的发展,Linux的应用更广,服务器使用Linux后的稳定性和安全性更高,数据库、ERP、企业级Office、网站管理、RAS计算等也都开始使用Linux。当前,大部分大型互联网公司都在使用Linux提供的Web服务,包括Google搜索服务、QQ服务器、国家邮政局等都在使用Linux系统。
在安全领域,Linux主要的应用包括:
系统管理
服务搭建
渗透测试
网络维护
最后,如何学习Linux呢?
从命令开始打好基础
选择一本好书,如《Linux鸟哥私房菜》
养成在命令行下工作的习惯
学习shell命令解释器
在Linux论坛获取帮助
结合Web渗透学习专业英语
二.Linux安装
1.版本及磁盘分区
Linux内核版本由团队统一发布,其格式为:
XX.YY.XX:主版本号.次版本号.修复次数
次版本号为偶数表示稳定版,奇数表示开发版(修复BUG)
比如kernel 2.6.32,其中主版本号是“2”,次版本号是“6”,修复次数是32,由于次版本号为偶数,即稳定版。内核表示操作系统核心代码
Linux中将硬盘、分区等设备均表示为文件,磁盘分区表示如下图所示:
数字表示分区,前4个为主分区,5是逻辑分区。硬盘和分区结构如下图所示:
Linux中默认使用的文件系统类型包括:
EXT4:第3代扩展(Extended)文件系统
SWAP:交换文件系统
Linux支持的其他文件系统类型包括:
FAT16、FAT32、NTFS
XFS、JFS
如果在Windows系统中,我们选中磁盘右键属性即可查看文件类型,比如NTFS
2.安装Linux系统
安装步骤为:
1.插入安装光盘,引导安装程序(设置主机引导设备为光盘驱动且从光盘启动主机)
2.检测安装光盘的完整性
3.配置安装程序(显示语言、键盘类型、磁盘初始化、分区、时区、管理员口令等)
4.复制文件并完成安装过程
5.初始化Linux系统
建议采用虚拟机安装Linux镜像
初始化Linux系统操作包括:
用户许可协议
网络防火墙配置
SELinux配置
Kdump配置
系统日期和时间设置
添加系统用户
声卡测试
三.Linux系统基础设置
注意:我虽然使用Kali系统,但其语法和命令均是Linux,大家也可以安装RedHat等
1.安装虚拟工具及文件共享
很多同学都会疑惑,如何在主机Windows系统和虚拟机Linux系统之间传输文件呢?这里需要安装虚拟工具及文件共享设置。
第一步,在虚拟机中点击“安装 VMware Tool”选项
第二步,输入命令查看光驱挂载目录,并去到光驱指定目录
df - T
查看光驱挂载目录
mount /dev/sr0 /media
挂载Linux系统外的文件
umount /dev/sr0
卸载Linux系统外的文件,即光驱
cd /mdeia
访问指定目录
ls
文件查看,发现其是一个压缩文件
第三步,解压tar文件至“root”目录。需要注意,当我们输入“tar zxvf VM * ”时,按下Tab键,它会自动补全后续的字符串,方便我们操作
tar zwvf VMwareTools-10.0.10-4301679.tar.gz -C /root
第四步,cd去到root目录下,并运行安装VMware Tool。注意,输入“./vmware-install.pl”也可以Tab键补全,之后的安装全部按回车键选择默认即可
cd vmware-tools-distrib/
ls
./vmware-install.pl
第五步,输入“reboot”重启系统即可
文件直接拖动复制过来即可
2.远程连接
我们尝试用Windows远程连接Kali系统。这里采用mantra浏览器进行远程连接,这是Web渗透常用的一款浏览器,读者也可以使用其他工具,比如xshell、putty、xmanager
OWASP Mantra是由Mantra团队开发,面向渗透测试人员、Web 开发人员和安全专业人员的安全工具套件,它是基于浏览器Chromium和Firefox,包括扩展程序和脚本集合
第一步,调用命令查看开放端口,发现22远程连接端口未开放,安装SSH并开放端口
注意,yum是Centos上的包管理,kali需要使用apt-get进行软件安装。
netstat -tnlp
查看开tcp端口
apt-get install openssh-server
安装ssh
/etc/init.d/ssh start
开启ssh
安装ssh并开启后,我们发现22端口已经处于监听状态
第二步,设置sshd_config配置文件
此时远程连接可能会报错“Unable to make a connection. Please try again.”,可能是由于sshd设置不允许root用户远程登录。ssh连接可以远程管理Linux设备,默认端口是22,安装好系统默认是不开启的,需要修改配置文件
vi /etc/ssh/sshd_config
修改/etc/ssh/sshd_config配置文件
找到“#PasswordAuthentication yes”并把#的注释去掉。
将“PermitRootLogin without-password”修改为“PermitRootLogin yes”。
修改完后,按ESC键,输入“:wq!”保存退出,然后启动ssh服务。
/etc/init.d/ssh start
查看ssh状态,此时处于激活状态。
/etc/init.d/ssh status
接着设置开机自动启动
update-rc.d ssh enable
最后输入“reboot”重启系统并且使用工具进行远程连接。
第三步,调用Mantra浏览器进行远程连接
注意:SSH远程连接总是超时,而且一直未解决,还是太菜!o(╥﹏╥)o
3.登录密码爆破
如果我们丢失Linux密码,如何进行爆破登录呢?
第一步,在开机自检后,出现grub引导界面时,按E键进入编辑模式
第二步,再次按下E键,接着在下图中输入“空格+s”并按下回车键
第三步,选择第二个,按下B键盘
第四步,输入“passed root”,重新设置新密码
第五步,输入新密码登录即可
4.系统目录结构
Linux目录结构如下图所示,其中最顶层“/”是根目录。熟悉Linux目录非常重要,不同的目录有不同的作用。比如,搭建网站有对应的目录,代码审计同样需要熟悉目录,文件扫描更需要知道不同目录存放的文件及相关信息。
Linux根目录中输入“ls”可以查看目录结构。
各目录的功能及含义如下:
bin:Binary的缩写,存放普通用户可执行的一些命令,命令是以文件形式存储,如cat、ls、pwd等。
boot:存放系统装载引导程序、设备启动核心文件,如内核、initrd以及grub。
dev:Device(设备)的缩写,存放Linux的外部设备,包括光盘、硬盘、U盘,dev/sr0代表光驱。在Linux中访问设备的方式和访问文件的方式是相同的。
home:非常重要的一个目录,存放普通用户的家目录,该目录名通常以用户的账号命名的,相当于Windows系统的用户目录。
root:专门存放管理员用户的信息目录,也称作超级权限者的用户主目录。
lib:存放系统最基本的动态连接共享库文件,类似于Windows里的DLL文件,比如静态库“.aa”、动态库“.dll”、“.so”(share object共享库)、/lib/modules内核模块文件等。几乎所有的应用程序都需要用到这些共享库。
lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
proc:伪文件系统,生成开机临时文件。它是系统内存的映射,可以通过直接访问这个目录来获取系统信息。
sbin:Super User的缩写,存放管理员可执行命令。
srv:存放一些服务启动之后需要提取的数据。
sys:文件系统的访问,用于查看内核态的一些驱动或设备等。
usr:非常重要的一个目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
– /usr/bin:系统用户使用的应用程序。
– /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
– /usr/src:内核源代码默认的放置目录。
tmp:存放一些临时文件的。
var:非常重要的一个目录,存放系统库、系统日志(/var/message)、网站根目录(/var/www/html/)等。我们习惯将那些经常被修改的目录放在这个目录下。
run:临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向run。
接着我们补充一个知识点:在命令行中“#”和“$”表示什么意思呢?
它表示管理员用户,而 $ 表示非管理员或普通用户。比如我们创建一个普通用户就是 $ ,在Web渗透中,比如反弹shell后面是 $ ,接着我们需要提权变成#,提升成管理员权限进行后续操作
创建用户
adduser eatmount
使用用户
su - eastmount
查看id
cd /etc
id
我们创建的eastmount用户对应的符号为 $ ,并且对应的id值为1000
如果提权成功变为管理员,则对应的id值就是0,如下图所示:
END