hvv面试问题
- 笔记
- 2023-08-23
- 1408热度
- 0评论
面试主要问的点
1、有没有HW经验,担任什么角色,年龄,是否毕业,工作经验
2、实战场景下,怎么研判攻击告警是否成功,举例说一下分析研判思路
3、漏洞原理,复现过程,测试工具,测试思路
4、接触过哪些安全设备,基本功能和原理
5、服务器windows和linux常规命令,常见端口号
6、应急方面,应急过哪些,排查思路和命令
自我介绍
各位老师好,我是xxx,来自xxx,xx岁,
参与过xxx公司xxx的工作,主要从事对提交的漏洞进行判断、审查和复现,并编写对应漏洞的漏洞报告......
2023.xx-2023.xx,hw经历,干了啥,学了啥
2023.xx-2023.xx,hw经历,干了啥,学了啥
怎么研判攻击告警是否成功,举例说一下分析研判思路
网络安全中的攻击研判,可以理解为人工层面对攻击事件进行再分析的行为。安全人员针对安全系统或工具发出的告警,通过结合已有的经验和相关工具,来判断其是否为真实存在的攻击,并根据判断结果做出响应的响应、给出处置建议。
一般来说,对攻击事件的分析研判通常从以下4个维度进行:
- 对已发现攻击的来源进行研判;
- 综合分析攻击技术、工具和路径,判断其威胁性大小;
- 攻击意图研判;
- 处置方式判断。
攻击研判,可以看作安全防护流程最为关键的一环。它上承安全告警的分析,下接安全处置的实施,是安全防护过程中技术含量最高的一步。
是否成功:
- 攻击类型匹配:分析告警中提供的攻击类型,与已知的攻击类型进行比对。如果告警与已知的攻击类型相符,那么可能性较高。
- 攻击向量验证:审查告警中的攻击向量,比对其是否与已知的攻击向量相匹配。攻击向量可以是特定的漏洞、恶意软件或网络传输协议。匹配的攻击向量增加了攻击告警的可信度。
- 告警源可信度:评估告警的来源可信度,包括监测系统的可靠性、告警生成机制和告警数据的完整性。如果告警源可信度高,那么告警的准确性也相对较高。
- 告警附加信息:检查告警中提供的附加信息,例如攻击的目标、攻击者的IP地址、攻击发生的时间等。这些信息可以用于进一步的调查和验证。
- 网络流量分析:通过对与告警相关的网络流量进行分析,确认是否存在异常活动、恶意行为或不寻常的数据流。网络流量分析可以提供更多关于攻击的证据。
- 后续事件跟踪:观察告警后续的事件发展情况。如果后续发生了与告警相关的异常活动或进一步的攻击行为,那么可以认为该告警是成功的。
思路:
- 收集告警数据:收集来自安全设备、系统日志、入侵检测系统等的告警数据。
- 确认告警可信度:评估告警的可信度,包括来源、生成机制、完整性等。验证告警是否来自可信的系统,并检查告警数据是否完整和准确。
- 分析攻击类型:根据告警信息和已知的攻击技术,确定攻击类型。这可以涉及分析攻击向量、恶意软件、漏洞利用等方面的信息。
- 进行威胁情报分析:研究已知的威胁情报,包括黑客组织、恶意软件家族、攻击工具等,以了解攻击者的可能动机、手段和行为模式。
- 进行攻击链分析:从攻击开始到达目标的整个攻击过程,逐步分析攻击者的行动。这可以包括入侵路径、漏洞利用、权限提升、数据窃取等环节。
- 利用网络流量分析:检查与攻击事件相关的网络流量,包括数据包捕获、流量记录等。通过分析流量特征、异常活动和恶意行为,了解攻击的范围和影响。
- 调查受影响系统:对受攻击的系统进行调查,查找攻击痕迹、异常文件、恶意进程等。这有助于确定攻击的成功程度和受影响的范围。
- 制定应对措施:根据攻击的特点和成功程度,制定相应的应对措施。这可以包括修补漏洞、清除恶意软件、加强访问控制等措施,以减少潜在威胁。
- 整理报告和总结:将研判结果、分析过程和相关数据整理成报告。
漏洞原理,复现过程,测试工具,测试思路
1.top10:OWASP TOP 10 是根据开放 Web 应⽤程序安全项⽬公开共享的 10 个最关键的 Web 应⽤程序安全漏洞列表。1.失效的访问控制(越权访问)
2.加密机制失效(明文传输)
3.注入攻击(sql注入、xxe注入)
4.不安全的设计
5.安全配置错误(默认配置,如redis低版本无密码)
6.⾃带缺陷和过时的组件(weblogic之类的组件RCE)
7.身份识别和身份验证错误(未授权访问)
8.软件和数据完整性故障
9.安全日志和监控故障
10.服务端请求伪造ssrf
弱口令、xss
Sqlmap
强大的注入工具,基本所有数据库都可以注入 关键函数 -is-dba ; -dbs ; -current-db ; -user ; random-agent ; -passwords ; -threads ;………。 1.Cookie注入(sqlmap.py -u http://www.xxx.com?id=1注入点–cookie=“cookie值”–current-db) 2.post注入(sqlmap.py -r “数据包地址” -p “制定的参数” -dbms 需要制定的数据类型) 3.get注入(sqlmap.py -u “注入点地址” -dbs 需要的参数) 4.sqlmap进行交互式写shell(1.前提:需要最高权限,知道web网站的绝对路径,能获取cookie ; 2.sqlmap.py -u “注入点地址”–cookie=“cookie值”–os-shell 3.echo “一句话木马”>网站绝对路径 4.输入网站的绝对路径 5.传木马) 1.
Nmap
强大且实用的网络扫描主机检测工具 nmap www.baidu.com 扫描单个主机 nmap 192.168.1.1 扫描单个主机 nmap 192.168.1.1/24 扫描整个子网 nmap -iL ip.txt 扫描批量IP nmap -p80,21,23 192.68.1.1 扫描主机上是否开放80 21 23端口 nmap -sS 192.168.1.1 半开放扫描 nmap --script==vuln nmap -oN 保存扫描结果
MSF
强大的渗透框架 常用命令 Background 让meterpreter处于后台 Sessions -i number 与会话进行交互 number表示第n个session quit 退出会话 shell获取命令行 cat c:boot.ini 查看文件内容 upload /root/desktop/netcat.exe c: 上传文件到目标主机 download 0xfa.txt /root/desktop 下载文件到本地、 edit c:boot.ini 编辑文件 getsystem 提权操作…. 还可以使用msf制作免杀木马
渗透思路
信息收集:
1、获取域名whois信息
2、服务器子域名、旁站、c段查询
3、服务器操作系统版本补丁状况、web中间件类型、版本、数据库类型等
4、服务器开放端口:22 ssh 80 web 445 3389.。。
漏洞扫描:
nessus,awvs ,appscan
漏洞验证:
是否存在漏洞,是否可以拿到webshell或者其他权限
权限提升:
- windows内核溢出提权,数据库提权、组策略首选项提取、web中间件提权、dll劫持提权、第三方软件/服务提权
- linux内核漏洞提权、劫持高权限程序提权、sudoer配置文件错误提权
漏洞利用
日志清理
接触过哪些安全设备,基本功能和原理
1.接触过入侵检测的IDS、入侵防御的IPS
IDS功能:类似防火墙,主要用于网络流量检测
IPS功能:对杀软和防火墙的补充,阻止病毒攻击以及点到点应用滥用
2.天眼:基本功能有威胁情报,分析平台,流量传感器,邮件威胁检测,天提防火墙,网神云锁 ,周边小组件比较多
这些功能上关键的就是前三个
威胁情报原理:这是来自奇安信云端的分析成果,可对 APT攻击、新型木马、特种免杀木马进行规则化描述
分析平台:天眼分析平台用于存储传感器提交的流量日志、告警日志以及文件威胁鉴定器提交的 告警日志
流量传感器:天眼传感器主要负责对网络流量的镜像流量进行采集并还原,还原后的流量日志会加 密传输给天眼分析平台,流量镜像中的 PE和非 PE文件还原后则加密传输给天眼文件威胁 鉴定器进行检测。
3.天眼,椒图等安全设备。流量检测,威胁姿态感知。
服务器windows和linux常规命令,常见端口号
Windows命令:ping:检查网络联通
ipconfig:查看ip地址
dir:显示当前文件夹的内容
net user:查看用户
netstat:查看端口
tasklist:查看进程列表
find:搜索文件中的字符串
regedit:注册表
Linux命令:ls:显示当前文件夹的内容
ifconfig:查看ip地址
whoami:查看用户
netstat:查看端口
ps:查看进程列表
grep:文件中搜索字符串
crontal:检查定时任务
常见端口号:21(FTP)、873(Rsync)、1433(MSSQL)、1521(Oracle)、2181(Zookeeper)、3306(Mysql)、5432(PostgreSQL)、6379(redis)、7001(weblogic)、8161(ActiveMQ )、9200(elasticsearch )、27017(Mongodb)、50070,50050(Hadoop)
22(ssh)、80(http)、443(https)
25:SMTP 简单邮件传输服务器端口
23:Telnet 的端口,Telnet 是一种可以远程登录并管理远程机器的服务
53:dns 端口
应急方面,应急过哪些,排查思路和命令
Linux或者Windows系统服务器应急响应:
Windows入侵盘查思路:
1.检查系统账号安全
查看服务器是否有弱口令,远程管理端口3389,22等端口是否对公网开放检查方法:问服务器管理员,简单直接,要么简单扫描测试一下也可以
查看服务器是否存在可疑账号、新增账号Win+R->lusrmgr.msc
3.查看服务器是否存在隐藏账号、克隆账号使用D盾或者其他小工具都可以查看隐藏账号
4.结合日志,查看管理员登录时间、用户名是否存在异常Win+R->eventvwr.msc
导出Windows的安全日志,利用LogParser进行分析
5.检查异常端口、进程
检查端口连接情况,是否有远程连接、可疑连接netstat -ano
tasklist | find "PID"
进程使用D盾,查看可以进程,查看有没有签名信息,或者可以使用Process Explorer等工具查看
6.检查启动项、计划任务、服务
检查服务器是否有异常的启动项火绒等安全软件查看
Win+R->regedit,打开注册表,查看开机启动项是否正常,特别注意一下三个注册表项
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
检查计划任务控制面板->计划任务
Win+R->cmd->schtasks/at
服务自启动Win+R->services.msc
7.检查系统相关信息
查看系统版本以及补丁信息Win+R->cmd->systeminfo
查看可以目录及文件查看用户目录,新建账号会生成一个用户目录
Win+R->cmd->%UserProfile%\Recent:查看最近打开的文件进行分析
文件夹/文件可以根据时间排序,可以看看最近有没有什么可疑的文件夹/文件
8.日志分析
系统日志前提:开启审核策略
Win+R->eventvwr.msc->导出安全日志->LogParser进行分析
Web访问日志找到中间件的web日志,打包到本地进行分析
Linux下可以使用Shell命令组合查询分析
Linux入侵排查:
1.账号安全
必看文件/etc/passwd
/etc/shadow
必会命令:who,w,uptime,usermod,userdel
2.入侵排查查询特权用户:awk -F: ‘$3==0{print $1}’ /etc/passwd
查询可以远程登录的账号:awk ‘/\$1|\$6/{print $1}’ /etc/shadow
查询具有sudo权限的账号:more /etc/sudoers | grep -v “^#\|^$” grep “ALL=(ALL)”
3.历史命令
必会命令:history
入侵排查:cat .bash_history >>history.txt
4.检查异常端口netstat -antlp
5.检查异常进程ps aux
6.检查开机启动项more /etc/rc.local
/etc/rc.d/rc[0-6].d
ls -l /etc/rc.d/rc3.d/
7.检查定时任务
检查以下目录下是否有可疑文件/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/*
/etc/cron.daily/*
8.检查服务chkconfig
修改/etc/re.d/rc.local文件,加入/etc/init.d/httpd start
使用nesysv命令管理自启动
9.检查异常文件查看敏感目录,如tmp目录下的文件,同时注意隐藏文件夹,以”..”为名的文件夹具有隐藏属性
10.检查系统日志
日志默认存放位置:/var/log
日志分析技巧1、定位有多少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
2、登录成功的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}'
3、增加一个用户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
4、删除用户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
5、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
关于应急响应,很多人以为一上来就是各种查系统日志、查WEB日志、分析流量信息。然而,这种做法是错误的。通常应急响应的都是安全监控平台上出现的高危告警事件,借助平台上的流量监控功能,可以有效确定攻击事件的时间和攻击事件的类型,再不者也可以缩小攻击时间范围。当我们确定了攻击事件的时间/时间段以及攻击事件的类型,那么再开始进行系统分析,这样才能最高效的进行应急响应工作。
所以,当应急响应工作展开时,这两点非常重要:
- 确定攻击事件的时间/时间段
- 确定攻击事件的类型
在这两点确定之后,就可以进行系统分析了,关于系统分析,整体思路如下:
1.系统账号检查 2.进程检查 3.端口检查 4.定时任务检查 5.开机自启动项检查 6.日志检查 7.服务检查 8.文件检查
常见面试题
具体实操 之Linux 应急溯源 命令
面试问你linux应急熟吗? 熟,还可以,接触过 主机层面: 问:怎么查最近新增的文件,你用哪些命令? 1. ls -alt 2、find /
问:用户列表是在哪个目录下,或者怎么查?
Cat /etc/passwd 用户列表
问:临时目录是哪个文件夹?
/tmp ,/etc/ssh
问:怎么查登录成功的用户名,ip,日期?
grep 什么什么 | awk 什么什么 (不建议你去记了,太长了,不经常用一下根本记不住,??? 问:什么命令或者怎么看用户登录的时间? Uptime
问:如何查看当前进程?
Ps -ef 或ps -aux
SQL注入:
二次注入 原理
在第一次插入数据的时候,用一些函数对特殊字符进行了转义,参数在过滤后会添加 / 进行转义,但是 / 并不会插入数据库,所以还是保留了之前的数据,开发者就认为插入的数据是可信的,并有进行校验处理,在第二次插入数据查询的时候,比如第一次插入了单引号,第二次直接拼凑构造恶意语句,形成了二次注入 “ ,id =1 or 1=1”
宽字节注入
为了防止注入 ,开启了gpc(过滤特殊字符)。但是你数据库设置gbk(宽字节),就会漏洞,原理是gbk可以逃逸gpc,比如数据库编码与php编码不同
Base64注入
编码之后进行注入,这样你gpc拦截不了,注入后,我再执行程序解码拼接恶意语句注入查??
csrf跟ssrf区别?
csrf 一个是客户端发起,ssrf是从服务端发起的
csrf漏洞原理是?
用户给网站a发起了一个请求,网站a给用户返回了cookies信息,网站a已经信任了用户; 此时,用户又给网站b发了一个请求,网站b给用户发起了访问网站a的请求
Xss 跨站脚本攻击
插入web页面的一个脚本语言攻击,用户点击触发的攻击 哪种类型? 反射,存储,dom 反射性: 已经插入页面等待用户访问的脚本语言攻击 存储型:存在服务器或数据库的一个脚本语言攻击 DOM:在客户端可以通过dom修改里面对象元素的,从而写入脚本语言攻击
如何防御:
1.增加tokens验证,增加随机验证码 2.Url添加过滤规则
文件上传 Windows如何提权? 应急溯源的实际案例 怎么回答 中间件解析 漏洞原理 Apache tomcat
勒索病毒我们怎么去处置(应急溯源案例)
第一步:先确认下有没有中病毒,文件被锁,445端口资源被占用等特征。 第二步:拍照保留勒索病毒样本,然后去勒索病毒公开库查能不能解锁。 第三步:断网隔离(逻辑隔离,防火墙阻断445端口,wlan关闭;物理隔离:拔网线)防止??? 第四步:验证病毒在主机的存活 下架隔离业务 ,封堵IP,恢复上架 溯源: Web常见漏洞原理 Sql: 布尔注入
盲注是什么?
就是你在测试注入数据库的时候,数据库没有任何回显,只显示对错。 盲注怎么去利用?用什么函数? (if、sleep) 延时时间注入 用 sleep函数利用 联合注入?什么是联合注入 利用方式 (uninon select) 联合两个或多个表一起注入,但是两个表的字段数必须相同 报错注入? 这是啥 报错注入就是会显示报错信息 报错注入用到的函数(updatexml 只能显示32字节的长度 ) (floor)
堆叠查询
同时查询两个语句,在第二个语句构造恶意语句注入
如何防御?
1.绑定变量,采用预编译和 参数化接口查询 2.对特殊字符进行转义
手工注入的思路或者流程?
1、先找注入点,再判断注入类型(整型,字符型) 2、判断字段数(order by limit 数字),字段顺序 3、判断数据库(length,长度,substring(取数据库名)) 用burpsuite 设置两个变量,用 数据库文本 进行枚举爆破,筛选200ok的状态码1. 文件上传突破1. 前端JS突破(抓包修改文件名或者禁用当前浏览器的JS脚本)
2.后端突破(1.黑名单:点,空格点,php 1234567,phphtml,分布式上传,文件流绕过…….。2.白名单:00截断,双文件上传,双文件名……)
了解的中间件
IIS7.5,apache,nginx,tomcat,weblogic,jboos
IIS 5.x/6.0解析漏洞
目录解析/xx.asp/xx.jpg 文件解析test.asp;1.jpg Apache解析漏洞 1.php.aa.bb.cc
未授权访问漏洞
1. Redis未授权访问漏洞
2.Mongodb未授权访问漏洞
3.VNC未授权访问漏洞
4.Docker未授权访问漏洞
5.Hadoop未授权访问漏洞
XXE原理
XXE漏洞就是XML外部实体注入漏洞,通常发生在应用程序解析xml输入时,没有禁止外部实体加载,导致可???,命令执行,内网端口扫描,攻击内网网站,发起dos攻击等。 1.XXE分类
回显型,无回显型
XXE引入方式
本地引入,外部引入,外部参数实体引入。
遇到XXE盲注解决方法
可以选择使用DNS外带和外部实体注入 在攻击者自己的公网服务器准备一个test.dtd通过base64为将读取的内容加密得到的值当做
知道的渗透框架有哪些
Metasploit,Empire,Cobalt Strike。
WIN提权方法
系统内核溢出漏洞,系统配置错误提权,组策略首选项提权,绕过UAC,令牌窃取,sc命令提权………。
Linux提权
Dirty Cow提权,sodu提权,内核提权………。
Dirty Cow提权
脏牛提权
数据库提权
Mysql(mof提权,udf提权,vbs启动项提权) Sqlserver(xp_cmdshell 扩展存储函数提权;差异备份提权)
UDF提权的常用命令
Select cmdshell(‘netstat -an’); Drop function cmdshell Select cmdshell(‘net user yonghuming mima /add’); Select cmdshell(‘ipconfig/all’);
VBS启动项提权
先通过webshell连接数据库建立表将vbs脚本写入表中,导入启动项,在vbs脚本后面加上“0”表示不弹出cmd窗口,静默运行。该方法是在udf提权失败的情况下将vbs插入启动项系统重???vbs???
Linux下的MySql提权
Mysql -hlocalhost -uroot -p System useradd hacker System passwd hacker
SQL注入Bypass手法
等量替换;参数污染;编码绕过;sql特性
文件上传怎么绕过
前端验证绕过;Mime限制扩展名绕过;更改后缀名绕过;伪静态文件绕过;00截断;文件包含绕过;二次渲染……。
命令执行怎么绕过
管道符号绕过;空格绕过;%0a,%09;重定向绕过;变量拼接;单/双引号;编码绕过;反斜线绕过;命令换行绕过…….。
如何手工快速判断目标是Windows还是Linux服务器
从PING命令的回显可以判断操作系统类型,
ping Linux内网机器的TTL为64 ping Windows内网机器的TTL为126 linux大小写敏感,windows大小写不敏感
为何一个Mysql的数据库站只有一个80端口开放
更改了端口,没有扫描出来;站库分离;3306端口不对外开放
3389无法连接的情况
服务器在内网;做了TCP/IP筛选;做了IP安全策略或者自带防火墙;端口被修改;管理员设置了终端登录权限只有指定用户可以。 编辑器漏洞
Access扫出后缀为ASP的数据库文件,访问乱码,如何实现本地利用
下载下来,直接改后缀名为.mdb 注入时可以不用and或or或xor,能直接order by开始注入吗?为什么
And/or/xor,前面的1=1,1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省去。
SQLserver有几种提权方式?怎么提权?
更改sa口令;简单修补sa弱口令;xp_cmdshel提权;沙盒提权;Job提权;镜像劫持。
CSRF,XSS,XXE有什么区别,及修复方式
XSS与CSRF区别 方向不一样 Xss主要通过劫持用户信息,主动的去通过劫持的用户信息去攻击 Csrf主要通过伪造请求,将自己的请求伪装成正常的请求,通过用户去访问正常网站 对象不一样 Xss主要攻击客户端 Csrf主要通过伪装去访问服务端 方法不一样 Xss不需要登录 直接在页面进行语句构造进行攻击或脚本攻击 Csrf需要有被伪装攻击用户的登录信息 XXE XXE是XML的外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全???。 修复方式 XSS:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、输出???html???。 CSRF:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer XXE:XML解析库在调用时严格禁止对外部实体的解析
如何防止CSRF
首先XSS漏洞先防护好, 针对重要的服务:比如网站的积分,涉及用户利益的以及重要信息的最好用ajax请求,使用token验证。这样可以防止token被攻击者获取。验证referer来源。
代码执行 文件读取 命令执行的函数有哪些?
代码执行: eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function 文件读取: file_get_contents(),highlight_file(),fopen(),read
file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等 命令执行: system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()
文件包含伪协议
PHP伪协议,data伪协议,file协议……。
OSI七层协议
物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
TCP3次握手与4次挥手
三次握手 第一次握手:客户端发送SYN到服务器并进入等待状态 第二次握手:服务器收到SYN包确认客户端的SYN(ack=x+1),同时自己也发送一个SYN包(SYN=Y)即SYN+ACK,此时服务器进入SYN_RECV状态 第三次握手:客户端收到服务器的SYN+ACK包 向服务器发送一个ACK确认包,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 四次挥手 第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据连接,但此时主动关闭方还可以接收数据。 第二次挥手:被动方收到FIN包后发送一个ACK给对方,确认序号为收到的序号+1(与SYN相同,一个FIN占用一个序号) 第三次挥手:被动方发送一个FIN,用来关闭被动方和主动方的数据传输。 第四次挥手:主动关闭方收到FIN后,发送一个ACK到被动方,确认序号为收到序号+1,彻底与其断开连接。
TCP/UDP区别
TCP(传输控制协议):可靠的面向连接,可传输大量数据,但传输速度慢 UDP(用户数据报协议):不可靠的非面向连接,传输少量数据,传输速度快
Linux/Windows的安全加固
Linux安全加固 Windows安全加固 1.检查密码有效期与复杂度,账户验证失败次数限制 2.历史命令设置 3.系统未限制默认root账户登录模式未配置su wheel only yes 4.检查是否使用PAM认证模块禁止wheel组以外的用户su为root 5.操作系统启用NTP 6.及时更新补丁升级系统 7.关闭不必要的端口与服务 1.检查Windows系统密码复杂度策略 2.检查Windows系统锁定策略 3.开启服务器审计策略 4.登录连接超时及自动推出策略 5.终端服务配置RDP安全层 6.权限分离 7.关闭不必要的端口与服务 8.更新补丁 9.安装杀软
常见的安全设备
防火墙,安全中间件,授权证书系统,公开密钥基础设施,防病毒软件,蜜罐,入侵检测,入侵防御,WAF,SOC安全运营中心,云安全…。
Sql注入漏洞有哪些利用方式
SQL注入根据注入点可以分为数值型注入和字符型注入 根据注入方式可以分为联合注入,报错注入,布尔盲注,时间盲注,二次注入,堆叠注入,宽字节注入和HTTP Header注入 其中HTTP Header注入又分 Referer注入 , Cookie注入 和 User-agent注入 时间盲注又有一种替代方式,叫DNSlog注入,也叫带外注入 Sql注入无回显的情况下利用
利用DNSlog实现无回显的SQL注入
文件上传漏洞绕过方法
前端修改允许的类型;burp抓包修改Content-Type: 为允许的字段;禁用javascript;特殊文件名绕过;文件名大小写绕过…。
WAF原理与绕过
原理:
WAF(Web Application Firewall)是一种网络安全设备或应用程序,用于保护 Web 应用程序免受各种网络攻击,特别是针对 Web 应用程序的攻击。它位于 Web 应用程序和用户之间,监控和控制流量,以检测和阻止恶意请求和攻击。
WAF 的工作原理主要包括以下几个方面:
- 请求过滤:
- WAF 分析进入 Web 应用程序的 HTTP 请求,检查其中的参数、头部和有效载荷等,通过事先配置的规则进行筛选和过滤。这些规则可以是基于签名的规则,也可以是基于行为的规则。
- 黑白名单控制:
- WAF 维护黑名单和白名单,用于识别已知的恶意 IP 地址或合法的 IP 地址。黑名单中的 IP 地址将被拦截或阻止,而白名单中的 IP 地址则被允许通过。
- 正则表达式匹配:
- WAF 使用正则表达式来匹配恶意请求中的特定模式或攻击载荷。这样,它可以检测到 SQL 注入、跨站脚本攻击(XSS)、路径遍历等攻击。
- HTTP 协议验证:
- WAF 会验证 HTTP 请求是否符合规范的 HTTP 协议,以防止一些常见的 HTTP 请求攻击。
- 会话保护:
- WAF 能够跟踪和保护用户会话,防止会话劫持和会话固定攻击。
- 防御 DoS 和 DDoS 攻击:
- WAF 可以识别和阻止分布式拒绝服务攻击(DDoS)和普通拒绝服务攻击(DoS),确保 Web 应用程序的可用性。
- 日志记录和报告:
- WAF 记录所有的攻击尝试和拦截情况,并生成相应的报告,供安全管理员分析和响应。
绕过:
- 编码和加密:
- 攻击者可能对恶意请求使用编码或加密技术,使WAF无法识别其中的攻击载荷。例如,Base64编码和URL编码可以隐藏攻击载荷,阻碍WAF的识别。
- 混淆攻击载荷:
- 攻击者可能使用特殊字符、大小写变换、HTML注释等技术来混淆攻击载荷,使其变得不易被WAF检测。
- 使用HTTP方法:
- WAF通常会检查常见的HTTP方法(如GET和POST),攻击者可能尝试使用不常见的HTTP方法(如PUT、DELETE等)来绕过WAF的检测。
- 使用不同的协议和端口:
- 攻击者可能尝试通过使用其他协议(如HTTPS、WebSocket等)或不常见的端口来绕过WAF。
- 分割攻击载荷:
- 攻击者可以将攻击载荷分割成多个部分,并在不同的HTTP请求中发送,以绕过WAF的检测。
- 缓慢攻击:
- 攻击者可以通过缓慢地发送攻击请求,以避免WAF的防御机制,这种攻击也被称为慢速攻击。
- 定制攻击载荷:
- 攻击者可能会针对特定WAF的规则和签名,定制特殊的攻击载荷,使其不被WAF所识别。
- IP伪装和多IP攻击:
- 攻击者可能使用代理或虚假IP地址来绕过WAF的IP黑名单或限制。
- 利用应用程序漏洞:
- 如果应用程序本身存在漏洞,攻击者可以利用这些漏洞绕过WAF的防御,直接对应用程序进行攻击。
如何判断是真实的攻击
- 异常流量模式:检查流量包是否显示出异常模式,如大量未知的协议、异常频繁的连接尝试、非常规端口的通信等。这可能是攻击者试图隐藏攻击活动的迹象。
- 重复攻击模式:观察是否有定期或周期性的流量,特别是针对同一目标的多次重复攻击。这可能表明攻击者正在持续尝试攻击。
- 异常登录尝试:检查是否有大量的登录尝试,尤其是来自未知IP地址或未授权的地理位置。多次失败的登录尝试可能是暴力破解的迹象。
- 异常协议行为:观察协议行为是否与正常情况不符,例如协议字段的异常值、非预期的协议组合等。
- 漏洞利用尝试:注意是否有针对特定服务或应用程序的漏洞利用尝试,如SQL注入、跨站点脚本攻击等。
- 流量频率和规模:检查流量的频率和规模,如果流量突然增加,可能是DDoS(分布式拒绝服务攻击)的迹象。
- 威胁情报:使用威胁情报平台或黑名单,检查IP地址是否出现在已知的恶意IP列表中。
- 日志分析:结合其他系统日志,如防火墙、IDS(入侵检测系统)等,进行综合分析,以获取更全面的画面。
- 验证攻击载荷:如果可能,尝试验证攻击载荷,以确认是否存在漏洞或受到攻击。
- 专业帮助:如果你不确定是否遭受攻击或处理能力有限,最好寻求安全专家的帮助。
遇到真实攻击如何解决
- 隔离受攻击系统:如果可能,立即隔离受攻击的系统或主机,将其与网络隔离,以防止攻击者进一步渗透和扩散。
- 通知相关人员:通知你的网络和安全团队,并立即报告攻击情况。确保团队成员及时了解正在发生的事件,以便协调响应措施。
- 搜集证据:记录攻击细节、时间戳、攻击IP地址、使用的攻击方式等相关信息。这些证据有助于事后调查和追踪攻击来源。
- 更新防火墙和IPS规则:如果你的网络设备有防火墙和入侵防御系统(IPS),立即更新规则,以阻止正在进行的攻击。
- 暂停对外服务:如果是DDoS攻击,暂停对外的关键服务可以减轻攻击对正常业务的影响。
- 使用备份系统:如果可能,切换到备份系统和数据,确保攻击不会破坏重要数据。
- 与ISP合作:如果攻击涉及大规模的DDoS攻击,与你的互联网服务提供商(ISP)合作,寻求他们的支持和协助。
- 封锁攻击源:根据搜集到的攻击IP地址,尝试将攻击源封锁在防火墙或路由器级别上。
- 追踪攻击来源:如果你有足够的技术能力,尝试追踪攻击来源和攻击者的行为,以便后续采取法律措施。
- 修复漏洞:攻击可能是利用了系统或应用程序的漏洞,修复这些漏洞是防止再次受到类似攻击的重要步骤。
- 恢复服务:在确认网络已得到安全控制后,逐步恢复受影响的服务,并确保系统的稳定性和安全性。
- 安全加固:采取进一步的安全加固措施,包括加强密码策略、更新软件和应用程序、培训员工等,以防止类似攻击再次发生。
如何分析wireshark流量包
- 捕获流量包:
- 打开Wireshark,并选择要捕获流量的网络接口。你可以选择适当的接口,如以太网适配器或Wi-Fi适配器。
- 点击"开始"按钮开始捕获流量包。Wireshark将开始监听选定的接口,并记录通过该接口的网络流量。
- 应用过滤器:
- 捕获的流量包可能非常庞大,为了方便分析,可以使用过滤器来筛选感兴趣的流量。
- Wireshark提供了强大的过滤功能,例如你可以使用IP地址、协议类型、端口号等条件来过滤流量。例如,
ip.addr == 192.168.0.1可以过滤出与IP地址192.168.0.1相关的流量。
- 分析流量包:
- 查看捕获的数据包列表。Wireshark将以表格形式显示每个数据包的详细信息,如时间戳、源IP地址、目标IP地址、协议类型、数据包大小等。
- 可以通过点击数据包来查看更详细的信息,包括数据包的各个字段和数据内容。
- 解析协议:
- Wireshark会自动解析大多数常见的网络协议,使你可以更好地理解流量包的内容。
- 对于每个数据包,Wireshark会显示协议栈,你可以展开各个协议来查看其详细信息。例如,你可以查看以太网头部、IP头部、TCP/UDP头部等。
- 关注关键指标:
- 在分析流量包时,你可以关注一些关键指标,如网络延迟、丢包率、响应时间等。Wireshark提供了一些统计功能和图表,可以帮助你分析这些指标。
- 特定场景的分析:
- 根据具体的需求和场景,你还可以应用一些特定的分析技巧。例如,可以关注特定会话的流量、检测异常行为、分析应用层协议等。
