|
3 | 3 | import os, time, sys, json, re
|
4 | 4 | from lib.common import *
|
5 | 5 | from lib.ip.ip import *
|
| 6 | +from subprocess import Popen, PIPE |
6 | 7 |
|
7 | 8 |
|
8 | 9 | # 作者:咚咚呛
|
|
19 | 20 | # 10、SSH Server wrapper 后门,替换/user/sbin/sshd 为脚本文件
|
20 | 21 | # 11、/etc/inetd.conf 后门
|
21 | 22 | # 12、/etc/xinetd.conf/后门
|
| 23 | +# 13、setuid类后门 |
| 24 | +# 14、/etc/fstab类后门(待写) |
22 | 25 | # 13、系统启动项后门检测
|
23 | 26 |
|
24 | 27 |
|
@@ -206,6 +209,25 @@ def check_xinetd(self):
|
206 | 209 | except:
|
207 | 210 | return suspicious, malice
|
208 | 211 |
|
| 212 | + # 分析setuid后门后 |
| 213 | + def check_setuid(self): |
| 214 | + suspicious, malice = False, False |
| 215 | + try: |
| 216 | + p1 = Popen("find / -type f -perm -4000 -not -path '/proc/*' -not -path '/run/*'", stdout=PIPE, shell=True) |
| 217 | + p2 = Popen( |
| 218 | + "grep -vE 'pam_timestamp_check|unix_chkpwd|ping|mount|su|pt_chown|ssh-keysign|at|passwd|chsh|crontab|chfn|usernetctl|staprun|newgrp|chage|dhcp|helper|pkexec'", |
| 219 | + stdin=p1.stdout, stdout=PIPE, shell=True) |
| 220 | + file_infos = p2.stdout.splitlines() |
| 221 | + if info in file_infos: |
| 222 | + self.backdoor.append( |
| 223 | + {u'异常类型': u'setuid后门', u'异常信息': u'文件被设置setuid属性', u'文件': info, |
| 224 | + u'手工确认': u"[1]ls -l %s [2]判断是否存在setuid设置" % info, |
| 225 | + u'风险说明': u'通常此类被设置权限的文件执行后会给予普通用户root权限,通常利用会使用ld-linux类或者自己编写程序类'}) |
| 226 | + suspicious = True |
| 227 | + return suspicious, malice |
| 228 | + except: |
| 229 | + return suspicious, malice |
| 230 | + |
209 | 231 | # 系统启动项检测
|
210 | 232 | def check_startup(self):
|
211 | 233 | suspicious, malice = False, False
|
@@ -312,7 +334,11 @@ def run(self):
|
312 | 334 | suspicious, malice = self.check_xinetd()
|
313 | 335 | result_output_tag(suspicious, malice)
|
314 | 336 |
|
315 |
| - string_output(u' [13]系统启动项后门检测') |
| 337 | + string_output(u' [13]setuid 后门检测') |
| 338 | + suspicious, malice = self.check_setuid() |
| 339 | + result_output_tag(suspicious, malice) |
| 340 | + |
| 341 | + string_output(u' [14]系统启动项后门检测') |
316 | 342 | suspicious, malice = self.check_startup()
|
317 | 343 | result_output_tag(suspicious, malice)
|
318 | 344 |
|
|
0 commit comments