【问题标题】:Can I use IF statements for importing modules? Is importing later in a python script possible?我可以使用 IF 语句来导入模块吗?以后可以在 python 脚本中导入吗?
【发布时间】:2018-09-15 18:56:56
【问题描述】:

从渗透测试者/红队攻击的角度来看

好吧,假设我们正在尽最大努力避免检测或避免蓝队意识到脚本导入了模块“x”。

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

据我了解,蓝队可以使用流程分析(这个词对吗?)来找出python脚本在运行时实际做了什么。

假设蓝队没有查看实际的 python 脚本,而是查看 python 脚本进行的调用,是否可以仅在条件 a 为真时导入模块。这会降低检测阈值。

但是,我遇到了建议将所有导入保留在脚本开头的 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 脚本及其调用/操作?

【问题讨论】:

    标签: python security module analysis


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以执行以下操作:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        • 2016-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-26
        • 2018-04-17
        相关资源
        最近更新 更多