全网最全安服工程师修炼手册
本篇文章主要介绍安全服务工程师的必备技能,也是简单记录下我的安服历程!
思维导图附上
点击下载
基础技能
网络
IP
IP概念:IP地址被用来给Internet上的电脑一个编号。日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
A类地址 第1个8位中的第1位始终为0 0-126.x.x.x 255.0.0.0/8
B类地址 第1个8位中的第1、2位始终为10 128-191.x.x.x 255.255.0.0/16
C类地址 第1个8位中的第1、2、3位始终为110 192-223.x.x.x 255.255.255.0/24
D类 以1110开始 用于组播
E类 以11110开始 用于科研保留
其中127.x.x.x段地址空间是被保留的回环地址
子网掩码计算
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。简单来讲就是将网络地址全换为“1”主机地址为“0”。
a.通过子网掩码,就可以判断两个IP在不在一个局域网内部
b.子网掩码可以看出有多少位是网络号,有多少位是主机号
组局域网
一个网卡设置多个IP
DNAT、SNAT、静态路由
SNAT
场景:云上的vm主机用户作为客户端访问外网服务器
vm(client)—>SNAT(将数据包中的内网源IP转换为外网IP)—>Internet(服务器)—>SNAT(将数据包内的目的IP转换为内网IP)—>vm(client)
DNAT
场景:云上的VM主机作为服务器端为外网提供服务
Internet(client用户)—>DNAT(将数据包中的目的公网IP转换为目的内网IP)—>VM(server)—>DNAT(将数据包中的源内网IP转换为外网IP)—>Internet(client用户)
#DNAT
iptables -t nat -A PREROUTING -d 172.18.0.107 -p tcp --dport=80 -j DNAT --to-destination 192.168.25.106:8000
#SNAT
iptables -t nat -A POSTROUTING -s 192.168.25.0/24 -j SNAT --to-source 172.18.0.10
静态路由
静态路由是由管理员在路由器中手动配置的固定路由。配置静态路由需要注意以下几点。
(1)需要有目标IP
(2)需要有与静态路由直接相连的下一路由器接口的IP地址或静态路由的本地接口。
(3)静态路由是由管理员手动设置的,除非管理员干预,否则静态路由不会发生变化。
静态路由特点
(1)允许对路由的行为进行精准的控制。
(2)静态路由是单向的。
(3)静态路由器的缺点就是缺乏灵活性。
参考:https://www.linuxidc.com/Linux/2019-08/160377.htm
linux配置IP(centos/ubuntu)
#centos7.6
vi /etc/sysconfig/network-scripts/ifcfg-ens32
bootproto=static
onboot=yes
#在最后加上几行,IP地址、子网掩码、网关、dns服务器
IPADDR=192.168.1.160
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=119.29.29.29
DNS2=8.8.8.8
#重启网络
systemctl restart network
#ubuntu20.04
sudo vi /etc/netplan/00-installer-config.yaml
network:
ethernets:
ens33:
addresses: [192.168.31.215/24] #配置的静态ip地址和掩码
dhcp4: no #关闭DHCP,如果需要打开DHCP则写yes
optional: true
gateway4: 192.168.31.1 #网关地址
nameservers:
addresses: [192.168.31.1,114.114.114.114] #DNS服务器地址
version: 2
renderer: networkd #指定后端采用systemd-networkd或Network Manager,不填则默认systemd-workd
#应用新配置
sudo netplan apply
wireshark抓包,常见过滤语法
1、针对ip的过滤
#对源地址进行过滤
ip.src == 192.168.0.1
#对目的地址进行过滤
ip.dst == 192.168.0.1
#对源地址或者目的地址进行过滤
ip.addr == 192.168.0.1
#如果想排除以上的数据包,只需要将其用括号囊括,然后使用 “!” 即可
!(ip.addr == 192.168.0.1)
2、针对协议的过滤
#获某种协议的数据包,把协议的名字输入即可,只能为小写
http
#捕获多种协议的数据包
http or telnet
#排除某种协议的数据包
not arp 或 !tcp
3、针对端口的过滤(视传输协议而定)
#捕获某一端口的数据包(以tcp协议为例)
tcp.port == 80
#捕获多端口的数据包,可以使用and来连接,下面是捕获高于某端口的表达式(以udp协议为例)
udp.port >= 2048
4、针对长度和内容的过滤
#针对长度的过虑(这里的长度指定的是数据段的长度)
udp.length < 20
http.content_length <=30
#针对uri 内容的过滤 matches 后的关键字是不区分大小写的!
http.request.uri matches “user” (请求的uri中包含“user”关键字的)
http.request.uri contains “User” (请求的uri中包含“user”关键字的)
注意:contains 后的关键字是区分大小写的!
5、针对http请求的一些过滤实例。
#过滤出请求地址中包含“user”的请求,不包括域名;
http.request.uri contains “User”
#精确过滤域名
http.host==baidu.com
#模糊过滤域名
http.host contains “baidu”
#过滤请求的content_type类型
http.content_type ==“text/html”
#过滤http请求方法
http.request.method ==“POST”
#过滤tcp端口
tcp.port== 80
http && tcp.port == 80 or tcp.port==5566
#过滤http响应状态码
http.response.code ==302
#过滤含有指定cookie的http数据包
http.cookie contains “userid”
文字处理
word各种格式、excel常用公式(vlookup)、notepad++批量处理字符串
word各种格式
有手就行这里不再赘述
excel常用公式(vlookup)
微软官方教程附上
https://support.microsoft.com/zh-cn/office/vlookup-%E5%87%BD%E6%95%B0-0bbc8083-26fe-4963-8ab8-93a18ad188a1
notepad++批量处理字符串(大多数操作依赖正则表达式)
1、在开头或结尾加入内容
正则表达式^和$分别表示开头和结尾, 替换他们为需要添加的内容即可完成在每行之前加入指定内容
2、删除奇数行/偶数行
核心思路为每两行匹配, 并分组, 再需要时替换为对硬的组即可, 正则为([\n])\n([^\n])从头开始匹配, 非换行符+换行符+非换行符, 正是两行。使用\1替换为奇数行(只保留), \2替换为偶数行(只保留)
3、驼峰转下划线
找到小写字母+大写字母的组合, 在中间加一个_并且将后面的字母变成小写:ckcSEC变为ckc_sec
#查找
([a-z])([A-Z])
#替换
\1_\l\2
4、下划线转驼峰
找到小写字母+_+小写字母的组合, 去掉_并且将后面的小写字母变成大写:ckc_sec变为ckcSEC
#查找
([a-z])_([a-z])
#替换
\1\u\2
5、还有一种情况是复制过来的文本末尾会有空白行或者是制表符或者是空格
a.去除行尾空格和空白行
查找目标:\s+$ 替换为空,查找方式选择正则表达式
b.去除行首空格
查找目标:^\s+ 替换为空,查找方式选择正则表达式
c.合并行
查找目标:\r\n 替换为空,查找方式选择正则表达式
d.行首插入
查找目标:^ 替换为要插入的字符,查找方式选择正则表达式
e.行尾插入
查找目标:$替换为要插入的字符,查找方式选择正则表达式
编程语言
会基本使用,拿网上的脚本自己修改,如python、linux shell
这个不是一天两天能学会的,这里就不作赘述,得靠平时自己的坚持学习练习。
工具篇
科学上网
V2ray等,作为一名网络安全职业人员,这个肯定是必不可少的,多的这里也就不作解释了。不过还请务必在国家法律规定的范围内使用,切勿违法犯罪。仅用于学习交流,为国家网络安全做贡献。
生产力
在线笔记软件
这个可以直接写博客,写博客是个好习惯,能及时的帮助你总计和积累一些知识点,也是一个成长过程的记录。当然除了搭建个人的博客网站,还可以利用软件做笔记。这样可以帮助你自动云备份,这里笔者推荐有道云笔记。免费的3G空间云备份,对于笔记而言是绝对够的。
https://note.youdao.com/
everything
everything是一个私有的免费Windows桌面搜索引擎,可以在NTFS卷上快速地根据名称查找文件和目录,windows自带的搜索要快的多,非常好用,这里笔者极力推荐,可方便快速启动渗透测试工具或者脚本,以及查找文件。
https://www.voidtools.com/zh-cn/
ditto
Ditto 是 Windows 一款免费开源的剪贴板增强软件,支持主流系统,支持中文,并且提供免安装绿色版。使用它你只需像往常一些复制东西,然后按下 Ctrl+` (数字1前面那个按键),就能唤出它的界面,里面记录了所有历史复制内容,你可以选择性进行粘贴,非常方便。
https://ditto-cp.sourceforge.io/
notepad++
这个神器就不多说了,无敌
https://notepad-plus-plus.org/downloads/
SSH(mobaxterm、xshell等)
ssh工具,有个国产的FinalShell,但是国产特色在那里,不是很敢用,还是让他再发展几年再说
xshell是收费的,但是有个学校版可以免费申请,功能基本无差别
https://www.netsarang.com/zh/free-for-home-school/
mobaxterm 国外,开源免费,支持多种协议,简直yyds,也是我一直再用的
https://mobaxterm.mobatek.net/
php运行环境
这个主要用于自己平时的自建靶场练习
(phpstudy支持多版本切换、wamp、thinkphp等)
网盘(团队资料共享以及备份)
阿里云盘不限速不收费yyds
https://www.aliyundrive.com/
画图软件
draw.io
https://www.diagrams.net/
一款实用的免费流程图绘制工具,它致力于成为完全开源、免费、并且高质量的绘图软件,使用它可以轻松创建图表,适用于商务、工程、电气、网络设计、软件设计等诸多领域的专业绘图。
xmind(思维导图软件)
自行百度绿色破解
浏览器插件
Hack-Tools
http://github.com/LasCC/Hack-Tools
s7ck HackTools,是一个web扩展,方便web应用程序渗透测试,如XSS、反向shell、编码转换等等。 随着扩展,不再需要在不同的网站或本地搜索有效负载存储空间,大多数工具都是一键式访问。
HackBar
sql注入神器
User-Agent Switcher
改ua头
foxyproxy
小狐狸,网络抓包代理工具
wappalyzer
业内有名的指纹识别插件,这里就不用我多说了吧,yyds
安全产品
漏扫工具
每个公司都有自己专门的漏扫工具,因为涉及公司机密,这里就不透露了
防火墙
每个安全厂商基本都有自己开发的防火墙设备
防火墙是一种用于监控入站和出站网络流量的网络安全设备,可基于一组定义的安全规则来决定是允许还是阻止特定流量。
防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障,是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。
入侵检测 IDS/入侵防御IPS
入侵检测系统IDS(“Intrusion Detection System”)专业上讲就是依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。与防火墙不同的是,IDS入侵检测系统是一个旁路监听设备,没有也不需要跨接在任何链路上,无须网络流量流经它便可以工作。因此,对IDS的部署的唯一要求是:IDS应当挂接在所有所关注的流量都必须流经的链路上。
IDS在交换式网络中的位置一般选择为:尽可能靠近攻击源、尽可能靠近受保护资源。
入侵防御系统IPS(“Intrusion Prevention System”)在入侵检测的基础上添加了防御功能,一旦发现网络攻击,可以根据该攻击的威胁级别立即采取抵御措施。
IPS技术可以深度感知并检测流经的数据流量,对恶意报文进行丢弃以阻断攻击,对滥用报文进行限流以保护网络带宽资源。对于部署在数据转发路径上的IPS,可以根据预先设定的安全策略,对流经的每个报文进行深度检测(协议分析跟踪、特征匹配、流量统计分析、事件关联分析等),如果一旦发现隐藏于其中网络攻击,可以根据该攻击的威胁级别立即采取抵御措施,这些措施包括(按照处理力度):向管理中心告警;丢弃该报文;切断此次应用会话;切断此次TCP连接。
两者的差别在于:
功能不同:入侵防御系统在入侵检测的基础之上还实现了防护的功能。
实时性要求不同:入侵防御必须分析实时数据,而入侵检测可以基于历史数据做事后分析。
部署方式不同:入侵检测一般通过端口镜像进行旁路部署,而入侵防御一般要串联部署。
参考:
http://security.zhiding.cn/security_zone/2009/0412/1362627.shtml
https://cloud.tencent.com/developer/news/561338
日志审计
综合日志审计平台,通过集中采集信息系统中的系统安全事件、用户访问记录、系统运行日志、系统运行状态等各类信息,经过规范化、过滤、归并和告警分析等处理后,以统一格式的日志形式进行集中存储和管理,结合丰富的日志统计汇总及关联分析功能,实现对信息系统日志的全面审计。
通过日志审计系统,企业管理员随时了解整个IT系统的运行情况,及时发现系统异常事件;另一方面,通过事后分析和丰富的报表系统,管理员可以方便高效地对信息系统进行有针对性的安全审计。遇到特殊安全事件和系统故障,日志审计系统可以帮助管理员进行故障快速定位,并提供客观依据进行追查和恢复。
日志审计平台的部署方式
硬件产品部署方式:
一般日志审计系统采用旁路部署即可,只要到达全部设备网络可通即可。
支持单机部署和分布式部署。
云日志审计系统部署方式:
云日志审计部署一般要求到全网设备可通信即可。
参考:https://blog.csdn.net/qq_38265137/article/details/106790419
堡垒机
运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
云WAF
云WAF即web应用防火墙.
云WAF,是web应用防火墙的云模式,这种模式让用户不需要在自己的网络中安装软件WAF或部署硬件WAF,就可以对网站实施安全防护。防SQL注入、防XSS、防CC攻击、防webshell上传、防篡改、防盗链等,这些传统WAF上存在的功能,云WAF同样具备。从用户的角度来看,云WAF就像是一种安全服务。
apt/态势感知
APT攻击
APT攻击技术学习指南
态势感知
某大厂态势感知被五千万买断(手动狗头)
针对APT攻击的特点及危害,采用大数据处理架构,集合行为分析、虚拟执行、多维关联分析、机器学习等技术,针对APT攻击中广泛采用的0day/Nday漏洞、特种木马、渗透入侵技术等进行深度检测分析;挖掘识别网络空间中的已知/未知高级威胁,对威胁进行追踪与定位;结合攻击事件关联,提供木马报告、趋势分析报表等多种可视化统计图表,实现对APT攻击的全生命周期的检测分析与预警,帮助用户全面、直观掌握网络安全风险状况。并且可与天融信防火墙联动,建立APT监测与阻断防御体系,形成攻击防御闭环。
通过威胁态势感知对入侵植入事件、网内失陷事件进行监测,实现对已知和未知威胁地实时监控与态势感知,实时展现网络安全整体态势感知地图,掌握全局资产风险,支撑整体安全策略,让安全可见、可控、可预测。
宏观威胁态势感知地图、多阶段全链条攻击检测、动静结合的技术检测、动态沙箱识别未知威胁、全面木马通信行为检测、多种沙箱逃逸对抗技术。
杀毒软件
企业的杀毒软件是统一部署管理的,业内有名的奇安信,360等
应急响应
1、处理服务器中毒事件,手工清除一些简单的病毒
主要为挖矿病毒,Google一下业内大哥的挖矿病毒清理经验,进行分析总结
2、能分析web日志、操作系统日志,对入侵溯源
3、能编写应急响应报告
4、常用命令
常用命令使用教程
ifconfig、cd、cat、grep、ping、traceroute、find、netstat、chmod、ps、top、whoami、head、tail、last、lastb
5、windows常用工具
autoruns
强化版任务启动管理器。Autoruns 是 SysInternals 工具集中非常简单易用而又十分常用的一个小工具,它可以说是我日常使用频率最高的工具之一。其主要功能就是帮助我们管理 Windows 中的各种启动项,有了它以后你便可以抛弃各种号称“管家”、“卫士”之类的系统启动项管理工具了。
tcpview
它将显示系统上所有 TCP 和 UDP 端点的详细列表,包括本地和远程地址以及 TCP 连接的状态。在 Windows Server 2008、Vista 和 XP 上,TCPView 还报告拥有端点的进程的名称。TCPView 提供了 Windows 附带的 Netstat 程序的更多信息和方便呈现的子集。
procexp
Process Explorer能显示有关哪些句柄和 DLL 进程已打开或加载的信息。由两个子窗口。顶部窗口始终显示当前活动进程的列表,包括其拥有帐户的名称,而底部窗口中显示的信息取决于所处的模式:
句柄模式:您将看到处理在顶部窗口中选择的进程已经打开
DLL 模式:您将看到进程已加载的 DLL 和内存映射文件。
Process Explorer还具有强大的搜索功能,可以快速显示哪些进程打开了特定句柄或加载了 DLL。Process Explorer的独特功能使其可用于跟踪 DLL 版本问题或处理泄漏,并提供对 Windows 和应用程序工作方式的洞察。
virustotal.com
可分析可疑文件和 URL 以检测恶意软件的类型,以及免杀测试
6、linux常用工具(nethogs、iftop)
NetHogs
NetHogs 是一个小型的“网络顶部”工具。它不像大多数工具那样按协议或每个子网分解流量,而是按进程对带宽进行分组。
iftop
iftop用于查看网络上的流量情况,包括实时速率、总流量、平均流量等,是一款实时流量监控工具。
加固
1、windows
windows查看服务、进程、启动项、组策略、打补丁、防火墙等
2、linux
密码策略、任务计划、umask、ssh、uid=0的用户等,找现成脚本
3、数据库和中间件
由于公司保密协议,这里请自行搜索方法,暂不提供
渗透测试
作为一名安服工程师,渗透测试的能力肯定是要具备的。
1、要能独立对web系统进行渗透测试,并编写渗透测试报告
2、内网渗透测试
3、能对app做简单渗透,会抓app的网络交互包,简单了解下即可,工具:Fiddler
上面这些我以前的文章写了很多关于渗透测试的,可以参考学习
4、各种工具使用(nmap、sqlmap、bp、msf、CS)
nmap
nmap教程:https://www.zhiji.icu/2021/02/17/nmap-de-shi-yong/
sqlmap
sqlmap教程:https://www.zhiji.icu/2021/02/18/sqlmap-de-shi-yong/
CobaltStrike4.0
CobaltStrike4.0渗透测试手册(pdf)
漏扫
1、会使用nessus
2、会整理nessus漏扫报告
3、能解读漏扫报告,指导用户修复漏洞
4、能独立去用户现场进行漏扫
CTF
这方面我也是个菜狗,仅仅当作兴趣爱好,就推荐一些ctf的练习靶场吧
CTFHub:开箱即用的CTF学习解决方案
https://www.ctfhub.com/#/index
攻防世界:adworld.xctf.org.cn
WgpSec CTF:ctf.wgpsec.org
BUUCTF:buuoj.cn
最后
关于安全服务工程师的必备技能总结就是上面这些了,虽然部分内容有点水,但是也耗费了不少时间,旨在为初入安全的小白,提供上帝视角,有方向有目标的学习进步,共勉。