All Projects → nsacyber → Bam

nsacyber / Bam

Licence: other
The Binary Analysis Metadata tool gathers information about Windows binaries to aid in their analysis. #nsacyber

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Bam

instrumentation
Assorted pintools
Stars: ✭ 24 (-74.19%)
Mutual labels:  binary, binary-analysis
Gtirb
Intermediate Representation for Binary analysis and transformation
Stars: ✭ 190 (+104.3%)
Mutual labels:  binary, binary-analysis
Replica
Ghidra Analysis Enhancer 🐉
Stars: ✭ 194 (+108.6%)
Mutual labels:  binary, binary-analysis
B2r2
B2R2 is a collection of useful algorithms, functions, and tools for binary analysis.
Stars: ✭ 262 (+181.72%)
Mutual labels:  binary, binary-analysis
Zelos
A comprehensive binary emulation and instrumentation platform.
Stars: ✭ 298 (+220.43%)
Mutual labels:  binary, binary-analysis
Ddisasm
A fast and accurate disassembler
Stars: ✭ 325 (+249.46%)
Mutual labels:  binary, binary-analysis
E9patch
A powerful static binary rewriting tool
Stars: ✭ 317 (+240.86%)
Mutual labels:  binary, binary-analysis
Binee
Binee: binary emulation environment
Stars: ✭ 408 (+338.71%)
Mutual labels:  binary, binary-analysis
Symfony Phpstorm Meta
PhpStorm meta data for expected arguments completion.
Stars: ✭ 84 (-9.68%)
Mutual labels:  metadata
Dataportals.org
Open Data Portals and Sites around the world
Stars: ✭ 87 (-6.45%)
Mutual labels:  metadata
Evolutility Server Node
Model-driven REST or GraphQL backend for CRUD and more, written in Javascript, using Node.js, Express, and PostgreSQL.
Stars: ✭ 84 (-9.68%)
Mutual labels:  metadata
Clr Bundles
Bundle definitions for Clear Linux OS
Stars: ✭ 85 (-8.6%)
Mutual labels:  metadata
Barf Project
BARF : A multiplatform open source Binary Analysis and Reverse engineering Framework
Stars: ✭ 1,280 (+1276.34%)
Mutual labels:  binary-analysis
Metascraper
Scrape data from websites using Open Graph, HTML metadata & fallbacks.
Stars: ✭ 1,254 (+1248.39%)
Mutual labels:  metadata
Habanero
client for Crossref search API
Stars: ✭ 90 (-3.23%)
Mutual labels:  metadata
Docker Apache Atlas
This Apache Atlas is built from the latest release source tarball and patched to be run in a Docker container.
Stars: ✭ 83 (-10.75%)
Mutual labels:  metadata
Bitmatch
A Rust crate that allows you to match, bind, and pack the individual bits of integers.
Stars: ✭ 82 (-11.83%)
Mutual labels:  binary
Social Links
Simple library to count shares and generate share buttons
Stars: ✭ 91 (-2.15%)
Mutual labels:  metadata
Ck Tensorflow
Collective Knowledge components for TensorFlow (code, data sets, models, packages, workflows):
Stars: ✭ 90 (-3.23%)
Mutual labels:  metadata
Grobid
A machine learning software for extracting information from scholarly documents
Stars: ✭ 1,275 (+1270.97%)
Mutual labels:  metadata

BAM - Binary Analysis Metadata

"You just throw it in and BAM! It works!"

The Binary Analysis Metadata (BAM!) tool collects and analyzes Windows updates, binaries, and symbols.

Design

Goal

Develop a tool that can scan Windows updates, store information about those updates, obtain symbols for binary files, and analyze said information

Requirements

  • Must have the least amount of dependencies (portability)
  • Must be able to run anywhere where python 3.7+ is installed
  • Must be efficient (threads over process and/or I/O or memory bound)
  • Must be compatible to new python versions
  • Backed by SQLite for quick lookup of patches and symbols
  • Microsoft's symsrv.dll and symsrv.yes MUST be placed in \Windows\System32\ by an administrator due to symchk.exe's functionality
  • Must enable the "Enable Win32 long paths" group policy under "Administrative Templates\System\FileSystem" beginning with Windows 10 1607 (Anniversary Update)
  • Must add location of Microsoft Debugging tools to PATH environment variable

Runtime Requirements

Microsoft's Symbol Connection and Download EULA

symchk.exe will prompt the user to accept an Microsoft EULA when a symbol is going to be download from Microsoft's server. The symsrv.yes file (i.e., the YES file) is part of the Windows SDK installation in \Debugger<arch>\ and is used to silently accept the Microsoft EULA to download the symbols from their servers. You can remove this file to individually accept/denied the EULA.

Group Policy

Enable the Enable Win32 long paths policy under Administrative Templates > System > FileSystem. Due to the nature of how Windows updates are structured and named, they are given very long names when decompressed. BAM! will not run unless this group policy is enabled. Additionally, to avoid other long name errors during extraction and until the issue is resolved in the program, extract update contents to a single character named directory.

Hardware

  • 32GB of RAM
  • 10TB of disk space for extracted contents and downloaded symbols
  • 5TB of disk space for WSUS to download updates only (i.e., not OS/feature/service pack upgrades)
  • 10 virtual processors

Dependencies

Usage

Display help

py.exe main.py

Create or use current DB, extract files at path to updates, download symbols from Microsoft's symbol server (initially or continuous use) and store them at path to where syms are to be stored:

py.exe main.py -x -p "path to updates" -pd "path to extract files to" -sp "path to where syms are to be stored"

Note: The script will always attempt to re-download symbols for PE files previously not downloaded.

Create or use current DB, extract files and download symbols from a specific symbol server (initially or continuous use):

py.exe main.py -x -p "path to updates" -pd "path to extract files to" -ss "symstore location" -sp "path to where syms are to be stored"

Note: The script will always attempt to re-download symbols for PE files previously not downloaded.

Create or use current DB, extract files and verify symbols using local symstore (initially or continuous use):

py.exe main.py -x -p "path to updates* -pd "path to extract files to" -sl -ss "directory path to symstore location or symbol location" -sp "path to where syms are to be stored"

Create or update current DB (requires update file, extracted files, downloaded symbols):

py.exe main.py -c -p "path to updates" -pd "path to extract files too" -sl -ss "directory path to symstore location or symbol location" -sp "path to where syms are to be stored"
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].