注:本笔记来自掌控安全kali基础课程
第一章:战前准备—环境安装
第一节:kali快速安装配置及常见问题
一、VMware网络配置
1、bridged(桥接模式)
虚拟机和主机好比在同一个网络环境下的两台电脑;
2、NAT(网络地址转换模式)
NAT模式虚拟机通过主机进行联网;
3、Host-Only(主机模式)
主机模式将虚拟机与外网隔开,只能让虚拟机和虚拟机之间联网。
二、kali系统更新
1、kali为什么要更新?
(1)系统源
源配置(软件源)概念:源就是来源。就是你安装软件时,程序从哪里获取软件包(安装程序在你的机器上,但需要安装的东西却在软件源服务器上)。其实你可以把他称为软件仓库。安装软件时,就是从仓库里面调取数据放在你的机器上。
(2)Linux下载软件的两种方式
①从源配置(软件源)所在服务器上通过特定命令获取JDK,Tomcat之类的软件包(推荐)
②从官网上下载软件包
(3)注意
第一次更新源的过程就相当于我们刚装好windows系统需要打补丁
2、选择不更新Metasploit
查看当前的系统中所有软件包状态
sudo dpkg --get-selections | more
可以找到metasploit-framework软件包,名为“metasploit-framework”
给metasploit-framework锁定当前版本不更新
sudo apt-mark hold metasploit-framework
查看当前己锁定的软件包
sudo dpkg --get-selections | grep hold
取消软件保留设置
sudo apt-mark unhold metasploit-framework
3、kali系统更新后出现问题
进入/user/share/metasploit-frame目录下
使用命令gem install bundler
gem update --system然后成功启动
三、配置kali系统源
1、kali系统更新源
(1)使用编辑器打开系统源文本
leafpad /etc/apt/sources.list
(2)填写成清华大学源
#清华大学
#deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
(3)使用更新命令
apt-get update && apt-get upgrade && apt-get dist-upgrade
四、SSH服务
1、简介
是目前较可靠,专为远程服务登录器和其他网络服务提供安全性的协议。
2、作用
能够操作远程服务器系统;
3、配置SSH服务
(1)使用编辑器打开ssh配置
leafpad /etc/ssh/sshd_config
(2)搜索:
#PasswordAuthentication yes (去掉注释)
#PermitRootLogin prohibit-password (去掉注释后面的并删除改为yes)
(3)使用命令行模式开启SSH服务
service ssh start
(4)查看服务开启状态
service ssh status
(5)登陆测试
使用xshell、putty等工具测试
五、kali工具包简介
1、信息收集:这类工具主要用来帮助我们收集目标的网站架构、网站脚本语言、网站信息泄露等
2、漏洞评估:这类工具都可以扫描目标系统上的漏洞,扫描主机漏洞,系统漏洞
3、漏洞利用:这类工具可以利用在目标系统中发现的漏洞,让我们针对性的去利用攻击
4、web应用:即与Web应用有关的工具,关于web方面的扫描器、爆破等工具
5、密码攻击:提供在线密码破解或者是离线的密码破解工具给我们使用
第二节:Kali Linux基础命令讲解介绍
一、shell
1、概念
在计算机科学中,shell俗称外壳(用来区别于内核),它类似于Windows的DOS,能够接受用户的命令并翻译给操作系统执行,是用户与操作系统(内核)之间的桥梁。
2、与终端的区别
终端:接收用户的输入,并且传递给shell程序,接收程序输出并展示到屏幕;
shell:接收并解析用户的命令给操作系统执行,将结果输出到终端;
二、vim编辑器
vim编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大程度不逊色于任何最新的文本编辑器。
vim具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;
vim可以当做vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息;
vim会依据文件扩展名或者是文件内的开头信息,判断该文件的内容而自动的执行该程序的语法判格式,再以颜色来显示程序代码与一般信息;
vim里面加入很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等,这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能;
(1)vi/vim编辑器模式
①命令模式(默认):刚进入vim的时候,默认就是命令模式,可以复制行,删除行等;
②输入模式:可以输入内容;
(2)模式转换
①使用insert键切换进入输入模式
②命令模式——>输入模式:
i:在当前光标所在字符的前面,转为输入模式;
I:在当前光标所在行的行首转换为输入模式;
a:在当前光标所在字符的后面,转为输入模式;
A:在光标所在行的行尾,转换为输入模式;
o:在当前光标所在行的下方,新建一行,并转为输入模式;
O:在当前光标所在行的上方,新建一行,并转为输入模式;
s:删除光标所在字符
r:替换光标处字符
(3)输入模式——>命令模式
ESC键
(4)关闭、保存文档
①shift键+:号
②命令模式下:
w:保存
q:退出
wq和x都是保存退出
q!:强制退出
w!:强制保存,管理员才有权限
(5)查找
普通模式:
/PATTERN:从当前位置向后查找
?PATTERN:从当前位置向前查找
三、Linux常见命令
echo命令:用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”
例如:
[root@linux test]# echo "11111" #输出11111
[root@localhost ~]# echo -e "a\nb\nc"
a
b
c
date命令:用于显示及设置系统的时间或日期,格式为“date[选项] [+指定的格式]”
例如
[root@localhost www]# date #显示日期和时间
2013年 05月 04日 星期六 14:35:33 CST
[root@localhost www]# date -s '14:35:40' #设置时间
2013年 05月 04日 星期六 14:35:40 CST
poweroff命令:用于关闭系统,其格式为poweroff
例如
poweroff -f
top命令:显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率等,格式为“top[参数]”
例如
[root@linux ~]# top #显示系统进程信息
[root@linux ~]# top -b #以批处理模式显示程序信息
[root@linux ~]# top -S #以累积模式显示程序信息
[root@linux ~]# top -n 2 #设置信息更新次数,表示更新2次后终止更新显示
[root@linux ~]# top -d -3 #设置信息更新时间,表示更新周期为3秒
[root@linux ~]# top -p 1138 #显示进程号为1138的进程信息,CPU、内存占用率等
ifconfig命令:用于获取网卡配置与网络状态等信息,格式为“ifconfig[网络设备] [参数]
例如
[root@localhost ~]# ifconfig #处于激活状态的网络接口
[root@localhost ~]# ifconfig -a #所有配置的网络接口,不论其是否激活
uname命令:用于查看系统内核与系统版本等信息,格式为“uname[-a]”
例如
[root@localhost ~]# uname -a #显示系统信息
Linux localhost.localdomain 2.6.18-238.12.1.el5 #1 SMP Tue May 31 13:23:01 EDT 2011 i686 i686 i386 GNU/Linux
[root@localhost ~]# uname -m #显示系统类型,一般情况下,i386,i686是32位系统,X86,X86_64是64位系统
i686
[root@localhost ~]# uname -n #查看主机名
localhost.localdomain
[root@localhost ~]# uname
Linux
who命令:用于查看当前登入主机的用户终端信息,格式为“who[参数]”
例如
[root@localhost ~]# who #显示目前登入系统的用户信息
tank tty1 2013-05-10 08:29
tank pts/0 2013-05-10 08:29 (192.168.56.1)
[root@localhost ~]# who -a #显示目前登入系统的用户详细信息
系统引导 2013-05-10 08:11
运行级别 2 2013-05-10 08:11
登录 tty4 2013-05-10 08:11 814 id=4
登录 tty5 2013-05-10 08:11 825 id=5
登录 tty2 2013-05-10 08:11 842 id=2
登录 tty3 2013-05-10 08:11 845 id=3
登录 tty6 2013-05-10 08:11 852 id=6
tank - tty1 2013-05-10 08:29 01:08 1395
tank + pts/0 2013-05-10 08:29 . 1493 (192.168.56.1)
[root@localhost ~]# who -q #列出所有已登录用户的登录名与用户数量
tank tank
# 用户数=2
[root@localhost ~]# who -u #列出已登录的用户
tank tty1 2013-05-10 08:29 01:08 1395
tank pts/0 2013-05-10 08:29 . 1493 (192.168.56.1)
[root@localhost ~]# who -r #查看已登录的用户的级别
运行级别 2 2013-05-10 08:11
[root@localhost ~]# who -b #上次系统启动时间
系统引导 2013-05-10 08:11
history命令:用于显示历史执行过的命令,格式为“history[-c]”
例如
[root@redhat ~]# history #查看所有执行过的命令
1 ls
2 pwd
3 fc -l
4 history
[root@redhat ~]# history 2 #显示2条
4 history
5 history 2
[root@redhat ~]# !4 #执行编号是4的命令,注意感叹号
history
1 ls
2 pwd
3 fc -l
4 history
5 history 2
6 history
[root@redhat ~]# history -c #清除历史记录
last命令:用于列出目前与过去登入系统的用于相关信息
例如
[root@linux ~]# last -6 #6条登录记录
[root@linux ~]# last –n 15 #15登录记录
[root@linux ~]# last -n 10 zhangy #输出10条zhangy的登录记录
pwd命令:用于显示用户当前所处的工作目录,格式为“pwd [选项]”
例如
[root@rudder home]# pwd #显示当前目录
/home
[root@web mail]# pwd -P #目录是软连接,显示实际物理地址
/var/spool/mail
[root@web mail]# pwd -L #-L显示,逻辑地址
/var/mail
cd命令:用于切换工作路径,格式为“cd [目录名称]”
例如
[root@localhost ~]# cd /home/ #切换到home目录
[root@localhost home]# cd - #返回切换到home前的目录
/root
[root@localhost ~]# cd ../ #切换到上一级目录
[root@localhost ~]# cd ../../ #返回上上一层目录
ls命令:用于显示目录中的文件信息,格式为“ls [选项] [文件]”
例如
[root@s01 dev]# ls -d */ #列出当前所有目录
block/ bus/ cpu/ fd/ input/ net/ raw/ snd/
第三节:kali Linux基础命令讲解介绍(二)
一、文本文件编辑命令
cat命令:用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”
例如
[root@localhost ~]# cat test #普通输出
1111111111
2222222222
3333333333
[root@localhost ~]# cat -n test #开头显示行号
1 1111111111
2
3
4 2222222222
5
6 3333333333
[root@localhost ~]# cat -E test #以$结束
1111111111$
$
$
2222222222$
$
3333333333$
[root@localhost ~]# cat -s test #超过二个空行,合并成一个
1111111111
2222222222
3333333333
[root@localhost ~]# cat -ns test #去空行,加行号
1 1111111111
2
3 2222222222
4
5 3333333333
more命令:用于查看纯文本文件(内容较多的),格式为“more[选项]文件”
例如
[root@localhost zhangy]# more test.php #查看文件
[root@localhost zhangy]# netstat -tpnl |more #常用方式,分页显示
head命令:用于查看纯文本文档的前N行,格式为“head [选项] [文件]”
例如
[root@linux ~]# head /etc/passwd #默认,显示开头前10行
[root@linux ~]# head -10 /etc/passwd #显示开头前10行
[root@linux ~]# head -q -n 10 file1 file2 file3 #显示多文件开头前10行,并且不显示文件名的文件头
[root@linux ~]# head -n -10 /etc/passwd #除最后10行外,显示剩余全部内容。
wc命令:用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”
例如
[root@localhost ~]# cat /etc/passwd |wc -l #查看passwd文件有多少行
38
[root@localhost ~]# echo "aaa bbb ccc" |wc -w #查看输出有多少个单词
3
[root@localhost ~]# echo "12344" |wc -m #查看输出有多少个字符
6
stat命令:用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”
例如
[root@www ~]#stat abc.ph
文件:"abc.ph"
大小:0 块:0 IO 块:4096 普通空文件
设备:801h/2049d Inode:1200314 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2013-05-14 13:24:30.830729223 +0800
最近更改:2013-05-14 13:24:30.830729223 +0800
最近改动:2013-05-14 13:24:30.830729223 +0800
创建时间:-
touch命令:用于创建空白文件或设置文件的时间,格式为“touch[选项] [文件]”
例如
[root@linux ~]# touch test.php #将test.php的档案时间改为,当前时间,文件不存在建之
[root@linux ~]# touch -c -t 05061803 test.php #将档案时间改为,5月6日18点3分
[root@linux ~]# touch -r abc.php test.php #将test.php档案改成跟abc.php一样
mkdir命令:用于创建空白的目录,格式为“mkdir [选项] 目录”
例如
[root@localhost ~]# mkdir aaa #创建目录
[root@localhost ~]# mkdir -m a=rw bbb #创建指定属性的目录
[root@localhost ~]# mkdir -p 111/abc #创建目录,父目录存在,建之
cp命令:用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”
例如
[root@localhost www]# cp -p test.rb /home/test #将test.rb copy到test目录,并且保留原文件的属性
[root@localhost www]# cp -r Dir/ /home/test #将Dir目录copy到test目录下
[root@localhost www]# cp -fr Dir/* /home/test #将Dir下面的所有文件强制copy到test目录下
[root@localhost www]# cp test.rb{,.bak} #备份test.rb,并在尾部加上.bak后缀
mv命令:用于移动文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”
例如
[root@linux ~]# mv abc abc.php #将abc重命名为abc.php
[root@linux ~]# mv test.php{,.sh} #将test.php增加后辍
file命令:用于查看文件的类型,格式为“file 文件名”
例如
[root@redhat ~]# file * #查看当前目录下的所有文件类型
abc.sh: awk script, ASCII text
abc.sh.bz2: bzip2 compressed data, block size = 900k
ar_test: directory
examples.desktop: UTF-8 Unicode text
rec00001abc.sh.bz2: bzip2 compressed data, block size = 900k
test: ASCII text
test.bz2: bzip2 compressed data, block size = 900k
[root@redhat ~]# file abc.sh #查看单个文件的文件类型
abc.sh: awk script, ASCII text
root@tnak-VirtualBox:/home/tnak# file -z test.bz2 #查看压缩文件的内部信息
test.bz2: empty (bzip2 compressed data, block size = 900k)
tar命令:对文件进行打包压缩或解压,格式为“tar [选项] [文件]”
例如
[root@ubuntu ~]# tar -czvf ar_test.tar.gz ar_test #将ar_test文件打包并且压缩
[root@ubuntu ~]# tar zxvf ar_test.tar.gz #解压
[root@ubuntu ~]# tar -tf ar_test.tar.gz #查看包里面的文件信息
[root@ubuntu ~]# tar -cf all.tar *.jpg #将当前目录所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名
[root@ubuntu ~]# tar -rf all.tar *.gif #将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
[root@ubuntu ~]# tar -uf all.tar logo.gif #更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思
[root@ubuntu ~]# tar -xf all.tar #解出all.tar包中所有文件,-x是解开的意思
[root@ubuntu ~]# tar -cjf all.tar.bz2 *.jpg #压缩成.bz2的压缩文件
[root@ubuntu ~]# tar -xjf all.tar.bz2 #解压.bz2的文件
[root@ubuntu ~]# tar -czf all.tar.Z *.jpg #压缩成.Z的压缩文件
[root@ubuntu ~]# tar -xZf all.tar.Z #解压.Z的文件
find命令:用于按照指定条件查找文件,格式为“find [查找路径] 寻找条件 操作”
例如
andy@ubuntu:~$ find ./ -name "null_*" -exec basename {} \; | sort #搜索文件,并只显示文件名,以升序排列。
null_0
null_1
null_2
null_3
null_4
null_5
null_6
null_7
null_8
null_9
二、文件管理权限命令
1、使用chmod命令进行文件的权限修改
chmod [选项] <模式,模式…> <文件名…>
例如
[root@localhost ~]# chmod ugo+r nginx_bak.conf #所有人皆可读取
[root@localhost ~]# chmod a+r nginx_bak.conf #所有人皆可读取
[root@localhost ~]# chmod ug+w,o-w nginx_bak.conf #设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
[root@localhost ~]# chmod u+x nginx_bak.conf #创建者拥有执行权限
[root@localhost ~]# chmod -R a+r ./www/ #将www下的所有档案与子目录皆设为任何人可读取
[root@localhost ~]# chmod a-x nginx_bak.conf #收回所有用户的对nginx_bak.conf的执行权限
[root@localhost ~]# chmod 777 nginx_bak.conf #所有人可读,写,执行
2、文件和目录的权限
Linux中文件和目录的权限有所不同
(1)文件的权限
r:可以读文件,数值为4
w:可以写文件,数值为2
x:可以执行文件,数值为1
(2)目录的权限
x、r:可以读取(cp)和查看(ls)目录的内容(即文件和目录),同时还需要可执行权限
x、w:可以在目录里创建文件(touch)和目录(mkdir)和删除文件(rm)和目录(rmdir),同时还需要可执行权限;
x、x:可以进入目录(cd)和执行文件,实践过程