从Pentester / Red Team的角度来看
好的,我们可以说我们正在尽力避免检测或避免Blue Team意识到脚本导入模块'x'。
我们在代码中实现了一个故障安全,它检查条件a是否为真。如果这不是我们的目标,我们希望脚本以不会引起注意的方式行动。
根据我的理解,Blue Team可以使用进程分析(这是正确的词吗?)来找出python脚本在运行时实际执行的操作。
假设Blue Team没有查看实际的python脚本,而是查看python脚本所做的调用,那么只有在条件a为真时才可以导入模块。这将降低检测阈值。
但是,我遇到了python文档,建议将所有导入保留在脚本的开头。有了这个,我们将无法实现IF语句来选择是否应该导入某些东西。
import sys
# ...other functions
def check_user():
# check user against target fingerprint
if a is True:
import x
TLDR:我可以使用IF / THEN语句导入模块吗?我可以稍后在python脚本中导入模块吗?
与安全相关的问题:在不分析实际代码的情况下,用于分析python脚本及其调用/操作的好程序是什么?
您可以在Python中有条件地导入模块。
示例:
def check():
if sys.version_info[0] == 2:
from itertools import izip
else:
izip = zip
a=[1,2,3]
b=[4,5,6]
print(izip)
for c in izip(a,b):
print(c)
这里基于Python版本,izip是有条件导入的
您可以执行以下操作:
import sys
if sys.version_info > (2, 7):
import simplejson as json
else:
import json