前言
笔试的时候遇到了,一脸懵逼,对这方面只要一次打比赛的经验,还是好久之前的了,鬼知道我投的攻防岗会有这东西,简单总结一下吧,感觉这是个大坑
这里主要介绍系统命令和一些基本操作,不涉及到太深的技术,等我什么时候做蓝队的时候在写
我简单划分为了三个板块:
系统排查(主要是防止攻击者进行权限维持,对系统层面的抑制策略)
服务和进程排查
痕迹排除(目的是搞清楚攻击路径)
Linux
之前写的那个“linux基础命令”是为ctf的命令执行绕过中做总结的,更偏向文本操作和一些基础命令,这里总结一下更侧重运维和内网渗透的命令
系统排查
系统信息
1 | uname -a #查看本机信息 |
用户信息
超级用户 (root):
拥有系统的所有权限,可以执行任何操作,包括管理系统文件、用户、安装软件等。
普通用户:
普通用户是系统中的非特权用户。每个普通用户只能访问和修改自己的文件及目录,对系统文件和其他用户的文件没有访问权限。
系统用户:
这些用户通常用于运行系统服务和守护进程(如 www-data、nobody 等)。系统用户通常没有登录权限。
1 | cat /etc/passwd | grep -v nologin | grep -v false #列出系统所有可登录账号, /usr/sbin/nologin 或 /bin/false 表示“禁用登录” |
如有,打开 /home 各帐号目录下的 .bash_history,查看普通帐号的历史命令
启动项和定时任务
1 | chmod +x /etc/rc.d/rc.local #或者是/etc/init.d/rc.local |
crontab -l命令可以查看定时任务
Centos的定时任务文件在/var/spool/cron/<username>
Ubuntu定时任务文件在/var/spool/cron/crontabs/<username>crontab -e 使用编辑器编辑当前的crontab文件
服务和进程排查
端口
netstat
-a或–all 显示所有连线中的Socket,默认不显示LISTEN相关
-n或–numeric 直接使用IP地址,而不通过域名服务器。
-o或–timers 显示计时器。
-p或–programs 显示PID和程序名称。
-e或–extend 显示网络其他相关信息。
-l或–listening 显示服务器正在监听的端口,默认显示已经建立的连接
-t或–tcp 显示TCP传输协议的连线状况。
-u或–udp 显示UDP传输协议的连线状况。
-r或–route 显示Routing Table。
-i或–interfaces 显示网络接口列表
-g或–groups 显示多重广播功能群组组员名单。
-s或–statistics 显示网络工作信息统计表。
netstat -atulnp | grep :80
1 | netstat -atulnp |
Local Address (监听的ip端口信息)
0.0.0.0(IPv4)或 ::(IPv6)
表示服务监听在所有网络接口(包括本地回环、所有物理网卡)的指定端口上,可从外部访问
127.0.0.1(IPv4)或 ::1(IPv6)
表示服务仅监听在本地回环地址,只能由本机访问,外部无法连接
IP地址:端口号(如 192.168.1.100:443)
表示服务只监听在该特定IP地址的指定端口上
Foreign Address(开放的ip端口信息)0.0.0.0:*(IPv4)或 :::*(IPv6)
表示接受来自任何远程地址和任何端口的连接请求
当State为ESTABLISHED时,Foreign Address 会显示一个具体的IP和端口,指明了当前正在与你通信的对端是谁
ss
ss 专为查看套接字(socket)信息而设计,功能更加强大、效率更高,尤其在显示大规模连接时性能更优
1 | ss -tuln # 显示所有监听端口及相关信息 |
telnet
telnet 192.168.100.110 7001(用telnet命令来测试端口号是否正常打开还是关闭状态。)
进程
lsof -p PID 查看进程打开的文件
kill -9 PID 杀死进程
ps
-A 列出所有的进程
-u 显示指定用户信息
-e 显示所有进程,而不仅仅是当前用户的进程,等同于-A
-f 以全格式的列表显示进程的信息,包括进程之间的层级关系
查找指定进程格式:
ps -ef | grep 进程关键字
Top
实时查看系统状况
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
服务
1 | systemctl list-units --type=service --state=running #列出所有运行中的服务 |
痕迹排查
文件痕迹排查
1 | find ctime -7 -name *.sh #七天以内创建的文件 |
日志分析
1 | Linux的日志存储在/var/log中 |
例如sudo grep ‘sshd’ /var/log/auth.log
操作日志
1 | history 500 |
Win
系统排查
系统分析
1 | #win |
win+R,输入msinfo32.exe里面的信息更丰富
用户信息
cmd打开lusrmgr.msc查看服务器是否存在可疑账号、新增账号
1 | net user #查看所有用户 |
启动项和定时任务
任务管理器 - 启动项
计算机管理 — 任务计划程序 — 任务计划程序库 —
powershell > Get-ScheduledTask
cmd > schtasks
服务和进程排查
netstat
同上
如netstat -ano 查看所有端口以及对应的PID
TASKLIST
1 | tasklist |
tasklist | findstr "18992"
痕迹排查
文件痕迹排查
1 | forfiles /m *.exe /d +2020/2/12 /s /p c:\ /c "cmd/ c echo @path @fdate @ftime"2 > null #2020/2/12以来的新增文件 |
日志分析
win+R,输入eventvwr.msc,直接进入事件查看器分析日志,导出 Windows 日志–安全,利用 Log Parser 进行分析
常见事件ID
1 | 系统日志: |