我可以使用IF语句导入模块吗?以后可以在python脚本中导入吗?

时间:2018-09-15 18:56:57

标签: python security module analysis

从下半月/红队的进攻角度来看

好的,可以说我们正在尽最大努力避免检测或避免Blue Team意识到脚本导入了模块“ x ”。

我们在代码中实现了故障保险,以检查条件 a 是否为真。如果这不是我们的目标,我们希望脚本以一种不会引起注意的方式运行。

根据我的理解,Blue Team可以使用过程分析(是正确的词吗?)来找出python脚本在运行时的实际作用。

假设Blue Team不在查看实际的python脚本,而是查看python脚本进行的调用,则仅在条件 a 为true时才可以导入模块。然后,这将降低检测阈值。

但是,我遇到了python文档,该文档建议将所有导入都保留在脚本的开头。这样,我们将无法实现IF语句来选择是否应导入某些内容。

伪代码(Python)

import sys
# ...other functions
def check_user():
    # check user against target fingerprint
    if a is True:
        import x

TLDR :我可以使用IF / THEN语句导入模块吗?以后可以在python脚本中导入模块吗?

与安全性相关的问题:什么是可以用来分析python脚本及其调用/操作而不分析实际代码的好的程序?

2 个答案:

答案 0 :(得分:0)

您可以在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被有条件导入

答案 1 :(得分:0)

您可以执行以下操作:

import sys
if sys.version_info > (2, 7):
    import simplejson as json
else:
    import json