Giter Site home page Giter Site logo

sickle's Introduction

Sickle

Sickle is a payload development tool originally created to aid me in crafting shellcode, however it can be used in crafting payloads for other exploit types as well (non-binary). Although the current modules are mostly aimed towards assembly this tool is not limited to shellcode.

Sickle can aid in the following:

  • Identifying instructions resulting in bad characters when crafting shellcode
  • Formatting output in various languages (python, perl, javascript, etc).
  • Accepting bytecode via STDIN and formatting it.
  • Executing shellcode in both Windows and Linux environments.
  • Diffing for two binaries (hexdump, raw, asm, byte)
  • Dissembling shellcode into assembly language (ARM, x86, etc).
  • Shellcode extraction from raw bins (nasm sc.asm -o sc)

Quick failure check

A task I found myself doing repetitively was compiling assembler source code then extracting the shellcode, placing it into a wrapper, and testing it. If it was a bad run, the process would be repeated until successful. Sickle takes care of placing the shellcode into a wrapper for quick testing. (Works on Windows and Unix systems):

alt text

Recreating shellcode

Sometimes you find a piece of shellcode that's fluent in its execution and you want to recreate it yourself to understand its underlying mechanisms. Sickle can help you compare the original shellcode to your "recreated" version.

alt text

If you're not crafting shellcode and just need 2 binfiles to be the same this feature can also help verifying files are the same byte by byte (multiple modes).

alt text

Disassembly

Sickle can also take a binary file and convert the extracted opcodes (shellcode) to machine instructions. Keep in mind this works with raw opcodes (-r) and STDIN (-r -) as well. In the following example I am converting a reverse shell designed by Stephen Fewer to assembly.

alt text

Bad character identification

asciicast

Module Based Design

This tool was originally designed as a one big script, however recently when a change needed to be done to the script I had to relearn my own code... In order to avoid this in the future I've decided to keep all modules under the "modules" directory (default module: format). If you prefer the old design, I have kept a copy under the Documentation directory.

~# sickle.py -l

  Name                Description
  ----                -----------
  diff                Compare two binaries / shellcode(s). Supports hexdump, byte, raw, and asm modes
  run                 Execute shellcode on either windows or unix
  format              Format bytecode into desired format / language
  badchar             Generate bad characters in respective format
  disassemble         Disassemble bytecode in respective architecture
  pinpoint            Pinpoint where in shellcode bad characters occur

~# sickle -i -m diff
Options for diff

Options:

  Name        Required    Description
  ----        --------    -----------
  BINFILE     yes         Additional binary file needed to perform diff
  MODE        yes         hexdump, byte, raw, or asm

Description:

  Compare two binaries / shellcode(s). Supports hexdump, byte, raw, and asm modes

sickle's People

Contributors

epi052 avatar fuzzlove avatar herrcykel avatar wetw0rk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.