Linux进程简述
# 置顶图标
善后处理
# 置顶图标
杀死进程
top d1 //运行top命令后,键入大写字母P按cpu排序
ps aux | sort -k4nr //运行top命令后,键入大写字母M按内存排序
ls -la /proc/$pid/exe //查找进程文件
strace -tt -T -e trace=all -p $pid //跟踪进程运行
lsof -p $pid //进程打开的文件
netstat -anltp | grep $pid //查看进程端口情况
查看账号
awk -F ":" '$3==0{print $1}' /etc/passwd //查看特权用户
awk '/\$1|\$6/{print $1}' /etc/shadow //可远程登录的账号信息
cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" //sudo的账号
w //当前用户及其行为
lastlog //所有用户最后登录时间
last //所有用户关键信息
grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}' //成功登录日期、用户名及ip
//查看试图爆破主机的ip
grep refused /var/log/secure* | awk {'print $9'} | sort | uniq -c |sort -nr | more
grep "Failed password" /var/log/secure* | grep -E -o "(([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}))" | uniq -c
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort //查看爆破root的ip
grep "Failed password" /var/log/secure | awk {'print $9'} | sort | uniq -c | sort -nr //查看爆破的用户名字典
锁定目录
常见问题处置方案
# 置顶图标
暴力破解排查
# 置顶图标
介绍
暴力破解一般针对
ssh、mysql、ftp、redis、mongodb、smtp
SSH暴力破解
使用
netstat -pantu
查看网络状态,重点是PID(当被破解时会有大量的ESTABLISHED)使用
awk -F: '{if($3==0) print $1}' /etc/passwd
查找特殊权限账号(默认root)查找可以使用ssh登录的账号
s=$( sudo cat /etc/shadow | grep '^[^:]*:[^\*!]' | awk -F: '{print $1}');for i in $s;do cat/etc/passwd | grep -v "/bin/false\|/nologin"| grep $i;done | sort | uniq |awk -F: '{print$1}'
查看正在连接的ssh-session
who -a w last -p now sudo netstat -tnpa | grep 'ESTABLISHED.*sshd' pgrep -af sshd echo $SSH_CONNECTION ss | grep ssh
查看所有的账号信息
/var/log/auth.log(Ubuntu) /var/log/secure(centOS) 列出当前账户 who am i
查看登录日志
# 查看日志 cd /var/log # 成功登录 cat /var/log/auth.log | grep "Accept" # 正常退出 cat /var/log/auth.log | grep "pam_unix(sshd:session): session closed" # 密码错误 cat /var/log/auth.log | grep "authentication failure" # 连续错误 cat /var/log/auth.log | grep "message repeated 2 times"
统计数据
# 登录失败的用户名及其次数 grep "Failed password" /var/log/auth.log|perl -e 'while($_=<>){ /for(.*?)from/; print"$1\n";}'|sort|uniq -c|sort -nr # 登录失败的IP及其次数 cat /var/log/auth.log | grep "Failed password for" | grep "root" | grep -Po '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}' |sort|uniq -c|sort -nr
加固防护
升级SSH版本至少为 7.7版本以上,7.7及以下版本存在SSH用户名枚举
加强口令复杂程度
禁止root用户登录,可以通过其他用户su到root
安装fail2ban
来进行防御
Mysql暴力破解
勒索病毒排查
# 置顶图标
远控后门排查
# 置顶图标
挖矿事件排查
# 置顶图标
第一步:获取信息
- 下线服务器之后从DNS服务器、防火墙、态势感知平台等地方获取到攻击事件详细信息
- 根据上传来源的IP/域名,在威胁情报平台查询确定木马类型
- 获取异常进程的pid
CPU占用:
top -c -o %CPU
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5
内存占用:
top -c -o %MEM
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head -n 5
网络占用:
安装后使用nethogs或者jnettop进行查询
根据进程名或字符串查询:
pidof "name"
ps -aux | grep "name"
ps -ef | grep "name" | grep -v grep | awk '{print $2}'
pgrep -f "name"
- 根据pid查询详细信息(当查询不到时有可能是/proc/pid隐藏了)
lsof -p pid
pwdx pid
systemctl status pid
cat /proc/pid/maps
ls -al /proc/pid/exe
安全工具
# 置顶图标
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、哥斯拉
内网渗透
# 置顶图标
内网渗透的流程
- 从外网拿下一个主机当做跳板
- 用
net user /domian
命令查看跳板机是否在域内,探测存活主机 - 提权、提取hash
- 进行横向移动,定位dc位置
- 查看是否有能直接提权域管的漏洞,拿到dc控制权后进行提权
- 最后制作黄金票据做好维权,清理日志
内网渗透的一些基础概念
简写 | 全称 | 描述 |
---|---|---|
DC | Domain Controller | 域控 |
KDC | Key Distribution Center | 秘钥分发中心 |
AD | Account Database | 账户数据库 |
ST | Service Tickets | ST服务票据,由TGS服务发送 |
AS | Authentication Server | 身份验证服务,认证用户的身份,并为其发放TGT的服务 |
AP | Application Server | 提供用户所需的服务 |
TGS | Ticket Granting Server | 票据授予发放服务 |
TGT | Ticket Granting Ticket | TGT认证票据,由AS服务发放,存储在内存,默认有效期为10小时 |
黄金票据 | Golden Ticket | 使用域账号krbtgt的NTLM Hash进行加密 |
白银票据 | Silver Ticket | 使用服务账户的NTLM Hash进行加密 |
socket通信与代理
阅经题总结
# 置顶图标
拿到目标站以后的渗透思路?
渗透测试流程:
- 项目前期准备工作
- 信息收集:whois、网站源IP、开放端口、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙WAF
- 自动化漏洞扫描:Nessus, AWVS,XRAY
- 手动挖掘:逻辑漏洞
- 验证漏洞
- 修复建议
- (如果有)基线检查/复验漏洞
- 输出报告
如何绕过CDN查真实IP?
- 多地ping看是否有cdn(基本上非洲的那些ping就是真的了)
- 邮件订阅或者rss订阅(QQ邮箱的ip溯源)
- 二级域名可能不会做cdn
- nslookup http://xxx.com 国外dns