Nmap常用命令
nmap hostname/ip或者多个ip或者子网192.168.123.*
-iL ip.txt 扫描ip.txt的所有ip
-A 包含了-sV,-O,探测操作系统信息和路由跟踪(激烈扫描,一般不用)
-O 探测操作系统信息
-sV 查找主机服务版本号
-sA 探测该主机是否使用了包过滤器或防火墙(建议使用wafw00f)
-sS 半开扫描,一般不会记入日志,不过需要root权限。
-sT TCP connect扫描,这种方式会在目标主机的日志中记录大批的链接请求以及错误信息。
-sP ping扫描,一般最好不加,因为有的主机会禁止ping,却实际存在。
-Pn 扫描之前不使用ping,适用于防火墙禁止ping,比较有用。
-sN TCP空扫描
-F 快速扫描
-p 指定端口/端口范围
-oN 将报告写入文件
-v 详细信息
-T<0-5> 设定速度
使用脚本:
--script all 使用所有脚本
--script=sql.injection.nse sql注入
--script="smb*" 扫smb系列
一、4 大功能:分别为主机发现(参数-sn)、端口扫描(-sS -sU)、版本侦测(–sV)、OS侦测(-O)
二、扫描方式有:tcp connect()、TCP SYN scanning、TCP FIN scanning、Nullscan等
三、绕过 ping 扫描参数为:nmap -Pn XXX.XXX.XXX.XXX
四、漏洞检测可直接 nmap 目标 --script=auth,vuln
SQLmap
-u 单个URL
-m xx.txt 多个URL
-d "mysql://user:password@10.10.10.137:3306/dvwa" 作为服务器客户端,连接数据库
--data post/get都适用
-p 指定扫描的参数
-r 读取文件
-f 指纹信息
--tamper 混淆脚本,用于应用层过滤
--cookie --user-agent --host 对http头的修改
--threads 并发线程,默认为1
--dbms MySQL<5.0> 指定数据库或版本
–level=LEVEL 执行测试的等级(1-5,默认为 1)
–risk=RISK 执行测试的风险(0-3,默认为 1) Risk升高可造成数据被篡改等风险
–current-db 获取当前数据库名称
–dbs 枚举数据库管理系统数据库
–tables 枚举 DBMS 数据库中的表
–columns 枚举 DBMS 数据库表列
-D DB 要进行枚举的数据库名
-T TBL 要进行枚举的数据库表
-C COL 要进行枚举的数据库列
-U USER 用来进行枚举的数据库用户
常用的tamper:
base64encode.py 转为b64编码
charencode.py url编码
chardoubleencode.py 双URL编码
unmagicquotes.py 宽字节
randomcomments.py 用`/**/`分割SQL关键字
space2plus.py space2comment.py space2xxxx.py 替换空格为xx
Post注入:
sqlmap -r "数据包地址" -p "参数" -dbms 数据类型
Get注入:
sqlmap -u "注入点地址" --dbms 参数
sqlmap进行交互式写shell:
1-前提条件:最高权限、知道web网站绝对路径、能获取到cookie
2-sqlmap.py -u "注入点地址" --cookie="cookie值" --os-shell
-echo “一句话木马”>网站的绝对路径
3-输入web网站的绝对路径
4-传木马
菜刀、蚁剑、冰蝎、CS、哥斯拉
菜刀特征
使用了base64的方式加密了发送给“菜刀马”的指令,其中的两个关键payload z1
和z2
,这个名字是可变的
蚁剑特征
默认的USER-agent请求头是antsword xxx
,但是可以修改/modules/request.js
文件
其中流量最中明显的特征为@ini_set("display_errors","0");
这段代码基本是所有WebShell客户端链接PHP类WebShell都有的一种代码
蚁剑混淆加密后还有一个比较明显的特征,即为参数名大多以“_0x......=”
这种形式(下划线可替换),所以以_0x开头的参数名也很可能就是恶意流量
冰蝎
看包没有发现什么特征,但是可以发现它是POST请求的
- Accept头有
application/xhtml+xmlapplication/xmlapplication/signed-exchange
属于弱特征(UA头的浏览器版本很老) - 特征分析
Content-Type: application/octet-stream
这是一个强特征,查阅资料可知octet-stream的意思是,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组),所以很少使用
冰蝎2特征
默认Accept字段的值很特殊,而且每个阶段都一样冰蝎内置了十余种UserAgent,每次连接shell会随机选择一个进行使用,但是可以在burp中修改ua头。Content-Length: 16
, 16就是冰蝎2连接的特征
冰蝎3特征
目前很多waf等设备都做了冰蝎2的流量特征分析,所以3取消了动态密钥获取;抓包没有发现什么特征,但它是POST请求的
- Accept头
application/xhtml+xmlapplication/xmlapplication/signed-exchange
属于弱特征 - ua头该特征属于弱特征,通过burp可以修改。冰蝎3.0内置的默认16个userAgent都比较老,也可以作为waf规则特征
哥斯拉特征
【PHP连接特征】
- 使用了php_XOR_BASE64
- 请求都含有”pass=”
【jsp连接特征】 - 使用了java_AES_BASE64
- 是用了java_AES_RAW
- 与php请求一样都含有
"pass="
而且发起连接时服务器返回的Content-Length是0
wireshark
过滤 ip:
过滤源 ip 地址:ip.src==1.1.1.1;,目的 ip 地址:ip.dst==1.1.1.1;
过滤端口:
过滤 80 端口:tcp.port==80,源端口:tcp.srcport==80,目的端
口:tcp.dstport==80
协议过滤:
直接输入协议名即可,如 http 协议 http
http 模式过滤:
过滤 get/post 包 http.request.mothod==”GET/POST”
MSF
常用命令:
background 让meterpreter处于后台模式
sessions -i number 与会话进行交互,number表示第n个session
quit 退出会话
shell 获得命令行
cat c:\\boot.ini 查看文件内容
getwd 查看当前工作目录
work directory upload /root/Desktop/netcat.exe c:\\ 上传文件到目标机上
download 0xfa.txt /root/Desktop/ 下载文件到本机上
edit c:\\boot.ini 编辑文件
search -d d:\\www -f web.config 查找文件
ps 查看当前活跃进程
migrate pid 将Meterpreter会话移植到进 程数位pid的进程中
execute -H -i -f cmd.exe 创建新进程
getpid 获取当前进程的
pid kill pid 杀死进程
getuid 查看权限
sysinfo 查看目标机系统信息,如机器名,操作系统等
getsystem 提权操作
timestompc:/a.doc -c "10/27/2015 14:22:11" 修改文件的创建时间
迁移进程:
- meterpreter > ps
- 自行选择PID
- meterpreter > migrate pid
一些免杀的了解
做免杀的原理:
就是fuzz定位出被查杀的语句,然后对被查杀那部分进行加密、编码、动态执行、拆分拼接、特定条件执行等等。
免杀分类:
为静态免杀(单纯看hash值)、流量免杀(有通信流量就杀)、内存免杀(看内存运行特征)、动态免杀(行为感知)
免杀语言分类:
- 编译型语言,编译器一次性将所有源代码编译为一个不可跨平台执行的可执行程序,一次编译可以重复执行(C、C++、Golang、汇编等)
- 解释型语言,使用解释器一边执行一边转换,不会生成可执行程序。(JavaScript、Python、PHP、Shell等)
免杀方法:
- 修改特征码,猜测杀软对哪几个字节进行查杀,再对应修改(几乎没用了)
- shellcode加载器,改变加载到内存的方式和加密方式(主流)
- 反射dll加载,把dll加密,远程下载到内存中再解密执行(高级)
无文件执行木马的方式有哪些?
powershell(脚本解析器) 》》》powershell.exe(应用程序)
VB.script(脚本解析器) 》》》cscript.exe(应用程序)
bat处理 (脚本解析器) 》》》cmd.exe(应用程序)
javaSrtipt(脚本解析器) 》》》mshta.exe(应用程序)
怎么做shellcode免杀?
- 编码
- 加壳
- 混淆
- 分离免杀
- 特征码修改
- 添加无用逻辑语句
- 重写api
分离免杀怎么做?
分为加载器和shellcode两部分,一般将shellcode存储在网页或者图片中,然后加载器远程加载存在shellcode的网页或者图片之类的
powershell怎么远程加载?
可以远程加载mimikazt,远控文件,exe可执行文件实现无文件落地。