之前整理的有关于蓝队方面的面试题适合作为 hw 防守方,很久没更了放放存货,整理自网络侵删,如有帮助点赞支持,之后会继续更新面试题系列
OCEAN’S 安全面试题整理系列文章:
检查系统账号安全
查看服务器是否有弱口令,远程管理端口是否对公网开放(使用netstat -ano
命令、或者问服务器管理员)
lusrmgr.msc
命令查看服务器是否存在可疑账号、新增账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉
用 D 盾或者注册表中查看服务器是否存在隐藏账号、克隆账号
结合日志,查看管理员登录时间、用户名是否存在异常
检查方法:Win+R 打开运行,输入“eventvwr.msc”,回车运行,打开“事件查看器”,导出 Windows 日志–安全,利用 Log Parser 进行分析
检查异常端口、进程
netstat -ano
检查端口连接情况,是否有远程连接、可疑连接检查启动项、计划任务、服务
检查系统相关信息
查看系统版本以及补丁信息
查找可疑目录及文件
日志分析
账号安全
who 查看当前登录用户(tty本地登陆 pts远程登录)
w 查看系统信息,想知道某一时刻用户的行为
uptime 查看登陆多久、多少用户,负载
1、用户信息文件/etc/passwd
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
注意:无密码只允许本机登陆,远程不允许登陆
2、影子文件/etc/shadow
root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
/etc/passwd
存储一般的用户信息,任何人都可以访问;/etc/shadow
存储用户的密码信息,只有 root 用户可以访问
历史命令
通过 .bash_history 查看帐号执行过的系统命令
1、root的历史命令 histroy
2、打开 /home 各帐号目录下的 .bash_history,查看普通帐号的历史命令
历史操作命令的清除:history -c
但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录
检查异常端口
netstat -antlp|more
查看下pid所对应的进程文件路径,
运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
检查异常进程
ps aux | grep pid
检查开机启动项
开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].d
检查定时任务
crontab -l 列出某个用户cron服务的详细内容
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件
2、利用anacron实现异步定时任务调度
重点关注
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
检查服务
chkconfig --list 命令,可以查看系统运行的服务
检查异常文件
检查系统日志
这个问题就是 linux 入侵排查排查的一部分
https://cloud.tencent.com/developer/article/1822210
系统信息
用户登录
查看当前用户登录系统情况 who
分析超级权限账户 awk-F: ‘{if($3==0)print $1}’/etc/passwd
查看可登录的账户 cat/etc/passwd|grep ‘/bin/bash’
查看用户错误的登录信息 lastb
查看所有用户最后的登录信息 lastlog
查看用户最近登录信息 last
/var/log/ 其中,/var/log/wtmp 存储登录成功的信息、btmp存储登录失败的信息、utmp存储当前正在登录的信息
查看空口令账户 awk-F: ‘length($2)==0 {print $1}’/etc/shadow
每个公司有每个公司的基线规范体系,但是答题分为下列五个方面
账号管理和授权
/etc/login.defs
修改配置文件,设置过期时间、连续认证失败次数vi /etc/pam.d/su
添加auth required pam_wheel.so group=test
服务
PermitRootLogin=no
MaxAuthTries=3
文件系统
vi /etc/profile
添加行 umask 027
vi /etc/profile
修改配置文件,将以 TMOUT=
开头的行注释,设置为 TMOUT=180
日志
启用 syslogd 日志,配置日志目录权限,或者设置日志服务器
记录所有用户的登录和操作日志,通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查
https://www.alibabacloud.com/help/zh/faq-detail/49809.htm
IP 协议安全要求
Linux 安全基线检查
Linux:https://cloud.tencent.com/developer/article/1668982
Windows:https://cloud.tencent.com/developer/article/1668937
主要包括五个方面:身份鉴别、访问控制、安全审计、资源控制、剩余信息保护
身份鉴别
更改缺省账户
检查Guest用户是否禁用
密码复杂性要求
密码长度最小不能小于8位
访问控制
共享账户检查
远程关机授权
本地关机
授权帐户登陆
安全审计
用户登录日志记录
系统日志完备性检查
登录超时管理
资源控制
登录超时管理
远程登录超时配置
剩余信息保护
不显示上次的用户名
关机前清除虚拟内存页面
不启用可还原的加密来存储密码
https://www.alibabacloud.com/help/zh/faq-detail/52981.htm
配置
禁止
隐藏
删除
https://www.freebuf.com/articles/web/192063.html
(一) IIS
1、PUT漏洞
2、短文件名猜解
3、远程代码执行
4、解析漏洞
(二) Apache
1、解析漏洞
2、目录遍历
(三) Nginx
1、文件解析
2、目录遍历
3、CRLF注入
4、目录穿越
(四)Tomcat
1、远程代码执行
2、war后门文件部署
(五)jBoss
1、反序列化漏洞
2、war后门文件部署
(六)WebLogic
1、反序列化漏洞
2、SSRF
3、任意文件上传
4、war后门文件部署
(七)其它中间件相关漏洞
1、FastCGI未授权访问、任意命令执行
2、PHPCGI远程代码执行
IIS 服务器应该做哪些方面的保护措施?
整理来源:http://www.williamlong.info/archives/118.html
Linux系统安全加固需要注意的内容
工具
设备
网络安全设备常识
常见的 HW 设备有:公安部网防G01、K01、360网康/网神防火墙、微步威胁情报、安恒云-Web应用防火墙(玄武盾)、默安蜜罐、知道创宇蜜罐、山石防火墙
即客户拥有物理的基础设施(自建机房、自购设备、网络)
NGAF/NGFW:下一代 Web 应用防火墙(Next Generation Application Firewall,通防火墙和下一代防火墙的区别),聚合了以下功能
EDR:主机安全管理\终端检测和响应
EDR 实时监测终端上发生的各类行为,采集终端运行状态,在后端通过大数据安全分析、机器学习、沙箱分析、行为分析、机器学习等技术,提供深度持续监控、威胁检测、高级威胁分析、调查取证、事件响应处置、追踪溯源等功能,可第一时间检测并发现恶意活动,包括已知和未知威胁,并快速智能地做出响应,全面赋予终端主动、积极的安全防御能力
简单来说就是给内网环境中所有主机安装管理软件终端,可以在管理平台集中管理和数据分析过滤,基本所有安全厂商都有自己的 EDR 产品
运维审计和管理平台(堡垒机)
DAS:数据库安全审计平台
LAS:日志审计安全平台
AC:上网行为管理系统
伪装欺骗系统(蜜罐、蜜网)
SIP:安全态势感知平台
这个算是让整套系统性能得到提升的灵魂了,定位为客户的安全大脑,是一个集检测、可视、响应处置于一体的大数据安全分析平台。产品以大数据分析为核心,支持主流的安全设备、网络设备、操作系统等多源数据接入,利用大数据、关联分析、告警降噪等技术,实现海量数据的统一挖掘分析
云网络
云网络包括私有云和公有云
安全服务工程师
参加渗透测试、地方服务、HW
根据客户方要求对所给资产进行了详细细致的渗透测试。挖掘漏洞,发现漏洞的第一时间与客户方汇报,使客户方能够及时整改修补问题漏洞,防止造成漏洞危害扩大
攻防演练中担任什么角色
护网的分组是在领导小组之下分为防护检测组,综合研判组,应急溯源组。流程大致分为备战,临战,决战三个阶段
备战阶段,主要任务是进行两方面的操作,一是减少攻击面,即资产梳理,减少暴露面;二是排查风险点,即通过漏洞扫描,渗透测试,弱口令等进行自查
临战阶段,主要任务也大致可以分为两个部分,一是进行内部演练,发现疏忽处并进行相应整改;二是可以适当增加安全设备,比如WAF,IPS,IDS,SOC,堡垒机等
决战阶段,作为新人,主要就是坚守岗位,有应急日志就看自己能不能解决,不能就上报,服从上级安排,优化防护,持续整改
参加过护网蓝队,负责事件研判工作,主要使用 ips,ids 等设备做流量监控与日志分析工作判断安全事件是否为误判
监控、研判、处置、溯源
对安全管理中心发出的态势排查单进行排查,并将排查结果反馈给安全管理中心,对安全管理中心发出的封堵工单和解封工单进行对应的封堵与解封,每两小时反馈一次排查结果、设备巡检报告、封堵情况。查看呼池 DDOS 设备,记录并排查告警信息
研判工作要充分利用已有安全设备(需要提前了解客户的网络拓扑以及部署设备情况),分析其近期的设备告警,将全部流量日志(日志条件:源地址,目的地址,端口,事件名称,时间,规则 ID,发生 次数等)根据研判标准进行筛选(像挖矿、蠕虫、病毒、拒绝服务这类不太可能为攻击方发起的攻击的事件,直接过滤掉,减少告警数量),一般情况下,真实攻击不可能只持续一次,它一定是长时间、周期性、多 IP 的进行攻击
对于告警结合威胁情报库如:微步、奇安信威胁情报中心、绿盟威胁情报云等对于流量日志的原 IP 地址进行分析,判断其是否为恶意攻击,推荐使用微步的插件,如果确认为攻击行为或者不能确认是否为攻击行为,进行下一步操作,在之前准备好的表格中查找 IP 是否为客户内网部署的设备,如果不是,继续进行下一步,在事件上报平台查看是否有其他人提交过,如果没有,则上报
然后根据流量日志,对请求数据包和返回数据包分析判断其是否为误报,需要留意 X-Forwarded-For(简称XFF)和 x-real-ip 可以了解些 webshell 工具的流量特征,尤其是免杀 webshell,有可能不会被设备识别
最后上报事件时,尽可能提供完整的截图,包括源 ip、目的ip,请求包请求体,响应包响应体等重要信息,以方便后续人员研判溯源
注:不要任意忽略内网告警,适当情况下可以往前推排查时间
蓝队的主要工作包括前期安全检查、整改与加固,演习期间进行网络安全监测、预警、分析、验证、处置,后期复盘总结现有防护工作中的不足之处,为后续常态化的网络安全防护措施提供优化依据
监控、研判、处置、溯源
SQL注入攻击检测可根据入侵事件发生的前后进行区分,在入侵前可以对 Payload 进行检测等方式以预防 SQL 注入攻击。在入侵检测后可以通过对数据库、IIS 日志等进行检查以进行判断
传统的SQL注入检测方法通常根据经验提取特征,然后基于规则库匹配的方法来检测是否为 SQL 注入语句,其设计一般较为复杂,且规则模式更新频繁,在此采用机器学习的方式尝试对 SQL 注入语句进行检测
目前对于低网络层的 DDoS 攻击有一些有效的防护手段,如丢弃第一次 SYN 包,上流量防护设备,上 WAF 封禁地址等
比较难缠的是第七层,第八层的 CC 攻击,它会找到目标网站上比较消耗资源的关键位置,重复发起攻击以消耗 CPU/内存/数据库/IO 等资源,目前的应付手段有:
挖矿病毒,自己搜搜
挖矿木马占用系统资源进行挖矿行为,一般电脑会有以下特征
登录进可疑主机后,可以通过以下方式确认挖矿木马(即入侵排查流程)
挖矿常用手段
清除挖矿木马
原因排查
一旦发现服务器被挖矿,应该首先查看挖矿进程所属的用户,根据挖矿进程的运行用户去排查该用户下是否还运行着其它进程,确定这些进程是否有上述经常被黑客利用的漏洞。如果有常见的漏洞,则应该重点对此进行排查找到原因
清除木马
及时隔离主机
部分带有蠕虫功能的挖矿木马在取得本机的控制权后,会以本机为跳板机,对同一局域网内的其他主机进行已知漏洞的扫描和进一步利用, 所以发现挖矿现象后,在不影响业务的前提下应该及时隔离受感染主机,然后进行下一步分析
删除文件、阻断与矿池通讯
iptables -A INPUT -S xmr.crypto- pool.fr -j DROP
iptables -A OUTPUT -d xmr.crypto- pool.fr -j DROP
清除定时任务
大部分挖矿进程会在受感染主机中写入定时任务来完成程序的驻留,当安全人员只清除挖矿木马时,定时任务会再次从服务器下载挖矿进程或者直接执行挖矿脚本,导致挖矿进程清除失败
清除启动项
有的挖矿进程为了实现长期驻留,会向系统中添加启动项来确保系统重启后挖矿进程还能重新启动,所以在清除时还应该关注启动项中的内容如果有可疑的启动项,也应该进行排查,确认是挖矿进程后,对其进行清除
kill 挖矿进程
对于单进程挖矿程序,直接结束挖矿进程即可。但是对于大多数的挖矿进程,如果挖矿进程有守护进程,应先杀死守护进程再杀死挖矿进程,避免清除不彻底
在实际的清除工作中,应找到本机上运行的挖矿脚本,根据脚本的执行流程确定木马的驻留方式, 并按照顺序进行清除, 避免清除不彻底
清除公钥文件
在用户 home 目录的 .ssh 目录下放置 authoruzed_keys 文件,从而免密登录该机器也是一种常见的保持服务器控制权的手段。在排查过程中应该查看该文件中是否有可疑公钥信息,有的话直接删除,避免攻击者再次免密登录该主机
网站被植入 webshell,意味着网站存在可利用的高危漏洞,攻击者通过利用漏洞入侵网站,写入 webshell 接管网站的控制权
find 命令
find /var/www/html -name "*.php" |xargs egrep 'assert|eval|phpinfo\(\)|\(base64_decoolcode|shell_exec|passthru|file_put_contents\(\.\*\$|base64_decode\('
主机层面
静态检测
静态检测通过匹配特征码,特征值,危险函数函数来查找 webshell 的方法,只能查找已知的 webshell
动态检测
webshell 传到服务器了,在执行函数时这些对于系统调用、系统配置、数据库、文件的操作动作都是可以作为判断依据
日志检测
使用 webshell 一般不会在系统日志中留下记录,但是会在网站的 web 日志中留下 webshell 页面的访问数据和数据提交记录
语法检测
语法语义分析形式,是根据 php 语言扫描编译的实现方式,进行剥离代码、注释,分析变量、函数、字符串、语言结构的分析方式,来实现关键危险函数的捕捉方式这样可以完美解决漏报的情况但误报上
流量层面
冰蝎动态二进制加密WebShell特征分析
常见WebShell客户端的流量特征及检测思路
菜刀
菜刀 webshell 只使用了 url 编码 + base64 编码
shell 特征就是传输参数名为 z0,还存在int_set("display_erros","0")
字符串特征
蚁剑
默认的蚁剑 shell,连接时会请求两次,其请求体只是经过 url 编码,其流量中也存在和蚁剑一样的代码
第一次请求,关闭报错和 magic_quotes,接下来去获取主机的信息
第二次请求,会把主机目录列出来
冰蝎2.0
使用 aes 加密发起三次请求
第一次请求服务端产生密钥写入 session,session 和当前会话绑定,不同的客户端的密钥也是不同的
第二次请求是为了获取 key,第三次使用 key 的 aes 加密进行通信
冰蝎3.0
使用 aes 加密发起两次请求
3.0 分析流量发现相比 2.0 少了动态密钥的获取的请求,不再使用随机生成 key,改为取连接密码的 md5 加密值的前 16 位作为密钥
一次请求为判断是否可以建立连接,少了俩次 get 获取冰蝎动态密钥的行为,第二次发送 phpinfo 等代码执行,获取网站的信息
哥斯拉
支持 n 种加密
采用了和冰蝎 3.0 一样的密钥交换方式,哥斯拉建立连接时会发起三次请求,第一次请求数据超级长,建立 session,第二三次请求确认连接
数据库类(扫描弱口令)
特殊服务类(未授权/命令执行)
常用端口类(弱口令/端口爆破)
https://www.eet-china.com/mp/a44399.html
背景:TCP 位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP 协议采纳三次握手四次挥手策略
三次握手(three-way handshaking)
TCP 三次握手,其实就是 TCP 应用在发送数据前,通过 TCP 协议跟通信对方协商好连接信息,建立起 TCP 的连接关系
SYN
报文,并进入 SYN_SENT
状态,等待服务器的确认SYN
报文,需要给客户端发送 ACK
确认报文,同时服务器也要向客户端发送一个 SYN
报文,所以也就是向客户端发送 SYN + ACK
报文,此时服务器进入 SYN_RCVD
状态SYN + ACK
报文,向服务器发送确认包,客户端进入 ESTABLISHED
状态。待服务器收到客户端发送的 ACK
包也会进入 ESTABLISHED
状态,完成三次握手四次挥手(Four-Way-Wavehand)
当我们的应用程序不需要数据通信了,就会发起断开 TCP 连接。建立一个连接需要三次握手,而终止一个连接需要经过四次挥手
FIN
,用来关闭客户端到服务端的数据传送,客户端进入 FIN_WAIT_1
状态FIN
后,发送一个 ACK
给客户端,确认序号为收到序号 +1(与SYN相同,一个FIN占用一个序号),服务端进入 CLOSE_WAIT
状态FIN
,用来关闭服务端到 客户端的数据传送,服务端进入 LAST_ACK
状态FIN
后,客户端进入 TIME_WAIT
状态,接着发送一个 ACK
给服务端,确认序号为收到序号 +1,服务端进入 CLOSED
状态,完成四次挥手攻击判断可以建立在设备的基础上,利用设备的告警,如果没有设备的话可以参考以下
网站被攻击:网站被跳转到赌博网站,网站首页被篡改,百度快照被改,网站被植入 webshell 脚本木马,网站被 DDOS、CC 压力攻击
服务器被黑:服务器系统中木马病毒,服务器管理员账号密码被改,服务器被攻击者远程控制,服务器的带宽向外发包,服务器被流量攻击,ARP攻击(目前这种比较少了,现在都是基于阿里云,百度云,腾讯云等云服务器)
对登录记录、系统日志、web 日志等进行分析
用流量监测的安全设备,比如天眼,查看报文,分析报文里和 host 和网站目录路径,查看是否可疑,使用微步查询 host 是否为恶意,使用 wireshark 对数据包深度分析
看一下请求的网站路径,源 IP 与目的 IP 地址,host 字段的值以及发包内容等
工具有 wireshark,网站的话微步在线等威胁情报中心
文件:可能在系统有上传功能或者有文本编辑器,看一下是否有 base64 加密或者 url 加密,解码验证一下是否有恶意代码
系统日志:有没有 web 容器做了一些危险行为,比如 bash 反弹 shell 等
网络应用日志:有没有异常的网站文件,类似 webshell 等,就有可能是命令执行
Log Parser、LogParser Lizard、Event Log Explorer
定位有多少IP在爆破主机的root帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print"$1\n";}'|uniq -c|sort -nr
登录成功的IP有哪些
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
增加一个用户kali日志:
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001,
home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
#grep "useradd" /var/log/secure
删除用户kali日志:
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
# grep "userdel" /var/log/secure
su切换用户:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by
root(uid=0)
sudo授权执行:
sudo -l
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ;
COMMAND=/sbin/shutdown -r now
(日志)
Windows 主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志
系统日志: %SystemRoot%\System32\Winevt\Logs\System.evtx
应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx
安全日志:%SystemRoot%\System32\Winevt\Logs\Security.evtx
Linux
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
/etc/httpd/conf
/etc/nginx
C:\Windows\System32\inetsrv\config\
https://www.freebuf.com/articles/web/274466.html
如果我们通过检测工具或者其他手段发现了一些内存webshell的痕迹,需要有一个排查的思路来进行跟踪分析,也是根据各类型的原理,列出一个排查思路。
如果是jsp注入,日志中排查可疑jsp的访问请求。
如果是代码执行漏洞,排查中间件的error.log,查看是否有可疑的报错,判断注入时间和方法
根据业务使用的组件排查是否可能存在java代码执行漏洞以及是否存在过webshell,排查框架漏洞,反序列化漏洞。
如果是servlet或者spring的controller类型,根据上报的webshell的url查找日志(日志可能被关闭,不一定有),根据url最早访问时间确定被注入时间。
如果是filter或者listener类型,可能会有较多的404但是带有参数的请求,或者大量请求不同url但带有相同的参数,或者页面并不存在但返回200
修改 web 端口:修改中间件配置文件中的 web 服务端口即可
不能修改的话可以使用端口映射,使用 nginx 反向代理也可以
通用
linux
etc/passwd、etc/shadow
直接读密码
/etc/hosts
# 主机信息
/root/.bashrc
# 环境变量
/root/.bash_history
# 还有root外的其他用户
/root/.viminfo
# vim 信息
/root/.ssh/id_rsa
# 拿私钥直接ssh
/proc/xxxx/cmdline
# 进程状态枚举 xxxx 可以为0000-9999 使用burpsuite
数据库 config 文件
web 日志 access.log, error.log
ssh 日志
/root/.ssh/id_rsa
/root/.ssh/id_rsa.pub
/root/.ssh/authorized_keys
/etc/ssh/sshd_config
/var/log/secure
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/syscomfig/network-scripts/ifcfg-eth1
/var/lib/php/sess_PHPSESSID
# 非常规问题 session 文件( 参考 平安科技的一道session包含 http://www.jianshu.com/p/2c24ea34566b)
windows
C:\boot.ini
//查看系统版本C:\Windows\System32\inetsrv\MetaBase.xml
//IIS 配置文件C:\Windows\repair\sam
//存储系统初次安装的密码C:\Program Files\mysql\my.ini
//Mysql 配置C:\Program Files\mysql\data\mysql\user.MY D
//Mysql rootC:\Windows\php.ini
//php 配置信息C:\Windows\my.ini
//Mysql 配置信息分析数据包请求头中的 xff、referer 等收集有用的信息
基于网络欺骗与浏览器指纹的WEB攻击溯源
端口->进程
netstat -ano | findstr “port”
查看目前的网络连接,定位可疑的 ESTABLISHEDnetstat
定位出的 pid,再通过tasklist
命令进行进程定位 tasklist | findstr “PID”
任务管理器–选择对应进程–右键打开文件位置运行输入 wmic,cmd界面 输入 process
查看 Windows 服务所对应的端口
%system%/system32/drivers/etc/services
(一般 %system% 就是 C:\Windows)
msinfo32
命令,依次点击 “软件环境 – 正在运行任务” 就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期以及启动时间等查看可疑的进程及其子进程。可以通过观察以下内容:
PHP:如果系统中存在可以上传文件的功能点,就可以上传后门脚本文件,通过一些方法绕过上传限制,如果能访问后门的的话,系统存在文件上传漏洞,可以借助后门执行命令
Java:上传 jsp 代码
Asp/Aspx
Python:因为脚本需要译后生成 pyc 字节码文件,所以不存在文件上传
能够上传文件的接口,应用程序对用户上传文件类型不校验或者校验不严格可绕过,导致任意类型文件上传,攻击者可上传 webshell 拿到服务器权限,在这个过程中攻击者必然会上传恶意脚本文件
后端限制文件上传白名单,头像不允许上传 svg
上传后文件随机重命名,不要输出保存文件位置
图片文件可以二次渲染,使用对象存储 oss
文件目录取消执行权限,PHP 设置 basedir
nmap 扫描基础命令
首先信息收集,收集子域名、Whois、C段、旁站、Web 系统指纹识别,然后测试 web 系统的漏洞
添加强度较高的验证码,不易被破解
修改密码设置规则,提高用户的密码强度
同一账号登陆次数锁定,生成锁定日志
定期排查弱口令
对于输入的字符进行过滤
使用 PDO 预编译语句处理
确定攻击来源,是不是员工内部误操作,比如询问运维是否有自动化轮训脚本
如果没有,确定是攻击,结合时间点,根据设备信息,看一下安全事件,进程,流量
找到问题主机,开始应急响应流程:准备、检测、遏制、根除、恢复、跟踪,具体的操作要交给现场运维去处理
ips,ids,hids,堡垒机等
xshell、xftp、finalshell
微步在线是一个威胁情报中心,可以通过 ip 或域名查询其是不是恶意的,对于判断恶意链接具有一定的参考性,他还有一个插件可以在页面选中就能进行查询,还是一个比较好用的工具
同源策略
同源策略:域名、协议、端口均相同
浏览器执行 JavaScript 脚本时,会检查这个脚本属于那个页面,如果不是同源页面,就不会被执行
什么是跨域?
跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制!
JSONP跨域
利用 js script 标签中 src 属性可以跨域的特性,使用 callback 参数的函数名来接收数据
只支持 GET 请求,不支持 POST 等其它请求,也不支持复杂请求,只支持简单请求
CORS跨域
支持所有的请求,包含 GET、POST、OPTOIN、PUT、DELETE 等既支持复杂请求,也支持简单请求
JSONP 与 CORS 的使用目的相同,并且都需要服务端和客户端同时支持,但 CORS 的功能更加强大
JSONP和CORS的优缺点
JSONP 的主要优势在于对浏览器的支持较好;虽然目前主流浏览器都支持 CORS,但 IE9 及以下不支持 CORS
JSONP 只能用于获取资源(即只读,类似于 GET 请求);CORS 支持所有类型的 HTTP 请求,功能完善
JSONP 只会发一次请求;而对于复杂请求,CORS 会发两次请求
应用场景
如果需要兼容IE低版本浏览器,无疑,JSONP
如果需要对服务端资源进行操作,无疑,CORS
其他情况的话,根据自己的对需求的分析来决定和使用
无连接
无状态
协议对于事务处理没有记忆能力
对同一个 url 请求没有上下文关系
每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况
服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器
在计算机网络中,路由表(routing table)或称路由择域信息库(RIB, Routing Information Base),是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)路由表中含有网络周边的拓扑信息路由表建立的主要目标是为了实现路由协议和静态路由选择
每个路由器中都有一个路由表和 FIB(Forward Information Base) 表:路由表用来决策路由,FIB 用来转发分组路由表中有三类路由:
Zookeeper,HBase、Redis、MongoDB、Couchbase、LevelDB
PHP:通达OA、泛微 Eoffice
Java:泛微OA/云桥、致远OA、蓝凌OA、用友OA
ASP:启莱OA
横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源
纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源
对于纵向越权,我们可以通过设置用户角色,为不同的角色提供不同的权限来避免
为了防止横向越权,我们可以使用缓存来进行辅助,当登录成功或者进行操作时,我们在缓存中存储一对由用户名和一个唯一的数字组成的数据(token),然后返回放入的唯一数据在重置密码时我们的参数不仅需要用户名和密码还需要前面生成的唯一数字,根据用户名在缓存中取出对应的数字,如果取出的数字和参数中传入的想等,则证明重置的当前用户的密码,否则不是,且不予以重置
全面监控和快速响应(溯源):对黑灰进行长期跟进,了解黑灰产工具的传播链条和路径,第一时间捕获活跃的黑灰产工具(建立特征词监控,数据取样、交叉分析)
建立软件指纹库,增加风险识别能力
建立黑灰产情报共享,最大化情报价值
后台对访问进行统计,如果单个 IP 访问超过阈值,予以封锁
后台对访问进行统计,如果单个 session 访问超过阈值,予以封锁
后台对访问进行统计,如果单个 userAgent 访问超过阈值,予以封锁
以上的组合
Linux下查找服务端口的命令?一句话查找80端口服务的命令?
使用grep 命令 要使用 grep 命令在Linux 中查找指定服务的默认端口号,只需运行
grep <port> /etc/services
grep services /etc/services
钓鱼邮件发现
发现途径如下:
邮件系统异常登录告警、员工上报、异常行为告警、邮件蜜饵告警
推荐接入微步或奇安信的情报数据。对邮件内容出现的 URL 做扫描,可以发现大量的异常链接
https://www.freebuf.com/articles/es/264037.html
屏蔽办公区域对钓鱼邮件内容涉及站点、URL 访问
根据办公环境实际情况可以在上网行为管理、路由器、交换机上进行屏蔽
邮件内容涉及域名、IP 均都应该进行屏蔽
对访问钓鱼网站的内网 IP 进行记录,以便后续排查溯源可能的后果
屏蔽钓鱼邮件
屏蔽钓鱼邮件来源邮箱域名
屏蔽钓鱼邮件来源 IP
有条件的可以根据邮件内容进行屏蔽
删除还在邮件服务器未被客户端收取钓鱼邮件
处理接收到钓鱼邮件的用户
根据钓鱼邮件发件人进行日志回溯
此处除了需要排查有多少人接收到钓鱼邮件之外,还需要排查是否公司通讯录泄露。采用 TOP500 姓氏撞库发送钓鱼邮件的攻击方式相对后续防护较为简单。如果发现是使用公司通讯录顺序则需要根据通讯录的离职情况及新加入员工排查通讯录泄露时间。毕竟有针对性的社工库攻击威力要比 TOP100、TOP500 大很多
通知已接收钓鱼邮件的用户进行处理
删除钓鱼邮件
系统改密
全盘扫毒
后续:溯源、员工培训提升安全意识
(扫描数据量大,请求有规律,手动扫描间隔较少)
首先看它的来源和去向,然后可以下载但不运行,放入微步沙箱中,看是否有后门,若有后门,就用 IDA 反汇编得到恶意攻击者的有用信息,再进一步描绘出攻击者画像进行溯源
SELinux 是一种安全子系统,它能控制程序只能访问特定文件使用 setup 工具进入图形化关闭搜索或者修改/etc/sysconfig/selinux
文件
SELINUX=disabled
防火墙打开使用 service iptables start
或则/etc/init.d/iptables start
网络层
https://www.zhihu.com/question/21427267
- Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
- Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
举例-阿里规范 用户历史命令记录
缺点:安全性不够。使用x-pack实现安全认证及权限管理功能
log4j 是 javaweb 的日志组件,用来记录 web 日志
去指定下载文件的 url 在搜索框或者搜索的 url 里面,加上 ${jndi:ldap://127.0.0.1/test} ,log4j 会对这串代码进行表达式解析,给 lookup 传递一个恶意的参数指定,参数指的是比如 ldap 不存在的资源 $ 是会被直接执行的。后面再去指定下载文件的 url,去下载我们的恶意文件。比如是 x.class 下载完成后,并且会执行代码块
修复:升级 Log4j 到最新版本,根据业务判断是否关闭 lookup
Waf 产品有三种
云 Waf
用户不需要在自己的网络中安装软件程序或部署硬件设备,就可以对网站实施安全防护,它的主要实现方式是利用 DNS 技术,通过移交域名解析权来实现安全防护。用户的请求首先发送到云端节点进行检测,如存在异常请求则进行拦截否则将请求转发至真实服务器
Web 防护软件
安装在需要防护的服务器上,实现方式通常是 Waf 监听端口或以 Web 容器扩展方式进行请求检测和阻断
硬件 Web 防火墙
Waf 串行部署在 Web 服务器前端,用于检测、阻断异常流量。常规硬件 Waf 的实现方式是通过代理技术代理来自外部的流量
原理都相同,通过部署在 Web 服务器前方串行接入来将 Web 流量牵引到 WAF 设备中进行清洗或者拦截,最终只把正常用户的请求转发给服务器
当前市场上 Waf 产品核心的防护机制是“规则”,每一个请求、会话,经过抓包,“开包检查”,每一项规则都会检查到,一旦检查不通过,就会被认为是非法访问,拒绝处理
Web基础防护
可防范常规的 web 应用攻击,如 SQL 注入攻击、XSS 跨站攻击等,可检测 webshell,检查 HTTP 上传通道中的网页木马,打开开关即实时生效
CC 攻击防护
可根据 IP、Cookie 或者 Referer 字段名设置灵活的限速策略,有效缓解 CC 攻击
精准访问防护
对常见 HTTP 字段进行条件组合, 支持定制化防护策略如CSRF防护,通过自定义规则的配置,更精准的识别恶意伪造请求、保护网站敏感信息、提高防护精准性
IP 黑白名单
添加终拦截与始终放行的黑白名单 IP,增加防御准确性
地理位置访问控制
添加地理位置访问控制规则,针对来源 IP 进行自定义访问控制
网页防篡改
对网站的静态网页进行缓存配置,当用户访问时返回给用户缓存的正常页面,并随机检测网页是否被篡改
网站反爬虫
动态分析网站业务模型,结合人机识别技术和数据风控手段,精准识别爬虫行为
误报屏蔽
针对特定请求忽略某些攻击检测规则,用于处理误报事件
隐私屏蔽
隐私信息屏蔽,避免用户的密码等信息出现在事件日志中
防敏感信息泄露
防止在页面中泄露用户的敏感信息,例如:用户的身份证号码、手机号码、电子邮箱等
第三方组件缺陷又被归结为供应链安全问题,供应链安全需要多方面考虑。没有万能方案,但是组织可以用分层防御的组合来保护供应链
安全战略评估
要评估风险与合规性,需要针对业务挑战、需求和目标评估现有的安全治理框架——包括数据隐私、第三方风险和IT法规合规需求及差距。安全风险量化、安全开发、法规和标准合规性以及安全教育和培训是关键
事件响应计划与编排
提前为入侵、关闭或中断做好准备,并拥有稳健的事件响应计划很重要。通过实践、测试和易执行的响应计划和补救措施,防止损失
https://www.freebuf.com/articles/neopoints/261681.html
你会怎么写,有哪些要注意的地方,如果别人的脚本检测出来了你的脚本没检测出来你觉的你的脚本会存在什么问题,脚本检测过程中如果没有回显你会怎么做
攻击路径
攻击目的:拿到权限、窃取数据、获取利益、DDOS 等
网络代理:代理 IP、跳板机、C2 服务器等
攻击手法:鱼叉式邮件钓鱼、Web渗透、水坑攻击、近源渗透、社会工程等
攻击者身份画像
虚拟身份:ID、昵称、网名
真实身份:姓名、物理位置
联系方式:手机号、qq/微信、邮箱
组织情况:单位名称、职位信息
基于网络欺骗与浏览器指纹的WEB攻击溯源
可利用流量工具 wireshark 进行溯源:
如何定位到攻击IP:
首先通过选择 - 统计 - 对话查看流量的走向情况, 定位可疑的 IP 地址
根据定位到的 IP 地址,尝试对上传的 webshell 进行定位
ip.addr == ip && http matches
"uploadllevallselectlxp_cmdshell" && http.request.method == "POST"
查找到 webshell 后尝试溯源漏洞位置
http.request.uri contains "webshell.php"
定位到最开始 webshell 执行或上传的时候
根据最开始的 HTTP 上传包或者其他漏洞特征定位漏洞类型
wireshark 简单的过滤规则
过滤ip:
过滤源 ip 地址:ip.src1.1.1.1
目的 ip 地址:ip.dst1.1.1.1
过滤端口:
过滤80端口:tcp.port == 80
源端口:tcp.srcport == 80
目的端:tcp.dstport == 80
协议过滤:直接输入协议名即可,如 http 协议 http
http 模式过滤:过滤 get/post 包 httprequest.mothod == “GET/POST”
Wireshark、xplico、 Volatility、 FastlR Collector、Autopsy、 Dumplt、 FTK Imager、Foremost、Scalpel、 Bulk_ exetractor 等
域前置溯源方法思考
图源网络侵删