From a83e849ecea8c23a25bebe8986c8f76f7ca00f8c Mon Sep 17 00:00:00 2001 From: netredo <6544400+netredo@users.noreply.github.com> Date: Tue, 27 Aug 2019 14:31:07 +0200 Subject: [PATCH] A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools and more. --- CONTRIBUTING.md | 28 +- LICENSE.md | 1 - README.md | 2506 +++++++++++++++-- .../the-book-of-secret-knowledge-preview.png | Bin 0 -> 39889 bytes 4 files changed, 2211 insertions(+), 324 deletions(-) create mode 100644 static/img/the-book-of-secret-knowledge-preview.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 601689a..9f4a5ac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,37 +1,23 @@ # Contributing -If you would like to support this project, you have an interesting idea how to improve the operation of this tool or if you found some errors - do fork this add your fixes and add pull-request of your branch to the **testing branch**. + > _A real community, however, exists only when its members interact in a meaningful way that deepens their understanding of each other and leads to learning._ -## Bash style - -I would like you to stick to certain standards of writing in bash. I realize that it is not easy and time-consuming if you have certain habits. I do not expect 100% compliance and adherence to good practices, however, I would like you to try to use certain principles. - -The following should help: - -- [http://wiki.bash-hackers.org/](http://wiki.bash-hackers.org/) -- [https://google.github.io/styleguide/shell.xml](https://google.github.io/styleguide/shell.xml) -- [https://github.com/progrium/bashstyle](https://github.com/progrium/bashstyle) - - -- [http://kvz.io/blog/2013/11/21/bash-best-practices/](http://kvz.io/blog/2013/11/21/bash-best-practices/) - -## Shellcheck - -One of the requirements before approving your changes is to check them with the **shellcheck** utility. If the returned errors are not critical (eg. [SC2154](https://github.com/koalaman/shellcheck/wiki/SC2154)) you can use the `shellcheck disable=SC2154` design. +If you would like to support this project, have an interesting idea how to improve the operation of this tool, or if you found some errors - fork this, add your fixes, and add a pull request of your branch to the **master branch**. ## Signature of commit Moving forward all commits to this project must include a "signed-off-by" line indicating the name and email address of the contributor signing off on the change. To enable signatures add the following lines to `.git/hooks/prepare-commit-msg` : -`````` +``` SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/- signed-off-by: \1/p') grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" -`````` +``` ## Pull requests -When creating pull request, please heed the following: +When creating a pull request, please heed the following: -- Base your code on the latest **testing branch** +- Base your code on the latest master branch to avoid manual merges - Code review may ensue in order to help shape your proposal - Explain the problem and your proposed solution +- One-line description - please don't continue the description on new lines diff --git a/LICENSE.md b/LICENSE.md index aa88ca6..5f8b06f 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -673,4 +673,3 @@ library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . - diff --git a/README.md b/README.md index fc86a26..7b8a35e 100644 --- a/README.md +++ b/README.md @@ -1,143 +1,263 @@

- Master + + Master +

-
+

"Knowledge is powerful, be careful how you use it!"

-

A collection of awesome lists, manuals, blogs, hacks, one-liners and tools for Awesome Ninja Admins.

+

A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools and more.


- - Branch - - - Awesome + + Pull Requests - License + License

Created by trimstray and - - contributors - + contributors

*** -## Who is Ninja Admins? +## :notebook_with_decorative_cover:  What is it? + +This list is a collection of various materials and tools that I use every day in my work. It contains a lot of useful information gathered in one piece. + +## :restroom:  For whom? + +This collection is suitable for everyone. It is aimed towards System and Network administrators, DevOps, Pentesters and Security Researchers. + +## :information_source:  Contributing + +If you find something which doesn't make sense, or something doesn't seem right, please make a pull request and please add valid and well-reasoned explanations about your changes or comments. -- race of pure evil who rule the network through a monarchist feudal system -- they never opened the door for strangers (or anyone at all) -- they know very nasty piece of code like a **[fork bombs](https://en.wikipedia.org/wiki/Fork_bomb)** -- they can make dd is not a **[destroyer of disks](http://www.noah.org/wiki/Dd_-_Destroyer_of_Disks)** -- they know that `#!/usr/bin/env bash` superior to `#!/bin/bash` -- they know that `su -` logs in completely as root -- they miss and cry for **[Slackware](http://www.slackware.com/)** on production -- they love the old admin nix-world +A few simple rules for this project: -## What is this list? +- inviting and clear +- not tiring +- useful -This list is a collection of various materials that I use every day in my work. It contain a lot of useful information gathered in one piece. It is intended for everyone and anyone who is or wants to become a Ninja Admin (and not only). +These below rules may be better: -This is not a final and full version - I update it on an ongoing basis. +- easy to contribute to (Markdown + HTML ...) +- easy to find (simple TOC, maybe it's worth extending them?) -## :ballot_box_with_check: Todo +Url marked **\*** is temporary unavailable. Please don't delete it without confirming that it has permanently expired. + +Before adding a pull request, please see the **[contributing guidelines](CONTRIBUTING.md)**. All **suggestions/PR** are welcome! + +## :gift_heart:  Support + +If this project is useful and important for you or if you really like _the-book-of-secret-knowledge_, you can bring **positive energy** by giving some **good words** or **supporting this project**. Thank you! + +## :ballot_box_with_check:  Todo - [ ] Add useful shell functions - [ ] Add one-liners for collection tools (eg. CLI Tools) -- [ ] Add Ninja Admins T-Shirt stickers -- [ ] Generate Awesome Ninja Admins book (eg. pdf format) -## Ninja Admins Collection +## :anger:  Table of Contents + +Only main chapters: -#### CLI Tools +- **[CLI Tools](#cli-tools-toc)** +- **[GUI Tools](#gui-tools-toc)** +- **[Web Tools](#web-tools-toc)** +- **[Systems/Services](#systemsservices-toc)** +- **[Networks](#networks-toc)** +- **[Containers/Orchestration](#containersorchestration-toc)** +- **[Manuals/Howtos/Tutorials](#manualshowtostutorials-toc)** +- **[Inspiring Lists](#inspiring-lists-toc)** +- **[Blogs/Podcasts/Videos](#blogspodcastsvideos-toc)** +- **[Hacking/Penetration Testing](#hackingpenetration-testing-toc)** +- **[Your daily knowledge and news](#your-daily-knowledge-and-news-toc)** +- **[Other Cheat Sheets](#other-cheat-sheets-toc)** +- **[One-liners](#one-liners-toc)** +- **[Shell functions](#shell-functions-toc)** + +## :trident:  The Book of Secret Knowledge (Chapters) + +#### CLI Tools  [[TOC]](#anger-table-of-contents) ##### :black_small_square: Shells

-  :small_orange_diamond: Oh My ZSH! - the best framework for managing your Zsh configuration.
-  :small_orange_diamond: bash-it - framework for using, developing and maintaining shell scripts and custom commands for your daily work.
+  :small_orange_diamond: GNU Bash - is an sh-compatible shell that incorporates useful features from the Korn shell and C shell.
+  :small_orange_diamond: Zsh - is a shell designed for interactive use, although it is also a powerful scripting language.
+  :small_orange_diamond: bash-it - is a framework for using, developing and maintaining shell scripts and custom commands.
+  :small_orange_diamond: Oh My ZSH! - is the best framework for managing your Zsh configuration.
  :small_orange_diamond: Oh My Fish - the Fishshell framework.

##### :black_small_square: Managers

-  :small_orange_diamond: Midnight Commander - visual file manager, licensed under GNU General Public License.
-  :small_orange_diamond: screen - full-screen window manager that multiplexes a physical terminal.
-  :small_orange_diamond: tmux - terminal multiplexer, lets you switch easily between several programs in one terminal.
+  :small_orange_diamond: Midnight Commander - is a visual file manager, licensed under GNU General Public License.
+  :small_orange_diamond: ranger - is a VIM-inspired filemanager for the console.
+  :small_orange_diamond: nnn - is a tiny, lightning fast, feature-packed file manager.
+  :small_orange_diamond: screen - is a full-screen window manager that multiplexes a physical terminal.
+  :small_orange_diamond: tmux - is a terminal multiplexer, lets you switch easily between several programs in one terminal.
+  :small_orange_diamond: tmux-cssh - is a tool to set comfortable and easy to use functionality, clustering and synchronizing tmux-sessions.
+

+ +##### :black_small_square: Text editors + +

+  :small_orange_diamond: vi - is one of the most common text editors on Unix.
+  :small_orange_diamond: vim - is a highly configurable text editor.
+  :small_orange_diamond: emacs - is an extensible, customizable, free/libre text editor - and more.
+

+ +##### :black_small_square: Files and directories + +

+  :small_orange_diamond: fd - is a simple, fast and user-friendly alternative to find.

##### :black_small_square: Network

-  :small_orange_diamond: Curl - command line tool and library -for transferring data with URLs.
-  :small_orange_diamond: HTTPie - a user-friendly HTTP client.
-  :small_orange_diamond: wuzz - interactive cli tool for HTTP inspection.
-  :small_orange_diamond: httpstat - visualizes curl statistics in a way of beauty and clarity.
-  :small_orange_diamond: gnutls-cli - client program to set up a TLS connection to some other computer.
-  :small_orange_diamond: nmap - free and open source (license) utility for network discovery and security auditing.
-  :small_orange_diamond: hping - command-line oriented TCP/IP packet assembler/analyzer.
-  :small_orange_diamond: mtr - functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool.
-  :small_orange_diamond: masscan - the fastest Internet port scanner, spews SYN packets asynchronously.
-  :small_orange_diamond: netcat - networking utility which reads and writes data across network connections, using the TCP/IP protocol.
-  :small_orange_diamond: tcpdump - powerful command-line packet analyzer.
-  :small_orange_diamond: tshark - dump and analyze network traffic (wireshark cli).
-  :small_orange_diamond: fierce - a DNS reconnaissance tool for locating non-contiguous IP space.
-  :small_orange_diamond: sublist3r - fast subdomains enumeration tool for penetration testers.
-  :small_orange_diamond: amass - tool obtains subdomain names by scraping data sources, crawling web archives and more.
+  :small_orange_diamond: PuTTY - is an SSH and telnet client, developed originally by Simon Tatham.
+  :small_orange_diamond: nmap - is a free and open source (license) utility for network discovery and security auditing.
+  :small_orange_diamond: masscan - is the fastest Internet port scanner, spews SYN packets asynchronously.
+  :small_orange_diamond: pbscan - is a faster and more efficient stateless SYN scanner and banner grabber.
+  :small_orange_diamond: hping - is a command-line oriented TCP/IP packet assembler/analyzer.
+  :small_orange_diamond: mtr - is a tool that combines the functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool.
+  :small_orange_diamond: netcat - is a networking utility which reads and writes data across network connections, using the TCP/IP protocol.
+  :small_orange_diamond: tcpdump - is a powerful command-line packet analyzer.
+  :small_orange_diamond: tshark - is a tool that allows us to dump and analyze network traffic (wireshark cli).
+  :small_orange_diamond: Termshark - is a simple terminal user-interface for tshark.
+  :small_orange_diamond: ngrep - is like GNU grep applied to the network layer.
+  :small_orange_diamond: sockdump - dump unix domain socket traffic.
+  :small_orange_diamond: stenographer - is a packet capture solution which aims to quickly spool all packets to disk.
+  :small_orange_diamond: bmon - is a monitoring and debugging tool to capture networking related statistics and prepare them visually.
+  :small_orange_diamond: iptraf-ng - is a console-based network monitoring program for Linux that displays information about IP traffic.
+  :small_orange_diamond: iPerf3 - is a tool for active measurements of the maximum achievable bandwidth on IP networks.
+  :small_orange_diamond: ethr - is a Network Performance Measurement Tool for TCP, UDP & HTTP.
+  :small_orange_diamond: Etherate - is a Linux CLI based Ethernet and MPLS traffic testing tool.
+  :small_orange_diamond: echoip - is a IP address lookup service.
  :small_orange_diamond: Nemesis - packet manipulation CLI tool; craft and inject packets of several protocols.
  :small_orange_diamond: packetfu - a mid-level packet manipulation library for Ruby.
  :small_orange_diamond: Scapy - packet manipulation library; forge, send, decode, capture packets of a wide number of protocols.
-  :small_orange_diamond: bombardier - fast cross-platform HTTP benchmarking tool written in Go.
+  :small_orange_diamond: impacket - is a collection of Python classes for working with network protocols.
+  :small_orange_diamond: ssh-audit - is a tool for SSH server auditing.
+  :small_orange_diamond: aria2 - is a lightweight multi-protocol & multi-source command-line download utility.
+  :small_orange_diamond: iptables-tracer - observe the path of packets through the iptables chains.
+

+ +##### :black_small_square: Network (DNS) + +

+  :small_orange_diamond: fierce - is a DNS reconnaissance tool for locating non-contiguous IP space.
+  :small_orange_diamond: subfinder - is a subdomain discovery tool that discovers valid subdomains for websites.
+  :small_orange_diamond: sublist3r - is a fast subdomains enumeration tool for penetration testers.
+  :small_orange_diamond: amass - is tool that obtains subdomain names by scraping data sources, crawling web archives and more.
+  :small_orange_diamond: namebench - provides personalized DNS server recommendations based on your browsing history.
+  :small_orange_diamond: knock - is a tool to enumerate subdomains on a target domain through a wordlist.
+  :small_orange_diamond: dnscrypt-proxy 2 - a flexible DNS proxy, with support for encrypted DNS protocols.
+  :small_orange_diamond: dnsdbq - API client providing access to passive DNS database systems (pDNS at Farsight Security, CIRCL pDNS).
+

+ +##### :black_small_square: Network (HTTP) + +

+  :small_orange_diamond: Curl - is a command line tool and library for transferring data with URLs.
+  :small_orange_diamond: kurly - is an alternative to the widely popular curl program, written in Golang.
+  :small_orange_diamond: HTTPie - is an user-friendly HTTP client.
+  :small_orange_diamond: wuzz - is an interactive cli tool for HTTP inspection.
+  :small_orange_diamond: htrace.sh - is a simple Swiss Army knife for http/https troubleshooting and profiling.
+  :small_orange_diamond: httpstat - is a tool that visualizes curl statistics in a way of beauty and clarity.
+  :small_orange_diamond: httplab - is an interactive web server.
+  :small_orange_diamond: Lynx - is a text browser for the World Wide Web.
+  :small_orange_diamond: HeadlessBrowsers - a list of (almost) all headless web browsers in existence.
+  :small_orange_diamond: ab - is a single-threaded command line tool for measuring the performance of HTTP web servers.
+  :small_orange_diamond: siege - is an http load testing and benchmarking utility.
+  :small_orange_diamond: wrk - is a modern HTTP benchmarking tool capable of generating significant load.
+  :small_orange_diamond: wrk2 - is a constant throughput, correct latency recording variant of wrk.
+  :small_orange_diamond: bombardier - is a fast cross-platform HTTP benchmarking tool written in Go.
  :small_orange_diamond: gobench - http/https load testing and benchmarking tool.
-  :small_orange_diamond: Nipe - script to make Tor Network your default gateway.
+  :small_orange_diamond: hey - HTTP load generator, ApacheBench (ab) replacement, formerly known as rakyll/boom.
+  :small_orange_diamond: boom - is a script you can use to quickly smoke-test your web app deployment.
+  :small_orange_diamond: SlowHTTPTest - is a tool that simulates some Application Layer Denial of Service attacks by prolonging HTTP.
+  :small_orange_diamond: gobuster - is a free and open source directory/file & DNS busting tool written in Go.

##### :black_small_square: SSL

+  :small_orange_diamond: openssl - is a robust, commercial-grade, and full-featured toolkit for the TLS and SSL protocols.
+  :small_orange_diamond: gnutls-cli - client program to set up a TLS connection to some other computer.
  :small_orange_diamond: sslyze - fast and powerful SSL/TLS server scanning library.
  :small_orange_diamond: sslscan - tests SSL/TLS enabled services to discover supported cipher suites.
  :small_orange_diamond: testssl.sh - testing TLS/SSL encryption anywhere on any port.
+  :small_orange_diamond: cipherscan - a very simple way to find out which SSL ciphersuites are supported by a target.
+  :small_orange_diamond: spiped - is a utility for creating symmetrically encrypted and authenticated pipes between socket addresses.
+  :small_orange_diamond: Certbot - is EFF's tool to obtain certs from Let's Encrypt and (optionally) auto-enable HTTPS on your server.
+  :small_orange_diamond: mkcert - simple zero-config tool to make locally trusted development certificates with any names you'd like.
+  :small_orange_diamond: Sublert - is a security and reconnaissance tool to automatically monitor new subdomains.
+  :small_orange_diamond: mkchain - open source tool to help you build a valid SSL certificate chain.
+

+ +##### :black_small_square: Security + +

+  :small_orange_diamond: SELinux - provides a flexible Mandatory Access Control (MAC) system built into the Linux kernel.
+  :small_orange_diamond: AppArmor - proactively protects the operating system and applications from external or internal threats.
+  :small_orange_diamond: grapheneX - Automated System Hardening Framework.
+  :small_orange_diamond: DevSec Hardening Framework - Security + DevOps: Automatic Server Hardening.

##### :black_small_square: Auditing Tools

-  :small_orange_diamond: lynis - battle-tested security tool for systems running Linux, macOS, or Unix-based operating system.
+  :small_orange_diamond: ossec - actively monitoring all aspects of system activity with file integrity monitoring.
+  :small_orange_diamond: auditd - provides a way to track security-relevant information on your system.
+  :small_orange_diamond: Tiger - is a security tool that can be use both as a security audit and intrusion detection system.
+  :small_orange_diamond: Lynis - battle-tested security tool for systems running Linux, macOS, or Unix-based operating system.
  :small_orange_diamond: LinEnum - scripted Local Linux Enumeration & Privilege Escalation Checks.
+  :small_orange_diamond: Rkhunter - scanner tool for Linux systems that scans backdoors, rootkits and local exploits on your systems.
+  :small_orange_diamond: PE-sieve - is a light-weight tool that helps to detect malware running on the system.

##### :black_small_square: System Diagnostics/Debuggers

  :small_orange_diamond: strace - diagnostic, debugging and instructional userspace utility for Linux.
+  :small_orange_diamond: DTrace - is a performance analysis and troubleshooting tool.
+  :small_orange_diamond: ltrace - is a library call tracer, used to trace calls made by programs to library functions.
+  :small_orange_diamond: perf-tools - performance analysis tools based on Linux perf_events (aka perf) and ftrace.
+  :small_orange_diamond: bpftrace - high-level tracing language for Linux eBPF.
  :small_orange_diamond: sysdig - system exploration and troubleshooting tool with first class support for containers.
+  :small_orange_diamond: Valgrind - is an instrumentation framework for building dynamic analysis tools.
+  :small_orange_diamond: gperftools - high-performance multi-threaded malloc() implementation, plus some performance analysis tools.
  :small_orange_diamond: glances - cross-platform system monitoring tool written in Python.
+  :small_orange_diamond: htop - interactive text-mode process viewer for Unix systems. It aims to be a better 'top'.
+  :small_orange_diamond: atop - ASCII performance monitor. Includes statistics for CPU, memory, disk, swap, network, and processes.
  :small_orange_diamond: lsof - displays in its output information about files that are opened by processes.
  :small_orange_diamond: FlameGraph - stack trace visualizer.
  :small_orange_diamond: lsofgraph - small utility to convert Unix lsof output to a graph showing FIFO and UNIX interprocess communication.
+  :small_orange_diamond: rr - is a lightweight tool for recording, replaying and debugging execution of applications.
+  :small_orange_diamond: Performance Co-Pilot - a system performance analysis toolkit.
+  :small_orange_diamond: hexyl - a command-line hex viewer.

##### :black_small_square: Log Analyzers

+  :small_orange_diamond: angle-grinder - slice and dice log files on the command line.
+  :small_orange_diamond: lnav - log file navigator with search and automatic refresh.
  :small_orange_diamond: GoAccess - real-time web log analyzer and interactive viewer that runs in a terminal.
+  :small_orange_diamond: ngxtop - real-time metrics for nginx server.

##### :black_small_square: Databases @@ -148,50 +268,152 @@ for transferring data with URLs.
  :small_orange_diamond: mycli - terminal client for MySQL with autocompletion and syntax highlighting.

-##### :black_small_square: Pentesting +##### :black_small_square: TOR

-  :small_orange_diamond: Metasploit - tool and framework for pentesting system, web and many more, contains a lot a ready to use exploit.
-  :small_orange_diamond: Burp Suite - tool for testing Web application security, intercepting proxy to replay, inject, scan and fuzz HTTP requests.
-  :small_orange_diamond: OWASP Zed Attack Proxy - intercepting proxy to replay, inject, scan and fuzz HTTP requests.
-  :small_orange_diamond: Nikto2 - web server scanner which performs comprehensive tests against web servers for multiple items.
-  :small_orange_diamond: sqlmap - tool that automates the process of detecting and exploiting SQL injection flaws.
+  :small_orange_diamond: Nipe - script to make Tor Network your default gateway.
+  :small_orange_diamond: multitor - a tool that lets you create multiple TOR instances with a load-balancing.

-#### Web Tools +##### :black_small_square: Other -##### :black_small_square: SSL +

+  :small_orange_diamond: incron - is an inode-based filesystem notification technology.
+  :small_orange_diamond: GRV - is a terminal based interface for viewing Git repositories.
+  :small_orange_diamond: Tig - text-mode interface for Git.
+  :small_orange_diamond: tldr - simplified and community-driven man pages.
+  :small_orange_diamond: archiver - easily create and extract .zip, .tar, .tar.gz, .tar.bz2, .tar.xz, .tar.lz4, .tar.sz, and .rar.
+  :small_orange_diamond: commander.js - minimal CLI creator in JavaScript.
+  :small_orange_diamond: gron - make JSON greppable!
+

+ +#### GUI Tools  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: Terminal emulators + +

+  :small_orange_diamond: Guake - is a dropdown terminal made for the GNOME desktop environment.
+  :small_orange_diamond: Terminator - is based on GNOME Terminal, useful features for sysadmins and other users.
+  :small_orange_diamond: Kitty - is a GPU based terminal emulator that supports smooth scrolling and images.
+

+ +##### :black_small_square: Network + +

+  :small_orange_diamond: Wireshark - is the world’s foremost and widely-used network protocol analyzer.
+  :small_orange_diamond: Ettercap - is a comprehensive network monitor tool.
+  :small_orange_diamond: EtherApe - is a graphical network monitoring solution.
+  :small_orange_diamond: JMeter™ - open source software to load test functional behavior and measure performance.
+  :small_orange_diamond: locust - scalable user load testing tool written in Python.
+

+ +##### :black_small_square: Browsers + +

+  :small_orange_diamond: TOR Browser - protect your privacy and defend yourself against network surveillance and traffic analysis.
+

+ +##### :black_small_square: Password Managers + +

+  :small_orange_diamond: KeePassXC - store your passwords safely and auto-type them into your everyday websites and apps.
+  :small_orange_diamond: Enpass - password manager and secure wallet.
+

+ +##### :black_small_square: Messengers/IRC Clients + +

+  :small_orange_diamond: HexChat - is an IRC client based on XChat.
+  :small_orange_diamond: Pidgin - is an easy to use and free chat client used by millions.
+

+ +##### :black_small_square: Messengers (end-to-end encryption)

-  :small_orange_diamond: SSL Server Test - free online service performs a deep analysis of the configuration of any SSL web server.
-  :small_orange_diamond: SSL Server Test (DEV) - free online service performs a deep analysis of the configuration of any SSL web server.
-  :small_orange_diamond: ImmuniWeb® SSLScan - test SSL/TLS (PCI DSS, HIPAA and NIST).
+  :small_orange_diamond: Signal - is an encrypted communications app.
+  :small_orange_diamond: Wire - secure messaging, file sharing, voice calls and video conferences. All protected with end-to-end encryption.
+  :small_orange_diamond: TorChat - decentralized anonymous instant messenger on top of Tor Hidden Services.
+

+ +##### :black_small_square: Text editors + +

+  :small_orange_diamond: Sublime Text - is a lightweight, cross-platform code editor known for its speed, ease of use.
+  :small_orange_diamond: Visual Studio Code - an open-source and free source code editor developed by Microsoft.
+  :small_orange_diamond: Atom - a hackable text editor for the 21st Century.
+

+ +#### Web Tools  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: Browsers + +

+  :small_orange_diamond: SSL/TLS Capabilities of Your Browser - test your browser's SSL implementation.
+  :small_orange_diamond: Can I use - provides up-to-date browser support tables for support of front-end web technologies.
+  :small_orange_diamond: Panopticlick 3.0 - is your browser safe against tracking?
+  :small_orange_diamond: Privacy Analyzer - see what data is exposed from your browser.
+  :small_orange_diamond: Web Browser Security - it's all about Web Browser fingerprinting.
+  :small_orange_diamond: How's My SSL? - help a web server developer learn what real world TLS clients were capable of.
+  :small_orange_diamond: sslClientInfo - client test (incl TLSv1.3 information).
+

+ +##### :black_small_square: SSL/Security + +

+  :small_orange_diamond: SSLLabs Server Test - free online service performs a deep analysis of the configuration of any SSL web server.
+  :small_orange_diamond: SSLLabs Server Test (DEV) - free online service performs a deep analysis of the configuration of any SSL web server.
+  :small_orange_diamond: ImmuniWeb® SSLScan - test SSL/TLS (PCI DSS, HIPAA and NIST).
+  :small_orange_diamond: COMODO SSL Analyzer - ssl analyzer and ssl certificate checker.*
+  :small_orange_diamond: SSL Check - scan your website for non-secure content.
+  :small_orange_diamond: CryptCheck - test your TLS server configuration (e.g. ciphers).
  :small_orange_diamond: urlscan.io - service to scan and analyse websites.
  :small_orange_diamond: Report URI - monitoring security policies like CSP and HPKP.
  :small_orange_diamond: CSP Evaluator - allows developers and security experts to check if a Content Security Policy.
  :small_orange_diamond: Useless CSP - public list about CSP in some big players (might make them care a bit more).
  :small_orange_diamond: Why No HTTPS? - list of the world's top 100 websites by Alexa rank not automatically redirecting insecure requests.
  :small_orange_diamond: cipherli.st - strong ciphers for Apache, Nginx, Lighttpd and more.
+  :small_orange_diamond: dhtool - public Diffie-Hellman parameter service/tool.
  :small_orange_diamond: badssl.com - memorable site for testing clients against bad SSL configs.
  :small_orange_diamond: tlsfun.de - registered for various tests regarding the TLS/SSL protocol.
+  :small_orange_diamond: CAA Record Helper - generate a CAA policy.
  :small_orange_diamond: Common CA Database - repository of information about CAs, and their root and intermediate certificates.
  :small_orange_diamond: CERTSTREAM - real-time certificate transparency log update stream.
+  :small_orange_diamond: crt.sh - discovers certificates by continually monitoring all of the publicly known CT.
+  :small_orange_diamond: Hardenize - deploy the security standards.
+  :small_orange_diamond: Cipher suite compatibility - test TLS cipher suite compatibility.
+  :small_orange_diamond: urlvoid - this service helps you detect potentially malicious websites.
+  :small_orange_diamond: security.txt - a proposed standard (generator) which allows websites to define security policies.

-##### :black_small_square: HTTP Headers +##### :black_small_square: HTTP Headers & Web Linters

  :small_orange_diamond: Security Headers - analyse the HTTP response headers (with rating system to the results).
  :small_orange_diamond: Observatory by Mozilla - set of tools to analyze your website.
-  :small_orange_diamond: Enable CORS - enable cross-origin resource sharing.
+  :small_orange_diamond: webhint - is a linting tool that will help you with your site's accessibility, speed, security and more.

##### :black_small_square: DNS

  :small_orange_diamond: ViewDNS - one source for free DNS related tools and information.
-  :small_orange_diamond: DNSlytics - online investigation tool.
+  :small_orange_diamond: DNSLookup - is an advanced DNS lookup tool.
+  :small_orange_diamond: DNSlytics - online DNS investigation tool.
  :small_orange_diamond: DNS Spy - monitor, validate and verify your DNS configurations.
+  :small_orange_diamond: Zonemaster - helps you to control how your DNS works.
+  :small_orange_diamond: Leaf DNS - comprehensive DNS tester.
+  :small_orange_diamond: Find subdomains online - find subdomains for security assessment penetration test.
+  :small_orange_diamond: DNSdumpster - dns recon & research, find & lookup dns records.
+  :small_orange_diamond: DNS Table online - search for DNS records by domain, IP, CIDR, ISP.
+  :small_orange_diamond: intoDNS - DNS and mail server health checker.
+  :small_orange_diamond: DNS Bajaj - check the delegation of your domain.
+  :small_orange_diamond: BuddyDNS Delegation LAB - check, trace and visualize delegation of your domain.
+  :small_orange_diamond: dnssec-debugger - DS or DNSKEY records validator.
+  :small_orange_diamond: PTRarchive.com - this site is responsible for the safekeeping of historical reverse DNS records.
+  :small_orange_diamond: xip.io - wildcard DNS for everyone.
+  :small_orange_diamond: dnslookup (ceipam) - one of the best DNS propagation checker (and not only).
+  :small_orange_diamond: What's My DNS - DNS propagation checking tool.
+

##### :black_small_square: Mail @@ -200,37 +422,51 @@ for transferring data with URLs.
  :small_orange_diamond: MX Toolbox - all of your MX record, DNS, blacklist and SMTP diagnostics in one integrated tool.
  :small_orange_diamond: blacklistalert - checks to see if your domain is on a Real Time Spam Blacklist.
  :small_orange_diamond: MultiRBL - complete IP check for sending Mailservers.
+  :small_orange_diamond: DKIM SPF & Spam Assassin Validator - checks mail authentication and scores messages with Spam Assassin.

-##### :black_small_square: Mass scanners (search engines) +##### :black_small_square: Encoders/Decoders and Regex testing

-  :small_orange_diamond: Censys - platform that helps information security practitioners discover, monitor, and analyze devices.
-  :small_orange_diamond: Shodan - the world's first search engine for Internet-connected devices.
-  :small_orange_diamond: Shodan 2000 - if you use Shodan for everyday work, be sure to see it - looks for randomly generated data from Shodan.
-  :small_orange_diamond: GreyNoise - mass scanner (such as Shodan and Censys).
-  :small_orange_diamond: Buckets by Grayhatwarfar - database with public search for Open Amazon S3 Buckets and their contents.
+  :small_orange_diamond: URL Encode/Decode - tool from above to either encode or decode a string of text.
+  :small_orange_diamond: Uncoder - the online translator for search queries on log data.
+  :small_orange_diamond: Regex101 - online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript.
+  :small_orange_diamond: RegExr - online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
+  :small_orange_diamond: RegEx Testing - online regex testing tool.
+  :small_orange_diamond: RegEx Pal - online regex testing tool + other tools.
+  :small_orange_diamond: The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis.

##### :black_small_square: Net-tools

-  :small_orange_diamond: Netcraft - detailed report about the site, helping you to make informed choices about their integrity.
+  :small_orange_diamond: Netcraft - detailed report about the site, helping you to make informed choices about their integrity.*
  :small_orange_diamond: RIPE NCC - not-for-profit membership association, a Regional Internet Registry and the secretariat for the RIPE.
+  :small_orange_diamond: Robtex - uses various sources to gather public information about IP numbers, domain names, host names, routes etc.
  :small_orange_diamond: Security Trails - APIs for Security Companies, Researchers and Teams.
  :small_orange_diamond: Online Curl - curl test, analyze HTTP Response Headers.
-  :small_orange_diamond: Ping.eu - online Ping, Traceroute, DNS lookup, WHOIS and others.
+  :small_orange_diamond: Ping.eu - online Ping, Traceroute, DNS lookup, WHOIS and others.
  :small_orange_diamond: Network-Tools - network tools for webmasters, IT technicians & geeks.
-  :small_orange_diamond: URL Encode/Decode - tool from above to either encode or decode a string of text.
-  :small_orange_diamond: RegExr - online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
-  :small_orange_diamond: Hardenize - deploy the security standards.
+  :small_orange_diamond: Riseup - provides online communication tools for people and groups working on liberatory social change.
+  :small_orange_diamond: VirusTotal - analyze suspicious files and URLs to detect types of malware.
+

+ +##### :black_small_square: Privacy + +

+  :small_orange_diamond: privacytools.io - provides knowledge and tools to protect your privacy against global mass surveillance.
+  :small_orange_diamond: DNS Privacy Test Servers - DNS privacy recursive servers list (with a 'no logging' policy).

##### :black_small_square: Code parsers/playgrounds

  :small_orange_diamond: ShellCheck - finds bugs in your shell scripts.
+  :small_orange_diamond: explainshell - get interactive help texts for shell commands.
  :small_orange_diamond: jsbin - live pastebin for HTML, CSS & JavaScript and more.
+  :small_orange_diamond: CodeSandbox - online code editor for web application development. Supports React, Vue, Angular, CxJS, Dojo, etc.
+  :small_orange_diamond: PHP Sandbox - test your PHP code with this code tester.
+  :small_orange_diamond: Repl.it - an instant IDE to learn, build, collaborate, and host all in one place.

##### :black_small_square: Performance @@ -239,244 +475,894 @@ for transferring data with URLs.
  :small_orange_diamond: GTmetrix - analyze your site’s speed and make it faster.
  :small_orange_diamond: Sucuri loadtimetester - test here the performance of any of your sites from across the globe.
+  :small_orange_diamond: Pingdom Tools - analyze your site’s speed around the world.
+  :small_orange_diamond: PingMe.io - run website latency tests across multiple geographic regions.
+  :small_orange_diamond: PageSpeed Insights - analyze your site’s speed and make it faster.
+  :small_orange_diamond: web.dev - helps developers like you learn and apply the web's modern capabilities to your own sites and apps.
+

+ +##### :black_small_square: Mass scanners (search engines) + +

+  :small_orange_diamond: Censys - platform that helps information security practitioners discover, monitor, and analyze devices.
+  :small_orange_diamond: Shodan - the world's first search engine for Internet-connected devices.
+  :small_orange_diamond: Shodan 2000 - do you use Shodan for everyday work? This tool looks for randomly generated data from Shodan.
+  :small_orange_diamond: GreyNoise - mass scanner such as Shodan and Censys.
+  :small_orange_diamond: ZoomEye - search engine for cyberspace that lets the user find specific network components.
+  :small_orange_diamond: netograph - tools to monitor and understand deep structure of the web.
+  :small_orange_diamond: FOFA - is a cyberspace search engine.
+  :small_orange_diamond: onyphe - is a search engine for open-source and cyber threat intelligence data collected.
+  :small_orange_diamond: IntelligenceX - is a search engine and data archive.
+  :small_orange_diamond: binaryedge - it scan the entire internet space and create real-time threat intelligence streams and reports.
+  :small_orange_diamond: wigle - is a submission-based catalog of wireless networks. All the networks. Found by Everyone.
+  :small_orange_diamond: PublicWWW - find any alphanumeric snippet, signature or keyword in the web pages HTML, JS and CSS code.
+  :small_orange_diamond: IntelTechniques - this repository contains hundreds of online search utilities.
+  :small_orange_diamond: Hackle - search engine for hackers and security professionals.*
+  :small_orange_diamond: hunter - lets you find email addresses in seconds and connect with the people that matter for your business.
+  :small_orange_diamond: GhostProject? - search by full email address or username.
+  :small_orange_diamond: databreaches - was my email affected by data breach?
+  :small_orange_diamond: Buckets by Grayhatwarfar - database with public search for Open Amazon S3 Buckets and their contents.
+  :small_orange_diamond: Vigilante.pw - the breached database directory.
+  :small_orange_diamond: builtwith - find out what websites are built with.
+  :small_orange_diamond: Mamont's open FTP Index - if a target has an open FTP site with accessible content it will be listed here.
+  :small_orange_diamond: OSINT Framework - focused on gathering information from free tools or resources.
+  :small_orange_diamond: maltiverse - is a service oriented to cybersecurity analysts for the advanced analysis of indicators of compromise.
+  :small_orange_diamond: Leaked Source - is a collaboration of data found online in the form of a lookup.
+  :small_orange_diamond: We Leak Info - to help everyday individuals secure their online life, avoiding getting hacked.
+  :small_orange_diamond: pipl - is the place to find the person behind the email address, social username or phone number.
+  :small_orange_diamond: abuse.ch - is operated by a random swiss guy fighting malware for non-profit.
+  :small_orange_diamond: malc0de - malware search engine.
+  :small_orange_diamond: Cybercrime Tracker - monitors and tracks various malware families that are used to perpetrate cyber crimes.
+  :small_orange_diamond: NerdyData - search source code across 65 million websites.
+  :small_orange_diamond: searchcode - helping you find real world examples of functions, API's and libraries.
+  :small_orange_diamond: Insecam - the world biggest directory of online surveillance security cameras.
+  :small_orange_diamond: index-of - contains great stuff like: security, hacking, reverse engineering, cryptography, programming etc.
+

+ +##### :black_small_square: Generators + +

+  :small_orange_diamond: thispersondoesnotexist - generate fake faces in one click - endless possibilities.
+  :small_orange_diamond: Intigriti Redirector - open redirect/SSRF payload generator.

##### :black_small_square: Passwords

-  :small_orange_diamond: Random.org - generate random passwords.
-  :small_orange_diamond: Gotcha? - list of 1.4 billion accounts circulates around the Internet.
+  :small_orange_diamond: Gotcha? - list of 1.4 billion accounts circulates around the Internet.*
  :small_orange_diamond: have i been pwned? - check if you have an account that has been compromised in a data breach.

-##### :black_small_square: CVE +##### :black_small_square: CVE/Exploits databases

  :small_orange_diamond: CVE Mitre - list of publicly known cybersecurity vulnerabilities.
  :small_orange_diamond: CVE Details - CVE security vulnerability advanced database.
+  :small_orange_diamond: Exploit DB - CVE compliant archive of public exploits and corresponding vulnerable software.
+  :small_orange_diamond: 0day.today - exploits market provides you the possibility to buy zero-day exploits and also to sell 0day exploits.
+  :small_orange_diamond: sploitus - the exploit and tools database.
+  :small_orange_diamond: cxsecurity - free vulnerability database.
+  :small_orange_diamond: Vulncode-DB - is a database for vulnerabilities and their corresponding source code if available.
+  :small_orange_diamond: cveapi - free API for CVE data.
+

+ +##### :black_small_square: Mobile apps scanners + +

+  :small_orange_diamond: ImmuniWeb® Mobile App Scanner - test security and privacy of mobile apps (iOS & Android).
+  :small_orange_diamond: Quixxi - free Mobile App Vulnerability Scanner for Android & iOS.
+  :small_orange_diamond: Ostorlab - analyzes mobile application to identify vulnerabilities and potential weaknesses.
+

+ +##### :black_small_square: Private Search Engines + +

+  :small_orange_diamond: Startpage - the world's most private search engine.
+  :small_orange_diamond: searX - a privacy-respecting, hackable metasearch engine.
+  :small_orange_diamond: darksearch - the 1st real Dark Web search engine.
+

+ +##### :black_small_square: Secure WebMail Providers + +

+  :small_orange_diamond: CounterMail - is a secure and easy to use online email service, designed to provide maximum security and privacy.
+  :small_orange_diamond: Mail2Tor - is a Tor Hidden Service that allows anyone to send and receive emails anonymously.
+  :small_orange_diamond: Tutanota - is the world's most secure email service and amazingly easy to use.
+  :small_orange_diamond: Protonmail - is the world's largest secure email service, developed by CERN and MIT scientists.
+  :small_orange_diamond: Startmail - private & encrypted email made easy.
+

+ +##### :black_small_square: Crypto + +

+  :small_orange_diamond: Keybase - it's open source and powered by public-key cryptography.
+

+ +##### :black_small_square: PGP Keyservers + +

+  :small_orange_diamond: SKS OpenPGP Key server - services for the SKS keyservers used by OpenPGP.
+

+ +#### Systems/Services  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: Operating Systems + +

+  :small_orange_diamond: Slackware - the most "Unix-like" Linux distribution.
+  :small_orange_diamond: OpenBSD - multi-platform 4.4BSD-based UNIX-like operating system.
+  :small_orange_diamond: HardenedBSD - HardenedBSD aims to implement innovative exploit mitigation and security solutions.
+  :small_orange_diamond: Kali Linux - Linux distribution used for Penetration Testing, Ethical Hacking and network security assessments.
+  :small_orange_diamond: Parrot Security OS - cyber security GNU/Linux environment.
+  :small_orange_diamond: Backbox Linux - penetration test and security assessment oriented Ubuntu-based Linux distribution.
+  :small_orange_diamond: BlackArch - is an Arch Linux-based penetration testing distribution for penetration testers and security researchers.
+  :small_orange_diamond: Pentoo - is a security-focused livecd based on Gentoo.
+  :small_orange_diamond: Security Onion - Linux distro for intrusion detection, enterprise security monitoring, and log management.
+  :small_orange_diamond: Tails - is a live system that aims to preserve your privacy and anonymity.
+

+ +##### :black_small_square: HTTP(s) Services + +

+  :small_orange_diamond: Varnish Cache - HTTP accelerator designed for content-heavy dynamic web sites.
+  :small_orange_diamond: Nginx - open source web and reverse proxy server that is similar to Apache, but very light weight.
+  :small_orange_diamond: Tengine - a distribution of Nginx with some advanced features.
+  :small_orange_diamond: Caddy Server - is an open source, HTTP/2-enabled web server with HTTPS by default.
+  :small_orange_diamond: HAProxy - the reliable, high performance TCP/HTTP load balancer.
+

+ +##### :black_small_square: DNS Services + +

+  :small_orange_diamond: Unbound - validating, recursive, and caching DNS resolver (with TLS).
+  :small_orange_diamond: Knot Resolver - caching full resolver implementation, including both a resolver library and a daemon.
+  :small_orange_diamond: PowerDNS - is an open source authoritative DNS server, written in C++ and licensed under the GPL.
+

+ +##### :black_small_square: Other Services + +

+  :small_orange_diamond: 3proxy - tiny free proxy server.
+

+ +##### :black_small_square: Security/hardening + +

+  :small_orange_diamond: Emerald Onion - is a 501(c)(3) nonprofit organization and transit internet service provider (ISP) based in Seattle.
+  :small_orange_diamond: pi-hole - the Pi-hole® is a DNS sinkhole that protects your devices from unwanted content.
+  :small_orange_diamond: maltrail - malicious traffic detection system.
+  :small_orange_diamond: security_monkey - monitors AWS, GCP, OpenStack, and GitHub orgs for assets and their changes over time.
+  :small_orange_diamond: firecracker - secure and fast microVMs for serverless computing.

-#### Manuals/Howtos/Tutorials +#### Networks  [[TOC]](#anger-table-of-contents) -##### :black_small_square: Bash +##### :black_small_square: Tools + +

+  :small_orange_diamond: CapAnalysis - web visual tool to analyze large amounts of captured network traffic (PCAP analyzer).
+  :small_orange_diamond: netbox - IP address management (IPAM) and data center infrastructure management (DCIM) tool.
+

+ +##### :black_small_square: Labs + +

+  :small_orange_diamond: NRE Labs - learn automation by doing it. Right now, right here, in your browser.
+

+ +##### :black_small_square: Other + +

+  :small_orange_diamond: LBNL's Network Research Group - home page of the Network Research Group (NRG); tools, talks, papers and more.
+

+ +#### Containers/Orchestration  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: CLI Tools + +

+  :small_orange_diamond: gvisor - container runtime sandbox.
+  :small_orange_diamond: ctop - top-like interface for container metrics.
+  :small_orange_diamond: docker-bench-security - is a script that checks for dozens of common best-practices around deploying Docker.
+

+ +##### :black_small_square: Web Tools + +

+  :small_orange_diamond: Moby - a collaborative project for the container ecosystem to assemble container-based system.
+  :small_orange_diamond: Traefik - open source reverse proxy/load balancer provides easier integration with Docker and Let's encrypt.
+  :small_orange_diamond: kong - The Cloud-Native API Gateway.
+  :small_orange_diamond: rancher - complete container management platform.
+  :small_orange_diamond: portainer - making Docker management easy.
+  :small_orange_diamond: nginx-proxy - automated nginx proxy for Docker containers using docker-gen.
+

+ +##### :black_small_square: Manuals/Tutorials/Best Practices + +

+  :small_orange_diamond: docker-cheat-sheet - a quick reference cheat sheet on Docker.
+  :small_orange_diamond: awesome-docker - a curated list of Docker resources and projects.
+  :small_orange_diamond: docker_practice - learn and understand Docker technologies, with real DevOps practice!
+  :small_orange_diamond: labs + - is a collection of tutorials for learning how to use Docker with various tools.
+  :small_orange_diamond: dockerfiles - various Dockerfiles I use on the desktop and on servers.
+  :small_orange_diamond: kubernetes-the-hard-way - bootstrap Kubernetes the hard way on Google Cloud Platform. No scripts.
+  :small_orange_diamond: kubernetes-the-easy-way - bootstrap Kubernetes the easy way on Google Cloud Platform. No scripts.
+  :small_orange_diamond: k8s-security - kubernetes security notes and best practices.
+

+ +#### Manuals/Howtos/Tutorials  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: Shell/Command line

  :small_orange_diamond: pure-bash-bible - a collection of pure bash alternatives to external processes.
-  :small_orange_diamond: The Bash Hackers Wiki - hold documentation of any kind about GNU Bash.
+  :small_orange_diamond: The Bash Hackers Wiki - hold documentation of any kind about GNU Bash.
+  :small_orange_diamond: Shell & Utilities - describes the commands and utilities offered to application programs by POSIX-conformant systems.
+  :small_orange_diamond: the-art-of-command-line - master the command line, in one page.
+  :small_orange_diamond: Shell Style Guide - a shell style guide for Google-originated open-source projects.
+

+ +##### :black_small_square: Text Editors + +

+  :small_orange_diamond: Vim Cheat Sheet - great multi language vim guide.
+

+ +##### :black_small_square: Python + +

+  :small_orange_diamond: Awesome Python - a curated list of awesome Python frameworks, libraries, software and resources.
+  :small_orange_diamond: python-cheatsheet - comprehensive Python cheatsheet.

-##### :black_small_square: Programming +##### :black_small_square: Sed & Awk & Other

  :small_orange_diamond: F’Awk Yeah! - advanced sed and awk usage (Parsing for Pentesters 3).

-##### :black_small_square: Unix & Network +##### :black_small_square: \*nix & Network

  :small_orange_diamond: nixCraft - linux and unix tutorials for new and seasoned sysadmin.
  :small_orange_diamond: TecMint - the ideal Linux blog for Sysadmins & Geeks.
-  :small_orange_diamond: Omnisecu - Free Networking, System Administration and Security Tutorials.
+  :small_orange_diamond: Omnisecu - free Networking, System Administration and Security tutorials.
+  :small_orange_diamond: linux-cheat - Linux tutorials and cheatsheets. Minimal examples. Mostly user-land CLI utilities.
+  :small_orange_diamond: Unix Toolbox - collection of Unix/Linux/BSD commands and tasks which are useful for IT work or for advanced users.
+  :small_orange_diamond: Linux Guide and Hints - tutorials on system administration in Fedora and CentOS.
+  :small_orange_diamond: strace-little-book - a little book which introduces strace.
+  :small_orange_diamond: http2-explained - a detailed document explaining and documenting HTTP/2.
+  :small_orange_diamond: http3-explained - a document describing the HTTP/3 and QUIC protocols.
+  :small_orange_diamond: Nginx Admin's Handbook - describes how to improve NGINX performance, security and other important things.
+  :small_orange_diamond: openssh guideline - is to help operational teams with the configuration of OpenSSH server and client.
+  :small_orange_diamond: PacketLife.net - a place to record notes while studying for Cisco's CCNP certification.

-##### :black_small_square: Security +##### :black_small_square: Large-scale systems

-  :small_orange_diamond: OWASP - worldwide not-for-profit charitable organization focused on improving the security of software.
-  :small_orange_diamond: OWASP ASVS 3.0.1 - OWASP Application Security Verification Standard Project.
-  :small_orange_diamond: OWASP ASVS 3.0.1 Web App - simple web app that helps developers understand the ASVS requirements.
-  :small_orange_diamond: Offensive Security - true performance-based penetration testing training for over a decade.
-  :small_orange_diamond: Hacking Articles - LRaj Chandel's Security & Hacking Blog.
-  :small_orange_diamond: GTFOBins - list of Unix binaries that can be exploited by an attacker to bypass local security restrictions.
-  :small_orange_diamond: AWS security tools - make your AWS cloud environment more secure.
-  :small_orange_diamond: HTML5 Security Cheatsheet - a collection of HTML5 related XSS attack vectors.
-  :small_orange_diamond: PTES - the penetration testing execution standard.
-  :small_orange_diamond: ctf-tools - some setup scripts for security research tools.
-  :small_orange_diamond: Guifre Ruiz Notes - collection of secuirty, system, network and pentest cheatsheets.
-  :small_orange_diamond: Rawsec's CyberSecurity Inventory - an inventory of tools and resources about CyberSecurity.
+  :small_orange_diamond: The System Design Primer - learn how to design large-scale systems.
+  :small_orange_diamond: Awesome Scalability - best practices in building High Scalability, High Availability, High Stability and more.
+  :small_orange_diamond: Web Architecture 101 - the basic architecture concepts.

-##### :black_small_square: Pentesting +##### :black_small_square: System hardening

-  :small_orange_diamond: Brute XSS - master the art of Cross Site Scripting.
+  :small_orange_diamond: CIS Benchmarks - are secure configuration settings for over 100 technologies, available as a free PDF download.
+  :small_orange_diamond: STIGs - are the configuration standards for DOD IA and IA-enabled devices/systems.
+  :small_orange_diamond: Security Harden CentOS 7 - this walks you through the steps required to security harden CentOS.
+  :small_orange_diamond: CentOS 7 Server Hardening Guide - great guide for hardening CentOS; familiar with OpenSCAP.
+  :small_orange_diamond: The Practical Linux Hardening Guide - provides a high-level overview of hardening GNU/Linux systems.
+

+ +##### :black_small_square: Security & Privacy + +

+  :small_orange_diamond: Hacking Articles - LRaj Chandel's Security & Hacking Blog.
+  :small_orange_diamond: AWS security tools - make your AWS cloud environment more secure.
+  :small_orange_diamond: Rawsec's CyberSecurity Inventory - an inventory of tools and resources about CyberSecurity.
+  :small_orange_diamond: The Illustrated TLS Connection - every byte of a TLS connection explained and reproduced.
+  :small_orange_diamond: SSL Research - SSL and TLS Deployment Best Practices by SSL Labs.
+  :small_orange_diamond: Certificates and PKI - everything you should know about certificates and PKI but are too afraid to ask.
+  :small_orange_diamond: The Art of Subdomain Enumeration - a reference for subdomain enumeration techniques.
+  :small_orange_diamond: Quitting Google - the comprehensive guide to quitting Google.

##### :black_small_square: Web Apps

+  :small_orange_diamond: OWASP - worldwide not-for-profit charitable organization focused on improving the security of software.
+  :small_orange_diamond: OWASP ASVS 3.0.1 - OWASP Application Security Verification Standard Project.
+  :small_orange_diamond: OWASP ASVS 3.0.1 Web App - simple web app that helps developers understand the ASVS requirements.
+  :small_orange_diamond: OWASP ASVS 4.0 - is a list of application security requirements or tests.
+  :small_orange_diamond: OWASP Testing Guide v4 - includes a "best practice" penetration testing framework.
+  :small_orange_diamond: OWASP Dev Guide - this is the development version of the OWASP Developer Guide.
  :small_orange_diamond: Mozilla Web Security - help operational teams with creating secure web applications.
+  :small_orange_diamond: security-bulletins - security bulletins that relate to Netflix Open Source.
+  :small_orange_diamond: Enable CORS - enable cross-origin resource sharing.
+  :small_orange_diamond: Application Security Wiki - is an initiative to provide all application security related resources at one place.
+  :small_orange_diamond: Weird Proxies - reverse proxy related attacks; it is a result of analysis of various reverse proxies, cache proxies, etc.
+  :small_orange_diamond: Webshells - great series about malicious payloads.
+  :small_orange_diamond: Practical Web Cache Poisoning - show you how to compromise websites by using esoteric web features.
+  :small_orange_diamond: Hidden directories and files - as a source of sensitive information about web application.
+  :small_orange_diamond: Explosive blog - great blog about cybersec and pentests.
+  :small_orange_diamond: Security Cookies - this paper will take a close look at cookie security.
+  :small_orange_diamond: APISecurityBestPractices - help you keep secrets (API keys, db credentials, certificates) out of source code.
+

+ +##### :black_small_square: All-in-one + +

+  :small_orange_diamond: LZone Cheat Sheets - all cheat sheets.
+  :small_orange_diamond: Dan’s Cheat Sheets’s - massive cheat sheets documentation.
+  :small_orange_diamond: Rico's cheatsheets - this is a modest collection of cheatsheets.
+  :small_orange_diamond: DevDocs API - combines multiple API documentations in a fast, organized, and searchable interface.

-##### :black_small_square: Secret Knowledge +##### :black_small_square: Other

  :small_orange_diamond: CTF Series : Vulnerable Machines - the steps below could be followed to find vulnerabilities and exploits.
+  :small_orange_diamond: 50M_CTF_Writeup - $50 million CTF from Hackerone - writeup.
+  :small_orange_diamond: ctf-tasks - an archive of low-level CTF challenges developed over the years.
  :small_orange_diamond: How to start RE/malware analysis? - collection of some hints and useful links for the beginners.
-  :small_orange_diamond: LZone Cheat Sheets - all cheat sheets.
-  :small_orange_diamond: Dan’s Cheat Sheets’s - massive cheat sheets documentation.
  :small_orange_diamond: The C10K problem - it's time for web servers to handle ten thousand clients simultaneously, don't you think?
-  :small_orange_diamond: Bank Grade Security - when companies say they have "Bank Grade Security" they imply that it is a good thing.
+  :small_orange_diamond: poor man's profiler - sampling tools like dtrace's don't really provide methods to see what programs are blocking on.
+  :small_orange_diamond: Bank Grade Security - when companies say they have "Bank Grade Security" they imply that it is a good thing.*
+  :small_orange_diamond: HTTPS on Stack Overflow - this is the story of a long journey regarding the implementation of SSL.
  :small_orange_diamond: Julia's Drawings - some drawings about programming and unix world, zines about systems & debugging tools.
-  :small_orange_diamond: DEF CON Media Server - great stuff from DEFCON 26.
+  :small_orange_diamond: Hash collisions - this great repository is focused on hash collisions exploitation.
+  :small_orange_diamond: BGP Meets Cat - after 3072 hours of manipulating BGP, Job Snijders has succeeded in drawing a Nyancat.
+  :small_orange_diamond: What happens when... - you type google.com into your browser and press enter?
+  :small_orange_diamond: how-web-works - based on the 'What happens when...' repository.
+  :small_orange_diamond: HTTPS in the real world - great tutorial explain how HTTPS works in the real world.
+  :small_orange_diamond: Gitlab and NFS bug - how we spent two weeks hunting an NFS bug in the Linux kernel.
+  :small_orange_diamond: How To Become A Hacker - if you want to be a hacker, keep reading.
+  :small_orange_diamond: Operation Costs in CPU - an infographics which should help to estimate costs of certain operations in CPU clocks.
+  :small_orange_diamond: Let's Build a Simple Database - writing a sqlite clone from scratch in C.
+  :small_orange_diamond: simple-computer - great resource to understand how computers work under the hood.
+  :small_orange_diamond: The story of "Have I been pwned?" - working with 154 million records on Azure Table Storage.
+  :small_orange_diamond: TOP500 Supercomputers - shows the 500 most powerful commercially available computer systems known to us.
+

+ +#### Inspiring Lists  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: SysOps/DevOps + +

+  :small_orange_diamond: Awesome Sysadmin - amazingly awesome open source sysadmin resources.
+  :small_orange_diamond: Awesome Shell - awesome command-line frameworks, toolkits, guides and gizmos.
+  :small_orange_diamond: Command-line-text-processing - from finding text to search and replace, from sorting to beautifying text and more.
+  :small_orange_diamond: Awesome Pcaptools - collection of tools developed by other researchers to process network traces.
+  :small_orange_diamond: awesome-ebpf - a curated list of awesome projects related to eBPF.
+  :small_orange_diamond: Linux Network Performance - learn where some of the network sysctl variables fit into the Linux/Kernel network flow.
+  :small_orange_diamond: Awesome Postgres - list of awesome PostgreSQL software, libraries, tools and resources.
+  :small_orange_diamond: quick-SQL-cheatsheet - a quick reminder of all SQL queries and examples on how to use them.
+  :small_orange_diamond: Awesome-Selfhosted - list of Free Software network services and web applications which can be hosted locally.
+  :small_orange_diamond: List of applications - huge collection of applications sorted by category, as a reference for those looking for packages.
+

+ +##### :black_small_square: Developers + +

+  :small_orange_diamond: Front-End-Checklist - the perfect Front-End Checklist for modern websites and meticulous developers.
+  :small_orange_diamond: Python's Magic Methods - what are magic methods? They're everything in object-oriented Python.
+  :small_orange_diamond: wtfpython - a collection of surprising Python snippets and lesser-known features.
+  :small_orange_diamond: js-dev-reads - a list of books and articles for the discerning web developer to read.
+  :small_orange_diamond: Commit messages guide - a guide to understand the importance of commit messages.
+

+ +##### :black_small_square: Security/Pentesting + +

+  :small_orange_diamond: Awesome Web Security - a curated list of Web Security materials and resources.
+  :small_orange_diamond: awesome-cyber-skills - a curated list of hacking environments where you can train your cyber skills.
+  :small_orange_diamond: awesome-threat-intelligence - a curated list of Awesome Threat Intelligence resources.
+  :small_orange_diamond: Red-Teaming-Toolkit - a collection of open source and commercial tools that aid in red team operations.
+  :small_orange_diamond: awesome-burp-extensions - a curated list of amazingly awesome Burp Extensions.
+  :small_orange_diamond: Free Security eBooks - list of a Free Security and Hacking eBooks.
+  :small_orange_diamond: reverse-engineering - list of awesome reverse engineering resources.
+  :small_orange_diamond: linux-re-101 - a collection of resources for linux reverse engineering.
+  :small_orange_diamond: reverseengineering-reading-list - a list of Reverse Engineering articles, books, and papers.
+  :small_orange_diamond: Awesome-WAF - a curated list of awesome web-app firewall (WAF) stuff.
+  :small_orange_diamond: RobotsDisallowed - a curated list of the most common and most interesting robots.txt disallowed directories.
+  :small_orange_diamond: awesome-yara - a curated list of awesome YARA rules, tools, and people.
+  :small_orange_diamond: Movies for Hackers - list of movies every hacker & cyberpunk must watch.
+  :small_orange_diamond: technical-whitepapers - IT whitepapers; hacking, web app security, db, reverse engineering and more; EN/PL.

-#### Blogs +##### :black_small_square: Other

-  :small_orange_diamond: Brendan Gregg's Blog - Brendan Gregg is an industry expert in computing performance and cloud computing.
-  :small_orange_diamond: Gynvael "GynDream" Coldwind - Gynvael is a IT security engineer at Google.
-  :small_orange_diamond: Michał "lcamtuf" Zalewski - "white hat" hacker, computer security expert.
-  :small_orange_diamond: Mattias Geniar - developer, Sysadmin, Blogger, Podcaster and Public Speaker.
-  :small_orange_diamond: Nick Craver - Software Developer and Systems Administrator for Stack Exchange.
-  :small_orange_diamond: Robert Penz - IT security Expert.
-  :small_orange_diamond: Scott Helme - Security Researcher, international speaker and founder of securityheaders.com and report-uri.com.
-  :small_orange_diamond: Kacper Szurek - Detection Engineer at ESET.
-  :small_orange_diamond: Troy Hunt - Microsoft Regional Director and Microsoft Most Valuable Professional for Developer Security.
-  :small_orange_diamond: Linux Audit - the Linux security blog about Auditing, Hardening and Compliance by Michael Boelen.
+  :small_orange_diamond: Cheatography - over 3,000 free cheat sheets, revision aids and quick references.
+  :small_orange_diamond: awesome-static-analysis - static analysis tools for all programming languages.
+

+ +#### Blogs/Podcasts/Videos  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: SysOps/DevOps + +

+  :small_orange_diamond: Varnish for PHP developers - very interesting presentation of Varnish by Mattias Geniar.
+  :small_orange_diamond: A Netflix Guide to Microservices - Josh Evans talks about the chaotic and vibrant world of microservices at Netflix.
+

+ +##### :black_small_square: Developers + +

+  :small_orange_diamond: Comparing C to machine language - compare a simple C program with the compiled machine code of that program.
+

+ +##### :black_small_square: Geeky Persons + +

+  :small_orange_diamond: Brendan Gregg's Blog - is an industry expert in computing performance and cloud computing.
+  :small_orange_diamond: Gynvael "GynDream" Coldwind - is a IT security engineer at Google.
+  :small_orange_diamond: Michał "lcamtuf" Zalewski - white hat hacker, computer security expert.
+  :small_orange_diamond: Mattias Geniar - developer, sysadmin, blogger, podcaster and public speaker.
+  :small_orange_diamond: Nick Craver - software developer and systems administrator for Stack Exchange.
+  :small_orange_diamond: Scott Helme - security researcher, international speaker and founder of securityheaders.com and report-uri.com.
+  :small_orange_diamond: Brian Krebs - The Washington Post and now an Independent investigative journalist.
+  :small_orange_diamond: Bruce Schneier - is an internationally renowned security technologist, called a "security guru".
+  :small_orange_diamond: Chrissy Morgan - advocate of practical learning, Chrissy also takes part in bug bounty programs.
+  :small_orange_diamond: Andy Gill - is a hacker at heart who works as a senior penetration tester.
+  :small_orange_diamond: Daniel Miessler - cybersecurity expert and writer.
+  :small_orange_diamond: Javvad Malik - is a security advocate at AlienVault, a blogger event speaker and industry commentator.
+  :small_orange_diamond: Graham Cluley - public speaker and independent computer security analyst.
+  :small_orange_diamond: Kacper Szurek - detection engineer at ESET.
+  :small_orange_diamond: Troy Hunt - web security expert known for public education and outreach on security topics.
+  :small_orange_diamond: raymii.org - sysadmin specializing in building high availability cloud environments.
+  :small_orange_diamond: Robert Penz - IT security expert.
+

+ +##### :black_small_square: Geeky Blogs + +

+  :small_orange_diamond: Linux Audit - the Linux security blog about auditing, hardening and compliance by Michael Boelen.
  :small_orange_diamond: Linux Security Expert - trainings, howtos, checklists, security tools and more.
  :small_orange_diamond: The Grymoire - collection of useful incantations for wizards, be you computer wizards, magicians, or whatever.
-  :small_orange_diamond: raymii.org - linux/unix sysadmin specializing in building high availability cloud environments.
+  :small_orange_diamond: PortSwigger Web Security Blog - about web app security vulns and top tips from our team of web security.
+  :small_orange_diamond: Secjuice - is the only non-profit, independent and volunteer led publication in the information security space.
+  :small_orange_diamond: Decipher - security news that informs and inspires.

-#### Systems/Services +##### :black_small_square: Geeky Vendor Blogs -##### :black_small_square: Systems +

+  :small_orange_diamond: Tenable Podcast - conversations and interviews related to Cyber Exposure, and more.
+  :small_orange_diamond: Sophos - threat news room, giving you news, opinion, advice and research on computer security issues.
+  :small_orange_diamond: Tripwire State of Security - blog featuring the latest news, trends and insights on current information security issues.
+  :small_orange_diamond: Malwarebytes Labs Blog - security blog aims to provide insider news about cybersecurity.
+  :small_orange_diamond: TrustedSec - latest news, and trends about cybersecurity.
+  :small_orange_diamond: AT&T Cybersecurity blog - news on emerging threats and practical advice to simplify threat detection.
+  :small_orange_diamond: Thycotic - where CISOs and IT Admins come to learn about industry trends, IT security, data breaches, and more.
+

+ +##### :black_small_square: Geeky Cybersecurity Podcasts

-  :small_orange_diamond: Slackware - the most "Unix-like" Linux distribution.
-  :small_orange_diamond: OpenBSD - multi-platform 4.4BSD-based UNIX-like operating system.
-  :small_orange_diamond: HardenedBSD - HardenedBSD aims to implement innovative exploit mitigation and security solutions.
-  :small_orange_diamond: Kali Linux - Linux distribution used for Penetration Testing, Ethical Hacking and network security assessments.
-  :small_orange_diamond: Backbox Linux - penetration test and security assessment oriented Ubuntu-based Linux distribution.
+  :small_orange_diamond: Risky Business - is a weekly information security podcast featuring news and in-depth interviews.
+  :small_orange_diamond: Cyber, by Motherboard - stories, and focus on the ideas about cybersecurity.
+  :small_orange_diamond: Tenable Podcast - conversations and interviews related to Cyber Exposure, and more.
+  :small_orange_diamond: +Cybercrime Investigations - podcast by Geoff White about cybercrimes.
+  :small_orange_diamond: The many hats club - featuring stories from a wide range of Infosec people (Whitehat, Greyhat and Blackhat).
+  :small_orange_diamond: Darknet Diaries - true stories from the dark side of the Internet.
+  :small_orange_diamond: OSINTCurious Webcasts - is the investigative curiousity that helps people be successful in OSINT.
+

+ +##### :black_small_square: Geeky Cybersecurity Video Blogs + +

+  :small_orange_diamond: rev3rse security - offensive, binary exploitation, web application security, vulnerability, hardening, red team, blue team.
+  :small_orange_diamond: LiveOverflow - a lot more advanced topics than what is typically offered in paid online courses - but for free.
+  :small_orange_diamond: J4vv4D - the important information regarding our internet security.
+  :small_orange_diamond: +CyberTalks - talks, interviews, and article about cybersecurity.
+

+ +##### :black_small_square: Best Personal Twitter Accounts + +

+  :small_orange_diamond: @blackroomsec - a white-hat hacker/pentester. Intergalactic Minesweeper Champion 1990.
+  :small_orange_diamond: @MarcoCiappelli - Co-Founder @ITSPmagazine, at the intersection of IT security and society.
+  :small_orange_diamond: @binitamshah - Linux Evangelist. Malwares. Kernel Dev. Security Enthusiast.
+  :small_orange_diamond: @joe_carson - an InfoSec Professional and Tech Geek.
+  :small_orange_diamond: @mikko - CRO at F-Secure, Reverse Engineer, TED Speaker, Supervillain.
+  :small_orange_diamond: @esrtweet - often referred to as ESR, is an American software developer, and open-source software advocate.
+  :small_orange_diamond: @gynvael - security researcher/programmer, @DragonSectorCTF founder/player, technical streamer.
+  :small_orange_diamond: @x0rz - Security Researcher & Cyber Observer.
+  :small_orange_diamond: @hasherezade - programmer, malware analyst. Author of PEbear, PEsieve, libPeConv.
+  :small_orange_diamond: @TinkerSec - tinkerer, cypherpunk, hacker.
+  :small_orange_diamond: @alisaesage - independent hacker and researcher.
+

+ +##### :black_small_square: Best Commercial Twitter Accounts + +

+  :small_orange_diamond: @haveibeenpwned - check if you have an account that has been compromised in a data breach.
+  :small_orange_diamond: @bugcrowd - trusted by more of the Fortune 500 than any other crowdsourced security platform.
+  :small_orange_diamond: @Malwarebytes - most trusted security company. Unmatched threat visibility.
+  :small_orange_diamond: @sansforensics - the world's leading Digital Forensics and Incident Response provider.
+  :small_orange_diamond: @attcyber - AT&T Cybersecurity’s Edge-to-Edge technologies provide threat intelligence, and more.
+  :small_orange_diamond: @TheManyHatsClub - an information security focused podcast and group of individuals from all walks of life.
+  :small_orange_diamond: @hedgehogsec - Hedgehog Cyber. Gibraltar and Manchester's top boutique information security firm.
+  :small_orange_diamond: @NCSC - the National Cyber Security Centre. Helping to make the UK the safest place to live and work online.
+  :small_orange_diamond: @Synacktiv - IT security experts.
+

+ +##### :black_small_square: A piece of history + +

+  :small_orange_diamond: How to Do Things at ARL - how to configure modems, scan images, record CD-ROMs, and other useful techniques.*

-##### :black_small_square: Network +##### :black_small_square: Other

-  :small_orange_diamond: CapAnalysis - web visual tool to analyze large amounts of captured network traffic (PCAP analyzer).
+  :small_orange_diamond: Diffie-Hellman Key Exchange (short version) - how Diffie-Hellman Key Exchange worked.

-##### :black_small_square: HTTP(s) Services +#### Hacking/Penetration Testing  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: Pentesters arsenal tools

-  :small_orange_diamond: Varnish HTTP Cache - HTTP accelerator designed for content-heavy dynamic web sites.
-  :small_orange_diamond: Nginx - open source web and reverse proxy server that is similar to Apache, but very light weight.
+  :small_orange_diamond: Sandcat Browser - a penetration-oriented browser with plenty of advanced functionality already built in.
+  :small_orange_diamond: Metasploit - tool and framework for pentesting system, web and many more, contains a lot a ready to use exploit.
+  :small_orange_diamond: Burp Suite - tool for testing web application security, intercepting proxy to replay, inject, scan and fuzz HTTP requests.
+  :small_orange_diamond: OWASP Zed Attack Proxy - intercepting proxy to replay, inject, scan and fuzz HTTP requests.
+  :small_orange_diamond: w3af - is a Web Application Attack and Audit Framework.
+  :small_orange_diamond: mitmproxy - an interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.
+  :small_orange_diamond: Nikto2 - web server scanner which performs comprehensive tests against web servers for multiple items.
+  :small_orange_diamond: sqlmap - tool that automates the process of detecting and exploiting SQL injection flaws.
+  :small_orange_diamond: Faraday - an Integrated Multiuser Pentest Environment.
+  :small_orange_diamond: Photon - incredibly fast crawler designed for OSINT.
+  :small_orange_diamond: XSStrike - most advanced XSS detection suite.
+  :small_orange_diamond: Sn1per - automated pentest framework for offensive security experts.
+  :small_orange_diamond: aquatone - a tool for domain flyovers.
+  :small_orange_diamond: BillCipher - information gathering tool for a website or IP address.
+  :small_orange_diamond: WhatWaf - detect and bypass web application firewalls and protection systems.
+  :small_orange_diamond: John The Ripper - is a fast password cracker, currently available for many flavors of Unix, Windows, and other.
+  :small_orange_diamond: hashcat - world's fastest and most advanced password recovery utility.
+  :small_orange_diamond: p0f - is a tool to identify the players behind any incidental TCP/IP communications.
+  :small_orange_diamond: Recon-ng - is a full-featured Web Reconnaissance framework written in Python.
+  :small_orange_diamond: ssh_scan - a prototype SSH configuration and policy scanner.
+  :small_orange_diamond: LeakLooker - find open databases - powered by Binaryedge.io
+  :small_orange_diamond: exploitdb - searchable archive from The Exploit Database.
+  :small_orange_diamond: ctf-tools - some setup scripts for security research tools.
+  :small_orange_diamond: pwntools - CTF framework and exploit development library.
+  :small_orange_diamond: security-tools - collection of small security tools created mostly in Python. CTFs, pentests and so on.
+  :small_orange_diamond: fuzzdb - dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.
+  :small_orange_diamond: syzkaller - is an unsupervised, coverage-guided kernel fuzzer.
+  :small_orange_diamond: pwndbg - exploit development and reverse engineering with GDB made easy.
+  :small_orange_diamond: GDB PEDA - Python Exploit Development Assistance for GDB.
+  :small_orange_diamond: IDA - multi-processor disassembler and debugger useful for reverse engineering malware.
+  :small_orange_diamond: radare2 - framework for reverse-engineering and analyzing binaries.
+  :small_orange_diamond: routersploit - exploitation framework for embedded devices.
+  :small_orange_diamond: Ghidra - is a software reverse engineering (SRE) framework.
+  :small_orange_diamond: Vulnreport - open-source pentesting management and automation platform by Salesforce Product Security.
+  :small_orange_diamond: Mentalist - is a graphical tool for custom wordlist generation.
+  :small_orange_diamond: archerysec - vulnerability assessment and management helps to perform scans and manage vulnerabilities.
+  :small_orange_diamond: Osmedeus - fully automated offensive security tool for reconnaissance and vulnerability scanning.
+  :small_orange_diamond: beef - the browser exploitation framework project.
+  :small_orange_diamond: AutoSploit - automated mass exploiter.

-##### :black_small_square: Security/hardening +##### :black_small_square: Backdoors/exploits

-  :small_orange_diamond: Emerald Onion - seattle-based encrypted-transit internet service provider.
-  :small_orange_diamond: Unbound - validating, recursive, and caching DNS resolver (with TLS).
-  :small_orange_diamond: Knot Resolver - caching full resolver implementation, including both a resolver library and a daemon.
-  :small_orange_diamond: Vulnreport - open-source pentesting management and automation platform by Salesforce Product Security.
+  :small_orange_diamond: PHP-backdoors - a collection of PHP backdoors. For educational or testing purposes only.

-#### Awesome Lists +##### :black_small_square: Pentests bookmarks collection

-  :small_orange_diamond: Awesome Sysadmin - amazingly awesome open source sysadmin resources.
-  :small_orange_diamond: Awesome Shell - awesome command-line frameworks, toolkits, guides and gizmos.
-  :small_orange_diamond: Awesome Hacking - awesome lists for hackers, pentesters and security researchers.
+  :small_orange_diamond: PTES - the penetration testing execution standard.
+  :small_orange_diamond: Pentests MindMap - amazing mind map with vulnerable apps and systems.
+  :small_orange_diamond: WebApps Security Tests MindMap - incredible mind map for WebApps security tests.
+  :small_orange_diamond: Brute XSS - master the art of Cross Site Scripting.
+  :small_orange_diamond: Offensive Security Bookmarks - security bookmarks collection, all that things I need to pass OSCP.
+  :small_orange_diamond: Awesome Pentest Cheat Sheets - collection of the cheat sheets useful for pentesting.
+  :small_orange_diamond: Awesome Hacking by HackWithGithub - awesome lists for hackers, pentesters and security researchers.
+  :small_orange_diamond: Awesome Hacking by carpedm20 - a curated list of awesome hacking tutorials, tools and resources.
  :small_orange_diamond: Awesome Hacking Resources - collection of hacking/penetration testing resources to make you better.
-  :small_orange_diamond: Movies for Hackers - list of movies every hacker & cyberpunk must watch.
  :small_orange_diamond: Awesome Pentest - collection of awesome penetration testing resources, tools and other shiny things.
-  :small_orange_diamond: Awesome Pcaptools - collection of tools developed by other researchers to process network traces.
-  :small_orange_diamond: SecLists - collection of multiple types of lists used during security assessments, collected in one place.
-  :small_orange_diamond: Command-line-text-processing - from finding text to search and replace, from sorting to beautifying text and more.
-  :small_orange_diamond: Awesome Scalability - best practices in building High Scalability, High Availability, High Stability and more.
-  :small_orange_diamond: Awesome Postgres - list of awesome PostgreSQL software, libraries, tools and resources.
-  :small_orange_diamond: Free Security eBooks - list of a Free Security and Hacking eBooks.
+  :small_orange_diamond: Hacking Cheat Sheet - author hacking and pentesting notes.
+  :small_orange_diamond: Web App Pentesting Cheat Sheet - the typical steps performed when conducting a web application penetration test.*
+  :small_orange_diamond: Cyber Security Resources - includes thousands of cybersecurity-related references and resources.
+  :small_orange_diamond: Pentest Bookmarks - there are a LOT of pentesting blogs.
+  :small_orange_diamond: ThreatHunter-Playbook - to aid the development of techniques and hypothesis for hunting campaigns.
+  :small_orange_diamond: PayloadsAllTheThings - a list of useful payloads and bypass for Web Application Security and Pentest/CTF.
+  :small_orange_diamond: payloads - git all the Payloads! A collection of web attack payloads.
+  :small_orange_diamond: Pentesting Tools Cheat Sheet - a quick reference high level overview for typical penetration testing engagements.
+  :small_orange_diamond: OWASP Cheat Sheet Series - is a collection of high value information on specific application security topics.
+  :small_orange_diamond: OWASP dependency-check - is an open source solution the OWASP Top 10 2013 entry.
+  :small_orange_diamond: DEF CON Media Server - great stuff from DEFCON.
+  :small_orange_diamond: Awesome Malware Analysis - a curated list of awesome malware analysis tools and resources.
+  :small_orange_diamond: SQL Injection Cheat Sheet - detailed technical information about the many different variants of the SQL Injection.
+  :small_orange_diamond: Entersoft Knowledge Base - great and detailed reference about vulnerabilities.
+  :small_orange_diamond: HTML5 Security Cheatsheet - a collection of HTML5 related XSS attack vectors.
+  :small_orange_diamond: XSS String Encoder - for generating XSS code to check your input validation filters against XSS.
+  :small_orange_diamond: GTFOBins - list of Unix binaries that can be exploited by an attacker to bypass local security restrictions.
+  :small_orange_diamond: Guifre Ruiz Notes - collection of security, system, network and pentest cheatsheets.
+  :small_orange_diamond: SSRF Tips - a collection of SSRF Tips.
+  :small_orange_diamond: shell-storm repo CTF - great archive of CTFs.
+  :small_orange_diamond: ctf - CTF (Capture The Flag) writeups, code snippets, notes, scripts.
+  :small_orange_diamond: My-CTF-Web-Challenges - collection of CTF Web challenges.
+  :small_orange_diamond: MSTG - The Mobile Security Testing Guide (MSTG) is a comprehensive manual for mobile app security testing.
+  :small_orange_diamond: Internal-Pentest-Playbook - notes on the most common things for an Internal Network Penetration Test.

-#### Hacking/Penetration testing +##### :black_small_square: Wordlists and Weak passwords + +

+  :small_orange_diamond: Weakpass - for any kind of bruteforce find wordlists or unleash the power of them all at once!
+  :small_orange_diamond: Hashes.org - is a free online hash resolving service incorporating many unparalleled techniques.
+  :small_orange_diamond: SecLists - collection of multiple types of lists used during security assessments, collected in one place.
+  :small_orange_diamond: Probable-Wordlists - sorted by probability originally created for password generation and testing.
+  :small_orange_diamond: skullsecurity passwords - password dictionaries and leaked passwords repository.
+  :small_orange_diamond: Polish PREMIUM Dictionary - official dictionary created by the team on the forum bezpieka.org.* 1
+  :small_orange_diamond:
statistically-likely-usernames - wordlists for creating statistically likely username lists for use in password attacks.
+

-##### :black_small_square: Bounty programs +##### :black_small_square: Bounty platforms

-  :small_orange_diamond: Bounty Factory - European bug bounty platform based on the legislation and rules in force in European countries.
+  :small_orange_diamond: YesWeHack - bug bounty platform with infosec jobs.
  :small_orange_diamond: Openbugbounty - allows any security researcher reporting a vulnerability on any website.
  :small_orange_diamond: hackerone - global hacker community to surface the most relevant security issues.
  :small_orange_diamond: bugcrowd - crowdsourced cybersecurity for the enterprise.
-  :small_orange_diamond: Crowdshield - crowdsourced Security & Bug Bounty Management.
+  :small_orange_diamond: Crowdshield - crowdsourced security & bug bounty management.
+  :small_orange_diamond: Synack - crowdsourced security & bug bounty programs, crowd security intelligence platform and more.
+  :small_orange_diamond: Hacktrophy - bug bounty platform.

##### :black_small_square: Web Training Apps (local installation)

+  :small_orange_diamond: OWASP-VWAD - comprehensive and well maintained registry of all known vulnerable web applications.
  :small_orange_diamond: Metasploitable 2 - vulnerable web application amongst security researchers.
  :small_orange_diamond: DVWA - PHP/MySQL web application that is damn vulnerable.
  :small_orange_diamond: OWASP Mutillidae II - free, open source, deliberately vulnerable web-application.
  :small_orange_diamond: OWASP Juice Shop Project - the most bug-free vulnerable application in existence.
+  :small_orange_diamond: juicy-ctf - run Capture the Flags and Security Trainings with OWASP Juice Shop.
  :small_orange_diamond: OWASP WebGoat Project - insecure web application maintained by OWASP designed to teach web app security.
  :small_orange_diamond: Security Ninjas - open source application security training program.
+  :small_orange_diamond: hackazon - a modern vulnerable web app.
+  :small_orange_diamond: dvna - damn vulnerable NodeJS application.
+  :small_orange_diamond: Google Gruyere - web application exploits and defenses.
+  :small_orange_diamond: Bodhi - is a playground focused on learning the exploitation of client-side web vulnerabilities.
+  :small_orange_diamond: Websploit - single vm lab with the purpose of combining several vulnerable appliations in one environment.
+  :small_orange_diamond: vulhub - pre-built Vulnerable Environments based on docker-compose.
+  :small_orange_diamond: CloudGoat 2 - the new & improved "Vulnerable by Design" +AWS deployment tool.
+  :small_orange_diamond: secDevLabs - is a laboratory for learning secure web development in a practical manner.
+  :small_orange_diamond: CORS-vulnerable-Lab - sample vulnerable code and its exploit code.

-##### :black_small_square: Labs +##### :black_small_square: Labs (ethical hacking platforms/trainings/CTFs)

+  :small_orange_diamond: Offensive Security - true performance-based penetration testing training for over a decade.
  :small_orange_diamond: Hack The Box - online platform allowing you to test your penetration testing skills.
  :small_orange_diamond: Hacking-Lab - online ethical hacking, computer network and security challenge platform.
  :small_orange_diamond: pwnable.kr - non-commercial wargame site which provides various pwn challenges regarding system exploitation.
+  :small_orange_diamond: Pwnable.tw - is a wargame site for hackers to test and expand their binary exploiting skills.
+  :small_orange_diamond: picoCTF - is a free computer security game targeted at middle and high school students.
+  :small_orange_diamond: CTFlearn - is an online platform built to help ethical hackers learn and practice their cybersecurity knowledge and skills.
+  :small_orange_diamond: ctftime - CTF archive and a place, where you can get some another CTF-related info.
  :small_orange_diamond: Silesia Security Lab - high quality security testing services.
  :small_orange_diamond: Practical Pentest Labs - pentest lab, take your Hacking skills to the next level.
  :small_orange_diamond: Root Me - the fast, easy, and affordable way to train your hacking skills.
+  :small_orange_diamond: rozwal.to - a great platform to train your pentesting skills.
+  :small_orange_diamond: TryHackMe - learning Cyber Security made easy.
+  :small_orange_diamond: hackxor - is a realistic web application hacking game, designed to help players of all abilities develop their skills.
+  :small_orange_diamond: Hack Yourself First - it's full of nasty app sec holes.
+  :small_orange_diamond: OverTheWire - can help you to learn and practice security concepts in the form of fun-filled games.
+  :small_orange_diamond: Wizard Labs - is an online Penetration Testing Lab.
+  :small_orange_diamond: PentesterLab - provides vulnerable systems that can be used to test and understand vulnerabilities.
+  :small_orange_diamond: RingZer0 - tons of challenges designed to test and improve your hacking skills.
+  :small_orange_diamond: Ubeeri - preconfigured lab environments.
+  :small_orange_diamond: Pentestit - emulate IT infrastructures of real companies for legal pen testing and improving penetration testing skills.
+  :small_orange_diamond: Microcorruption - reversal challenges done in the web interface.
+  :small_orange_diamond: Crackmes - download crackmes to help improve your reverse engineering skills.
+  :small_orange_diamond: DomGoat - DOM XSS security learning and practicing platform.
+  :small_orange_diamond: Stereotyped Challenges - upgrade your web hacking techniques today!
+  :small_orange_diamond: OverTheWire - can help you to learn and practice security concepts in the form of fun-filled games.
+  :small_orange_diamond: Vulnhub - allows anyone to gain practical 'hands-on' experience in digital security.
+  :small_orange_diamond: W3Challs - is a penetration testing training platform, which offers various computer challenges.
+  :small_orange_diamond: RingZer0 CTF - offers you tons of challenges designed to test and improve your hacking skills.
+  :small_orange_diamond: try2hack - several security-oriented challenges for your entertainment.
+  :small_orange_diamond: Hack.me - a platform where you can build, host and share vulnerable web apps for educational and research purposes.
+  :small_orange_diamond: HackThis! - discover how hacks, dumps and defacements are performed and secure your website against hackers.
+  :small_orange_diamond: Enigma Group WebApp Training - these challenges cover the exploits listed in the OWASP Top 10 Project.
+  :small_orange_diamond: Reverse Engineering Challenges - challenges, exercises, problems and tasks - by level, by type, and more.
+  :small_orange_diamond: 0x00sec - the home of the Hacker - Malware, Reverse Engineering, and Computer Science.
+  :small_orange_diamond: We Chall - there are exist a lots of different challenge types.
+  :small_orange_diamond: Hacker Gateway - is the go-to place for hackers who want to test their skills.
+  :small_orange_diamond: Hacker101 - is a free class for web security.
+  :small_orange_diamond: contained.af - a stupid game for learning about containers, capabilities, and syscalls.
+  :small_orange_diamond: flAWS challenge! - a series of levels you'll learn about common mistakes and gotchas when using AWS.
+

+ +##### :black_small_square: Other resources + +

+  :small_orange_diamond: Bugcrowd University - open source education content for the researcher community.
+  :small_orange_diamond: OSCPRepo - a list of resources and scripts that I have been gathering in preparation for the OSCP.
+  :small_orange_diamond: OWASP Top 10: Real-World Examples - test your web apps with real-world examples (two-part series).
+

+ +#### Your daily knowledge and news  [[TOC]](#anger-table-of-contents) + +##### :black_small_square: RSS Readers + +

+  :small_orange_diamond: Feedly - organize, read and share what matters to you.
+  :small_orange_diamond: Inoreader - similar to feedly with a support for filtering what you fetch from rss.
+

+ +##### :black_small_square: IRC Channels + +

+  :small_orange_diamond: #hackerspaces - hackerspace IRC channels.
+

+ +##### :black_small_square: Security + +

+  :small_orange_diamond: The Hacker News - leading news source dedicated to promoting awareness for security experts and hackers.
+  :small_orange_diamond: Latest Hacking News - provides the latest hacking news, exploits and vulnerabilities for ethical hackers.
+  :small_orange_diamond: Security Newsletter - security news as a weekly digest (email notifications).
+  :small_orange_diamond: Google Online Security Blog - the latest news and insights from Google on security and safety on the Internet.
+  :small_orange_diamond: Qualys Blog - expert network security guidance and news.
+  :small_orange_diamond: DARKReading - connecting the Information Security Community.
+  :small_orange_diamond: Darknet - latest hacking tools, hacker news, cybersecurity best practices, ethical hacking & pen-testing.
+  :small_orange_diamond: publiclyDisclosed - public disclosure watcher who keeps you up to date about the recently disclosed bugs.
+  :small_orange_diamond: Reddit - Hacking - a subreddit dedicated to hacking and hackers.
+  :small_orange_diamond: Packet Storm - information security services, news, files, tools, exploits, advisories and whitepapers.
+  :small_orange_diamond: Sekurak - about security, penetration tests, vulnerabilities and many others (PL/EN).
+  :small_orange_diamond: nf.sec - basic aspects and mechanisms of Linux operating system security (PL).
+

+ +##### :black_small_square: Other/All-in-one + +

+  :small_orange_diamond: Changelog - is a community of hackers; news & podcasts for developers and hackers.
+

+ +#### Other Cheat Sheets  [[TOC]](#anger-table-of-contents) + +###### Build your own DNS Servers + +

+  :small_orange_diamond: Unbound DNS Tutorial - a validating, recursive, and caching DNS server.
+  :small_orange_diamond: Knot Resolver on Fedora - how to get faster and more secure DNS resolution with Knot Resolver on Fedora.
+  :small_orange_diamond: DNS-over-HTTPS - tutorial to setup your own DNS-over-HTTPS (DoH) server.
+  :small_orange_diamond: DNS-over-TLS - following to your DoH server, setup your DNS-over-TLS (DoT) server.
+  :small_orange_diamond: DNS Servers - how (and why) i run my own DNS Servers.
+

+ +###### Build your own Certificate Authority + +

+  :small_orange_diamond: OpenSSL Certificate Authority - build your own certificate authority (CA) using the OpenSSL command-line tools.
+

+ +###### Build your own System/Virtual Machine + +

+  :small_orange_diamond: os-tutorial - how to create an OS from scratch.
+  :small_orange_diamond: Write your Own Virtual Machine - how to write your own virtual machine (VM).
+  :small_orange_diamond: x86 Bare Metal Examples - dozens of minimal operating systems to learn x86 system programming.
+  :small_orange_diamond: simple-computer - the scott CPU from "But How Do It Know?" by J. Clark Scott.

-#### One-liners +###### DNS Servers list (privacy) + +| IP | URL | +| :--- | :--- | +| **`84.200.69.80`** | [dns.watch](https://dns.watch/) | +| **`94.247.43.254`** | [opennic.org](https://www.opennic.org/) | +| **`64.6.64.6`** | [verisign.com](https://www.verisign.com/en_US/security-services/public-dns/index.xhtml) | +| **`89.233.43.71`** | [censurfridns.dk](https://blog.uncensoreddns.org/) | +| **`1.1.1.1`** | [cloudflare.com](https://1.1.1.1/) | +| **`94.130.110.185`** | [dnsprivacy.at](https://dnsprivacy.at/) | + +###### TOP Browser extensions + +| Extension name | Description | +| :--- | :--- | +| **`IPvFoo`** | Display the server IP address and HTTPS information across all page elements. | +| **`FoxyProxy`** | Simplifies configuring browsers to access proxy-servers. | +| **`HTTPS Everywhere`** | Automatically use HTTPS security on many sites. | +| **`uMatrix`** | Point & click to forbid/allow any class of requests made by your browser. | +| **`uBlock Origin`** | An efficient blocker: easy on memory and CPU footprint. | +| **`Session Buddy`** | Manage browser tabs and bookmarks with ease. | +| **`SuperSorter`** | Sort bookmarks recursively, delete duplicates, merge folders and more. | +| **`Clear Cache`** | Clear your cache and browsing data. | +| **`d3coder`** | Encoding/Decoding plugin for various types of encoding. | +| **`Web Developer`** | Adds a toolbar button with various web developer tools. | +| **`ThreatPinch Lookup`** | Add threat intelligence hover tool tips. | + +###### TOP Burp extensions + +| Extension name | Description | +| :--- | :--- | +| **`Autorize`** | Automatically detects authorization enforcement. | +| **`Reflection`** | An efficient blocker: easy on memory and CPU footprint. | +| **`Logger++`** | Logs requests and responses for all Burp tools in a sortable table. | +| **`Bypass WAF`** | Adds headers useful for bypassing some WAF devices. | +| **`JSON Beautifier`** | Beautifies JSON content in the HTTP message viewer. | +| **`JSON Web Tokens`** | Enables Burp to decode and manipulate JSON web tokens. | +| **`CSP Auditor`** | Displays CSP headers for responses, and passively reports CSP weaknesses. | +| **`CSP-Bypass`** | Passively scans for CSP headers that contain known bypasses. | +| **`Hackvertor`** | Converts data using a tag-based configuration to apply various encoding. | +| **`Active Scan++`** | Extends Burp's active and passive scanning capabilities. | +| **`HTML5 Auditor`** | Scans for usage of risky HTML5 features. | +| **`Software Vulnerability Scanner`** | Software vulnerability scanner based on Vulners.com audit API. | + +#### One-liners  [[TOC]](#anger-table-of-contents) ##### Table of Contents -- **[System](#system)** * [terminal](#tool-terminal) * [mount](#tool-mount) * [fuser](#tool-fuser) + * [lsof](#tool-lsof) * [ps](#tool-ps) * [top](#tool-top) + * [vmstat](#tool-vmstat) + * [iostat](#tool-iostat) * [strace](#tool-strace) * [kill](#tool-kill) * [find](#tool-find) * [diff](#tool-diff) + * [vimdiff](#tool-vimdiff) * [tail](#tool-tail) * [cpulimit](#tool-cpulimit) * [pwdx](#tool-pwdx) * [tr](#tool-tr) * [chmod](#tool-chmod) * [who](#tool-who) + * [last](#tool-last) * [screen](#tool-screen) + * [script](#tool-script) * [du](#tool-du) * [inotifywait](#tool-inotifywait) * [openssl](#tool-openssl) - * [gnutls-cli](#tool-gnutls-cli) * [secure-delete](#tool-secure-delete) * [dd](#tool-dd) -- **[HTTP/HTTPS](#http-https)** + * [gpg](#tool-gpg) + * [system-other](#tool-system-other) * [curl](#tool-curl) * [httpie](#tool-httpie) -- **[Network](#network)** * [ssh](#tool-ssh) * [linux-dev](#tool-linux-dev) * [tcpdump](#tool-tcpdump) * [tcpick](#tool-tcpick) * [ngrep](#tool-ngrep) * [hping3](#tool-hping3) + * [nmap](#tool-nmap) * [netcat](#tool-netcat) * [socat](#tool-socat) - * [lsof](#tool-lsof) + * [p0f](#tool-p0f) + * [gnutls-cli](#tool-gnutls-cli) * [netstat](#tool-netstat) * [rsync](#tool-rsync) * [host](#tool-host) * [dig](#tool-dig) + * [certbot](#tool-certbot) * [network-other](#tool-network-other) -- **[Programming](#programming)** + * [git](#tool-git) * [awk](#tool-awk) * [sed](#tool-sed) * [grep](#tool-grep) -System - ##### Tool: [terminal](https://en.wikipedia.org/wiki/Linux_console) ###### Reload shell without exit @@ -501,7 +1387,8 @@ unset HISTFILE && exit ###### Perform a branching conditional ```bash -true && { echo success;} || { echo failed; } +true && echo success +false || echo failed ``` ###### Pipe stdout and stderr to separate commands @@ -526,6 +1413,25 @@ column -c3 -s " " -t | \ sort -nr | nl | head -n 20 ``` +###### Sterilize bash history + +```bash +function sterile() { + history | awk '$2 != "history" { $1=""; print $0 }' | egrep -vi "\ +curl\b+.*(-E|--cert)\b+.*\b*|\ +curl\b+.*--pass\b+.*\b*|\ +curl\b+.*(-U|--proxy-user).*:.*\b*|\ +curl\b+.*(-u|--user).*:.*\b* +.*(-H|--header).*(token|auth.*)\b+.*|\ +wget\b+.*--.*password\b+.*\b*|\ +http.?://.+:.+@.*\ +" > $HOME/histbuff; history -r $HOME/histbuff; +} + +export PROMPT_COMMAND="sterile" + +``` + ###### Quickly backup a file ```bash @@ -547,8 +1453,8 @@ rm !(*.foo|*.bar|*.baz) ###### Pass multi-line string to a file ```bash -# cat >filename ... - overwrite file -# cat >>filename ... - append to file +# cat >filename ... - overwrite the file +# cat >>filename ... - append to a file cat > filename << __EOF__ data data data __EOF__ @@ -563,7 +1469,7 @@ vim scp://user@host//etc/fstab ###### Create a directory and change into it at the same time ```bash -mkd () { mkdir -p "$@" && cd "$@"; } +mkd() { mkdir -p "$@" && cd "$@"; } ``` ###### Convert uppercase files to lowercase files @@ -612,6 +1518,14 @@ for ((i=1; i<=10; i+=2)) ; do echo $i ; done for ((i=5; i<=10; ++i)) ; do printf '%02d\n' $i ; done # alternative: seq -w 5 10 + +for i in {1..10} ; do echo $i ; done +``` + +###### Simple Bash filewatching + +```bash +unset MAIL; export MAILCHECK=1; export MAILPATH='$FILE_TO_WATCH?$MESSAGE' ``` ___ @@ -637,18 +1551,107 @@ ___ ##### Tool: [fuser](https://en.wikipedia.org/wiki/Fuser_(Unix)) +###### Show which processes use the files/directories + +```bash +fuser /var/log/daemon.log +fuser -v /home/supervisor +``` + ###### Kills a process that is locking a file ```bash -fuser -k filename +fuser -ki filename +``` + + * `-i` - interactive option + +###### Kills a process that is locking a file with specific signal + +```bash +fuser -k -HUP filename ``` + * `--list-signals` - list available signal names + ###### Show what PID is listening on specific port ```bash fuser -v 53/udp ``` +###### Show all processes using the named filesystems or block device + +```bash +fuser -mv /var/www +``` + +___ + +##### Tool: [lsof](https://en.wikipedia.org/wiki/Lsof) + +###### Show process that use internet connection at the moment + +```bash +lsof -P -i -n +``` + +###### Show process that use specific port number + +```bash +lsof -i tcp:443 +``` + +###### Lists all listening ports together with the PID of the associated process + +```bash +lsof -Pan -i tcp -i udp +``` + +###### List all open ports and their owning executables + +```bash +lsof -i -P | grep -i "listen" +``` + +###### Show all open ports + +```bash +lsof -Pnl -i +``` + +###### Show open ports (LISTEN) + +```bash +lsof -Pni4 | grep LISTEN | column -t +``` + +###### List all files opened by a particular command + +```bash +lsof -c "process" +``` + +###### View user activity per directory + +```bash +lsof -u username -a +D /etc +``` + +###### Show 10 largest open files + +```bash +lsof / | \ +awk '{ if($7 > 1048576) print $7/1048576 "MB" " " $9 " " $1 }' | \ +sort -n -u | tail | column -t +``` + +###### Show current working directory of a process + +```bash +lsof -p | grep cwd +``` + ___ ##### Tool: [ps](https://en.wikipedia.org/wiki/Ps_(Unix)) @@ -665,6 +1668,12 @@ ps awwfux | less -S ps hax -o user | sort | uniq -c | sort -r ``` +###### Show all processes by name with main header + +```bash +ps -lfC nginx +``` + ___ ##### Tool: [find](https://en.wikipedia.org/wiki/Find_(Unix)) @@ -737,6 +1746,24 @@ find -xdev -samefile filename find . -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head ``` +###### Recursively find/replace of a string with sed + +```bash +find . -not -path '*/\.git*' -type f -print0 | xargs -0 sed -i 's/foo/bar/g' +``` + +###### Recursively find/replace of a string in directories and file names + +```bash +find . -depth -name '*test*' -execdir bash -c 'mv -v "$1" "${1//foo/bar}"' _ {} \; +``` + +###### Recursively find suid executables + +```bash +find / \( -perm -4000 -o -perm -2000 \) -type f -exec ls -la {} \; +``` + ___ ##### Tool: [top](https://en.wikipedia.org/wiki/Top_(software)) @@ -747,12 +1774,113 @@ ___ top -p $(pgrep -d , ) ``` - * `` - process containing str (eg. nginx, worker) + * `` - process containing string (eg. nginx, worker) + +___ + +##### Tool: [vmstat](https://en.wikipedia.org/wiki/Vmstat) + +###### Show current system utilization (fields in kilobytes) + +```bash +vmstat 2 20 -t -w +``` + + * `2` - number of times with a defined time interval (delay) + * `20` - each execution of the command (count) + * `-t` - show timestamp + * `-w` - wide output + * `-S M` - output of the fields in megabytes instead of kilobytes + +###### Show current system utilization will get refreshed every 5 seconds + +```bash +vmstat 5 -w +``` + +###### Display report a summary of disk operations + +```bash +vmstat -D +``` + +###### Display report of event counters and memory stats + +```bash +vmstat -s +``` + +###### Display report about kernel objects stored in slab layer cache + +```bash +vmstat -m +``` + +##### Tool: [iostat](https://en.wikipedia.org/wiki/Iostat) + +###### Show information about the CPU usage, and I/O statistics about all the partitions + +```bash +iostat 2 10 -t -m +``` + + * `2` - number of times with a defined time interval (delay) + * `10` - each execution of the command (count) + * `-t` - show timestamp + * `-m` - fields in megabytes (`-k` - in kilobytes, default) + +###### Show information only about the CPU utilization + +```bash +iostat 2 10 -t -m -c +``` + +###### Show information only about the disk utilization + +```bash +iostat 2 10 -t -m -d +``` + +###### Show information only about the LVM utilization + +```bash +iostat -N +``` ___ ##### Tool: [strace](https://en.wikipedia.org/wiki/Strace) +###### Track with child processes + +```bash +# 1) +strace -f -p $(pidof glusterfsd) + +# 2) +strace -f $(pidof php-fpm | sed 's/\([0-9]*\)/\-p \1/g') +``` + +###### Track process with 30 seconds limit + +```bash +timeout 30 strace $(< /var/run/zabbix/zabbix_agentd.pid) +``` + +###### Track processes and redirect output to a file + +```bash +ps auxw | grep '[a]pache' | awk '{print " -p " $2}' | \ +xargs strace -o /tmp/strace-apache-proc.out +``` + +###### Track with print time spent in each syscall and limit length of print strings + +```bash +ps auxw | grep '[i]init_policy' | awk '{print " -p " $2}' | \ +xargs strace -f -e trace=network -T -s 10000 +``` + ###### Track the open request of a network port ```bash @@ -785,6 +1913,44 @@ ___ diff <(cd directory1 && find | sort) <(cd directory2 && find | sort) ``` +###### Compare output of two commands + +```bash +diff <(cat /etc/passwd) <(cut -f2 /etc/passwd) +``` + +___ + +##### Tool: [vimdiff](http://vimdoc.sourceforge.net/htmldoc/diff.html) + +###### Highlight the exact differences, based on characters and words + +```bash +vimdiff file1 file2 +``` +###### Compare two JSON files + +```bash +vimdiff <(jq -S . A.json) <(jq -S . B.json) +``` + +###### Compare Hex dump +```bash +d(){ vimdiff <(f $1) <(f $2);};f(){ hexdump -C $1|cut -d' ' -f3-|tr -s ' ';}; d ~/bin1 ~/bin2 +``` + +###### diffchar + +Save [diffchar](https://raw.githubusercontent.com/vim-scripts/diffchar.vim/master/plugin/diffchar.vim) @ `~/.vim/plugins` + +Click `F7` to switch between diff modes + +Usefull `vimdiff` commands: + +* `qa` to exit all windows +* `:vertical resize 70` to resize window +* set window width `Ctrl+W [N columns]+(Shift+)<\>` + ___ ##### Tool: [tail](https://en.wikipedia.org/wiki/Tail_(Unix)) @@ -920,6 +2086,23 @@ ___ who -b ``` +###### Detect a user sudo-su'd into the current shell + +```bash +[[ $(who -m | awk '{ print $1 }') == $(whoami) ]] || echo "You are su-ed to $(whoami)" +``` + +___ + +##### Tool: [last](https://www.howtoforge.com/linux-last-command/) + +###### Was the last reboot a panic? + +```bash +(last -x -f $(ls -1t /var/log/wtmp* | head -2 | tail -1); last -x -f /var/log/wtmp) | \ +grep -A1 reboot | head -2 | grep -q shutdown && echo "Expected reboot" || echo "Panic reboot" +``` + ___ ##### Tool: [screen](https://en.wikipedia.org/wiki/GNU_Screen) @@ -927,7 +2110,31 @@ ___ ###### Start screen in detached mode ```bash -screen -d -m [] +screen -d -m +``` + +###### Attach to an existing screen session + +```bash +screen -r -d +``` + +___ + +##### Tool: [script](https://en.wikipedia.org/wiki/Script_(Unix)) + +###### Record and replay terminal session + +```bash +### Record session +# 1) +script -t 2>~/session.time -a ~/session.log + +# 2) +script --timing=session.time session.log + +### Replay session +scriptreplay --timing=session.time session.log ``` ___ @@ -957,45 +2164,84 @@ ___ ##### Tool: [openssl](https://www.openssl.org/) -###### Testing connection to remote host +###### Testing connection to the remote host ```bash echo | openssl s_client -connect google.com:443 -showcerts ``` -###### Testing connection to remote host (with SNI support) +###### Testing connection to the remote host (with SNI support) ```bash echo | openssl s_client -showcerts -servername google.com -connect google.com:443 ``` -###### Testing connection to remote host with specific ssl version +###### Testing connection to the remote host with specific ssl version ```bash openssl s_client -tls1_2 -connect google.com:443 ``` -###### Testing connection to remote host with specific ssl cipher +###### Testing connection to the remote host with specific ssl cipher ```bash openssl s_client -cipher 'AES128-SHA' -connect google.com:443 ``` -###### Generate private key +###### Verify 0-RTT + +```bash +_host="example.com" + +cat > req.in << __EOF__ +HEAD / HTTP/1.1 +Host: $_host +Connection: close +__EOF__ + +openssl s_client -connect ${_host}:443 -tls1_3 -sess_out session.pem -ign_eof < req.in +openssl s_client -connect ${_host}:443 -tls1_3 -sess_in session.pem -early_data req.in +``` + +###### Generate private key without passphrase + +```bash +# _len: 2048, 4096 +( _fd="private.key" ; _len="4096" ; \ +openssl genrsa -out ${_fd} ${_len} ) +``` + +###### Generate private key with passphrase ```bash -# _ciph: des3, aes -( _ciph="des3" ; _fd="private.key" ; _len="2048" ; \ +# _ciph: des3, aes128, aes256 +# _len: 2048, 4096 +( _ciph="aes128" ; _fd="private.key" ; _len="4096" ; \ openssl genrsa -${_ciph} -out ${_fd} ${_len} ) ``` -###### Remove password from private key +###### Remove passphrase from private key ```bash ( _fd="private.key" ; _fd_unp="private_unp.key" ; \ openssl rsa -in ${_fd} -out ${_fd_unp} ) ``` +###### Encrypt existing private key with a passphrase + +```bash +# _ciph: des3, aes128, aes256 +( _ciph="aes128" ; _fd="private.key" ; _fd_pass="private_pass.key" ; \ +openssl rsa -${_ciph} -in ${_fd} -out ${_fd_pass} +``` + +###### Check private key + +```bash +( _fd="private.key" ; \ +openssl rsa -check -in ${_fd} ) +``` + ###### Get public key from private key ```bash @@ -1003,28 +2249,28 @@ openssl rsa -in ${_fd} -out ${_fd_unp} ) openssl rsa -pubout -in ${_fd} -out ${_fd_pub} ) ``` -###### Generate private key + csr +###### Generate private key and CSR ```bash -( _fd="private.key" ; _fd_csr="request.csr" ; _len="2048" ; \ +( _fd="private.key" ; _fd_csr="request.csr" ; _len="4096" ; \ openssl req -out ${_fd_csr} -new -newkey rsa:${_len} -nodes -keyout ${_fd} ) ``` -###### Generate csr +###### Generate CSR ```bash ( _fd="private.key" ; _fd_csr="request.csr" ; \ openssl req -out ${_fd_csr} -new -key ${_fd} ) ``` -###### Generate csr (metadata from exist certificate) +###### Generate CSR (metadata from existing certificate) ```bash ( _fd="private.key" ; _fd_csr="request.csr" ; _fd_crt="cert.crt" ; \ openssl x509 -x509toreq -in ${_fd_crt} -out ${_fd_csr} -signkey ${_fd} ) ``` -###### Generate csr with -config param +###### Generate CSR with -config param ```bash ( _fd="private.key" ; _fd_csr="request.csr" ; \ @@ -1032,19 +2278,19 @@ openssl req -new -sha256 -key ${_fd} -out ${_fd_csr} \ -config <( cat <<-EOF [req] -default_bits = 2048 -prompt = no -default_md = sha256 -req_extensions = req_ext -distinguished_name = dn +default_bits = 2048 +default_md = sha256 +prompt = no +distinguished_name = dn +req_extensions = req_ext [ dn ] -C= -ST= -L= -O= -OU=
-CN= +C = "" +ST = "" +L = "" +O = "" +OU = "
" +CN = "" [ req_ext ] subjectAltName = @alt_names @@ -1057,6 +2303,107 @@ EOF )) ``` +Other values in `[ dn ]`: + + > Look at this great explanation: [How to create multidomain certificates using config files](https://apfelboymchen.net/gnu/notes/openssl%20multidomain%20with%20config%20files.html) + +``` +countryName = "DE" # C= +stateOrProvinceName = "Hessen" # ST= +localityName = "Keller" # L= +postalCode = "424242" # L/postalcode= +streetAddress = "Crater 1621" # L/street= +organizationName = "apfelboymschule" # O= +organizationalUnitName = "IT Department" # OU= +commonName = "example.com" # CN= +emailAddress = "webmaster@example.com" # CN/emailAddress= +``` + +###### List available EC curves + +```bash +openssl ecparam -list_curves +``` + +###### Generate ECDSA private key + +```bash +# _curve: prime256v1, secp521r1, secp384r1 +( _fd="private.key" ; _curve="prime256v1" ; \ +openssl ecparam -out ${_fd} -name ${_curve} -genkey ) + +# _curve: X25519 +( _fd="private.key" ; _curve="x25519" ; \ +openssl genpkey -algorithm ${_curve} -out ${_fd} ) +``` + +###### Print ECDSA private and public keys + +```bash +( _fd="private.key" ; \ +openssl ec -in ${_fd} -noout -text ) + +# For x25519 only extracting public key +( _fd="private.key" ; _fd_pub="public.key" ; \ +openssl pkey -in ${_fd} -pubout -out ${_fd_pub} ) +``` + +###### Generate private key with CSR (ECC) + +```bash +# _curve: prime256v1, secp521r1, secp384r1 +( _fd="domain.com.key" ; _fd_csr="domain.com.csr" ; _curve="prime256v1" ; \ +openssl ecparam -out ${_fd} -name ${_curve} -genkey ; \ +openssl req -new -key ${_fd} -out ${_fd_csr} -sha256 ) +``` + +###### Generate self-signed certificate + +```bash +# _len: 2048, 4096 +( _fd="domain.key" ; _fd_out="domain.crt" ; _len="4096" ; _days="365" ; \ +openssl req -newkey rsa:${_len} -nodes \ +-keyout ${_fd} -x509 -days ${_days} -out ${_fd_out} ) +``` + +###### Generate self-signed certificate from existing private key + +```bash +# _len: 2048, 4096 +( _fd="domain.key" ; _fd_out="domain.crt" ; _days="365" ; \ +openssl req -key ${_fd} -nodes \ +-x509 -days ${_days} -out ${_fd_out} ) +``` + +###### Generate self-signed certificate from existing private key and csr + +```bash +# _len: 2048, 4096 +( _fd="domain.key" ; _fd_csr="domain.csr" ; _fd_out="domain.crt" ; _days="365" ; \ +openssl x509 -signkey ${_fd} -nodes \ +-in ${_fd_csr} -req -days ${_days} -out ${_fd_out} ) +``` + +###### Generate DH Param key + +```bash +openssl dhparam -out /etc/nginx/ssl/dhparam_4096.pem 4096 +``` + +###### Extract private key from pfx + +```bash +( _fd_pfx="cert.pfx" ; _fd_key="key.pem" ; \ +openssl pkcs12 -in ${_fd_pfx} -nocerts -nodes -out ${_fd_key} ) +``` + +###### Extract private key and certs from pfx + +```bash +( _fd_pfx="cert.pfx" ; _fd_pem="key_certs.pem" ; \ +openssl pkcs12 -in ${_fd_pfx} -nodes -out ${_fd_pem} ) +``` + ###### Convert DER to PEM ```bash @@ -1071,26 +2418,45 @@ openssl x509 -in ${_fd_der} -inform der -outform pem -out ${_fd_pem} ) openssl x509 -in ${_fd_pem} -outform der -out ${_fd_der} ) ``` -###### Checking whether the private key and the certificate match +###### Verification of the private key ```bash -(openssl rsa -noout -modulus -in private.key | openssl md5 ; openssl x509 -noout -modulus -in certificate.crt | openssl md5) | uniq +( _fd="private.key" ; \ +openssl rsa -noout -text -in ${_fd} ) ``` -___ +###### Verification of the public key -##### Tool: [gnutls-cli](https://gnutls.org/manual/html_node/gnutls_002dcli-Invocation.html) +```bash +# 1) +( _fd="public.key" ; \ +openssl pkey -noout -text -pubin -in ${_fd} ) -###### Testing connection to remote host (with SNI support) +# 2) +( _fd="private.key" ; \ +openssl rsa -inform PEM -noout -in ${_fd} &> /dev/null ; \ +if [ $? = 0 ] ; then echo -en "OK\n" ; fi ) +``` + +###### Verification of the certificate ```bash -gnutls-cli -p 443 google.com +( _fd="certificate.crt" ; # format: pem, cer, crt \ +openssl x509 -noout -text -in ${_fd} ) ``` -###### Testing connection to remote host (without SNI support) +###### Verification of the CSR ```bash -gnutls-cli --disable-sni -p 443 google.com +( _fd_csr="request.csr" ; \ +openssl req -text -noout -in ${_fd_csr} ) +``` + +###### Check whether the private key and the certificate match + +```bash +(openssl rsa -noout -modulus -in private.key | openssl md5 ; \ +openssl x509 -noout -modulus -in certificate.crt | openssl md5) | uniq ``` ___ @@ -1144,7 +2510,80 @@ watch --interval 5 killall -USR1 dd echo "string" | dd of=filename ``` -HTTP/HTTPS +___ + +##### Tool: [gpg](https://www.gnupg.org/) + +###### Export public key + +```bash +gpg --export --armor "" > username.pkey +``` + + * `--export` - export all keys from all keyrings or specific key + * `-a|--armor` - create ASCII armored output + +###### Encrypt file + +```bash +gpg -e -r "" dump.sql +``` + + * `-e|--encrypt` - encrypt data + * `-r|--recipient` - encrypt for specific + +###### Decrypt file + +```bash +gpg -o dump.sql -d dump.sql.gpg +``` + + * `-o|--output` - use as output file + * `-d|--decrypt` - decrypt data (default) + +###### Search recipient + +```bash +gpg --keyserver hkp://keyserver.ubuntu.com --search-keys "" +``` + + * `--keyserver` - set specific key server + * `--search-keys` - search for keys on a key server + +###### List all of the packets in an encrypted file + +```bash +gpg --batch --list-packets archive.gpg +gpg2 --batch --list-packets archive.gpg +``` + +___ + +##### Tool: [system-other](https://github.com/trimstray/the-book-of-secret-knowledge#tool-system-other) + +###### Reboot system from init + +```bash +exec /sbin/init 6 +``` + +###### Init system from single user mode + +```bash +exec /sbin/init +``` + +###### Show current working directory of a process + +```bash +readlink -f /proc//cwd +``` + +###### Show actual pathname of the executed command + +```bash +readlink -f /proc//exe +``` ##### Tool: [curl](https://curl.haxx.se) @@ -1170,6 +2609,32 @@ curl -Iks --location -X GET -A "x-agent" --proxy http://127.0.0.1:16379 https:// * `--proxy [socks5://|http://]` - set proxy server +```bash +curl -o file.pdf -C - https://example.com/Aiju2goo0Ja2.pdf +``` + + * `-o` - write output to file + * `-C` - resume the transfer + +###### Find your external IP address (external services) + +```bash +curl ipinfo.io +curl ipinfo.io/ip +curl icanhazip.com +curl ifconfig.me/ip ; echo +``` + +###### Repeat URL request + +```bash +# URL sequence substitution with a dummy query string: +curl -ks https://example.com/?[1-20] + +# With shell 'for' loop: +for i in {1..20} ; do curl -ks https://example.com/ ; done +``` + ###### Check DNS and HTTP trace with headers for specific domains ```bash @@ -1224,23 +2689,36 @@ http -p Hh https://www.google.com * `b` - response body ```bash -http -p Hh --follow --max-redirects 5 --verify no https://www.google.com +http -p Hh https://www.google.com --follow --verify no ``` * `-F, --follow` - follow redirects - * `--max-redirects N` - maximum for `--follow` * `--verify no` - skip SSL verification ```bash -http -p Hh --follow --max-redirects 5 --verify no --proxy http:http://127.0.0.1:16379 https://www.google.com +http -p Hh https://www.google.com --follow --verify no \ +--proxy http:http://127.0.0.1:16379 ``` * `--proxy [http:]` - set proxy server -Network - ##### Tool: [ssh](https://www.openssh.com/) +###### Escape Sequence + +``` +# Supported escape sequences: +~. - terminate connection (and any multiplexed sessions) +~B - send a BREAK to the remote system +~C - open a command line +~R - Request rekey (SSH protocol 2 only) +~^Z - suspend ssh +~# - list forwarded connections +~& - background ssh (when waiting for connections to terminate) +~? - this message +~~ - send the escape character by typing it twice +``` + ###### Compare a remote file with a local file ```bash @@ -1253,7 +2731,7 @@ ssh user@host cat /path/to/remotefile | diff /path/to/localfile - ssh -t reachable_host ssh unreachable_host ``` -###### Run command over ssh on remote host +###### Run command over SSH on remote host ```bash cat > cmd.txt << __EOF__ @@ -1275,13 +2753,13 @@ ssh-keygen -y -f ~/.ssh/id_rsa ssh-keygen -l -f .ssh/known_hosts ``` -###### Ssh authentication with user password +###### SSH authentication with user password ```bash ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no user@remote_host ``` -###### Ssh authentication with publickey +###### SSH authentication with publickey ```bash ssh -o PreferredAuthentications=publickey -o PubkeyAuthentication=yes -i id_rsa user@remote_host @@ -1322,49 +2800,167 @@ function _scg() { } ``` -___ +###### SSH login without processing any login scripts + +```bash +ssh -tt user@host bash +``` + +###### SSH local port forwarding + +Example 1: + +```bash +# Forwarding our local 2250 port to nmap.org:443 from localhost through localhost +host1> ssh -L 2250:nmap.org:443 localhost + +# Connect to the service: +host1> curl -Iks --location -X GET https://localhost:2250 +``` + +Example 2: + +```bash +# Forwarding our local 9051 port to db.d.x:5432 from localhost through node.d.y +host1> ssh -nNT -L 9051:db.d.x:5432 node.d.y + +# Connect to the service: +host1> psql -U db_user -d db_dev -p 9051 -h localhost +``` + + * `-n` - redirects stdin from `/dev/null` + * `-N` - do not execute a remote command + * `-T` - disable pseudo-terminal allocation + +###### SSH remote port forwarding + +```bash +# Forwarding our local 9051 port to db.d.x:5432 from host2 through node.d.y +host1> ssh -nNT -R 9051:db.d.x:5432 node.d.y + +# Connect to the service: +host2> psql -U postgres -d postgres -p 8000 -h localhost +``` + +___ + +##### Tool: [linux-dev](https://www.tldp.org/LDP/abs/html/devref1.html) + +###### Testing remote connection to port + +```bash +timeout 1 bash -c "//" >/dev/null 2>&1 ; echo $? +``` + + * `` - set remote host + * `` - set destination port + +###### Read and write to TCP or UDP sockets with common bash tools + +```bash +exec 5<>/dev/tcp//; cat <&5 & cat >&5; exec 5>&- +``` + +___ + +##### Tool: [tcpdump](http://www.tcpdump.org/) + +###### Filter incoming (on interface) traffic (specific ) + +```bash +tcpdump -ne -i eth0 -Q in host 192.168.252.1 and port 443 +``` + + * `-n` - don't convert addresses (`-nn` will not resolve hostnames or ports) + * `-e` - print the link-level headers + * `-i [iface|any]` - set interface + * `-Q|-D [in|out|inout]` - choose send/receive direction (`-D` - for old tcpdump versions) + * `host [ip|hostname]` - set host, also `[host not]` + * `[and|or]` - set logic + * `port [1-65535]` - set port number, also `[port not]` + +###### Filter incoming (on interface) traffic (specific ) and write to a file + +```bash +tcpdump -ne -i eth0 -Q in host 192.168.252.1 and port 443 -c 5 -w tcpdump.pcap +``` + + * `-c [num]` - capture only num number of packets + * `-w [filename]` - write packets to file, `-r [filename]` - reading from file + +###### Capture all ICMP packets + +```bash +tcpdump -nei eth0 icmp +``` + +###### Check protocol used (TCP or UDP) for service + +```bash +tcpdump -nei eth0 tcp port 22 -vv -X | egrep "TCP|UDP" +``` + +###### Display ASCII text (to parse the output using grep or other) + +```bash +tcpdump -i eth0 -A -s0 port 443 +``` + +###### Grab everything between two keywords + +```bash +tcpdump -i eth0 port 80 -X | sed -n -e '/username/,/=ldap/ p' +``` + +###### Grab user and pass ever plain http + +```bash +tcpdump -i eth0 port http -l -A | egrep -i \ +'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' \ +--color=auto --line-buffered -B20 +``` + +###### Extract HTTP User Agent from HTTP request header -##### Tool: [linux-dev](https://www.tldp.org/LDP/abs/html/devref1.html) +```bash +tcpdump -ei eth0 -nn -A -s1500 -l | grep "User-Agent:" +``` -###### Testing remote connection to port +###### Capture only HTTP GET and POST packets ```bash -timeout 1 bash -c "//" >/dev/null 2>&1 ; echo $? +tcpdump -ei eth0 -s 0 -A -vv \ +'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' or 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354' ``` - * `` - set remote host - * `` - set destination port +or simply: -###### Read and write to TCP or UDP sockets with common bash tools +```bash +tcpdump -ei eth0 -s 0 -v -n -l | egrep -i "POST /|GET /|Host:" +``` + +###### Rotate capture files ```bash -exec 5<>/dev/tcp//; cat <&5 & cat >&5; exec 5>&- +tcpdump -ei eth0 -w /tmp/capture-%H.pcap -G 3600 -C 200 ``` -___ + * `-G ` - pcap will be created every `` seconds + * `-C ` - close the current pcap and open a new one if is larger than `` -##### Tool: [tcpdump](http://www.tcpdump.org/) +###### Top hosts by packets ```bash -tcpdump -ne -i eth0 -Q in host 192.168.252.1 and port 443 +tcpdump -ei enp0s25 -nnn -t -c 200 | cut -f 1,2,3,4 -d '.' | sort | uniq -c | sort -nr | head -n 20 ``` - * `-n` - don't convert addresses - * `-e` - print the link-level headers - * `-i [iface|any]` - set interface - * `-Q|-D [in|out|inout]` - choose send/receive direction (`-D` - for old tcpdump versions) - * `host [ip|hostname]` - set host, also `[host not]` - * `[and|or]` - set logic - * `port [1-65535]` - set port number, also `[port not]` +###### Excludes any RFC 1918 private address ```bash -tcpdump -ne -i eth0 -Q in host 192.168.252.1 and port 443 -c 5 -w tcpdump.pcap +tcpdump -nei eth0 'not (src net (10 or 172.16/12 or 192.168/16) and dst net (10 or 172.16/12 or 192.168/16))' ``` - * `-c [num]` - capture only num number of packets - * `-w [filename]` - write packets to file, `-r [filename]` - reading from file - ___ ##### Tool: [tcpick](http://tcpick.sourceforge.net/) @@ -1380,7 +2976,7 @@ ___ ##### Tool: [ngrep](http://ngrep.sourceforge.net/usage.html) ```bash -ngrep -d eth0 "www.google.com" port 443 +ngrep -d eth0 "www.domain.com" port 443 ``` * `-d [iface|any]` - set interface @@ -1388,14 +2984,14 @@ ngrep -d eth0 "www.google.com" port 443 * `port [1-65535]` - set port number ```bash -ngrep -d eth0 "www.google.com" (host 10.240.20.2) and (port 443) +ngrep -d eth0 "www.domain.com" src host 10.240.20.2 and port 443 ``` * `(host [ip|hostname])` - filter by ip or hostname * `(port [1-65535])` - filter by port number ```bash -ngrep -d eth0 -qt -O ngrep.pcap "www.google.com" port 443 +ngrep -d eth0 -qt -O ngrep.pcap "www.domain.com" port 443 ``` * `-q` - quiet mode (only payloads) @@ -1456,6 +3052,86 @@ hping3 -V -c 1000000 -d 120 -S -w 64 -p 80 --flood --rand-source ___ +##### Tool: [nmap](https://nmap.org/) + +###### Ping scans the network + +```bash +nmap -sP 192.168.0.0/24 +``` + +###### Show only open ports + +```bash +nmap -F --open 192.168.0.0/24 +``` + +###### Full TCP port scan using with service version detection + +```bash +nmap -p 1-65535 -sV -sS -T4 192.168.0.0/24 +``` + +###### Nmap scan and pass output to Nikto + +```bash +nmap -p80,443 192.168.0.0/24 -oG - | nikto.pl -h - +``` + +###### Recon specific ip:service with Nmap NSE scripts stack + +```bash +# Set variables: +_hosts="192.168.250.10" +_ports="80,443" + +# Set Nmap NSE scripts stack: +_nmap_nse_scripts="+dns-brute,\ + +http-auth-finder,\ + +http-chrono,\ + +http-cookie-flags,\ + +http-cors,\ + +http-cross-domain-policy,\ + +http-csrf,\ + +http-dombased-xss,\ + +http-enum,\ + +http-errors,\ + +http-git,\ + +http-grep,\ + +http-internal-ip-disclosure,\ + +http-jsonp-detection,\ + +http-malware-host,\ + +http-methods,\ + +http-passwd,\ + +http-phpself-xss,\ + +http-php-version,\ + +http-robots.txt,\ + +http-sitemap-generator,\ + +http-shellshock,\ + +http-stored-xss,\ + +http-title,\ + +http-unsafe-output-escaping,\ + +http-useragent-tester,\ + +http-vhosts,\ + +http-waf-detect,\ + +http-waf-fingerprint,\ + +http-xssed,\ + +traceroute-geolocation.nse,\ + +ssl-enum-ciphers,\ + +whois-domain,\ + +whois-ip" + +# Set Nmap NSE script params: +_nmap_nse_scripts_args="dns-brute.domain=${_hosts},http-cross-domain-policy.domain-lookup=true," +_nmap_nse_scripts_args+="http-waf-detect.aggro,http-waf-detect.detectBodyChanges," +_nmap_nse_scripts_args+="http-waf-fingerprint.intensive=1" + +# Perform scan: +nmap --script="$_nmap_nse_scripts" --script-args="$_nmap_nse_scripts_args" -p "$_ports" "$_hosts" +``` + +___ + ##### Tool: [netcat](http://netcat.sourceforge.net/) ```bash @@ -1616,7 +3292,23 @@ nc -l -u -p 2000 -c "nc [ip|hostname] 3000" ___ -##### Tool: [socat](http://www.dest-unreach.org/socat/doc/socat.html/) +##### Tool: [gnutls-cli](https://gnutls.org/manual/html_node/gnutls_002dcli-Invocation.html) + +###### Testing connection to remote host (with SNI support) + +```bash +gnutls-cli -p 443 google.com +``` + +###### Testing connection to remote host (without SNI support) + +```bash +gnutls-cli --disable-sni -p 443 google.com +``` + +___ + +##### Tool: [socat](http://www.dest-unreach.org/socat/doc/socat.html) ###### Testing remote connection to port @@ -1647,63 +3339,18 @@ socat TCP-LISTEN:1234,bind=127.0.0.1,reuseaddr,fork,su=nobody,range=127.0.0.0/8 ___ -##### Tool: [lsof](https://en.wikipedia.org/wiki/Lsof) - -###### Show process that use internet connection at the moment - -```bash -lsof -P -i -n -``` - -###### Show process that use specific port number - -```bash -lsof -i tcp:443 -``` - -###### Lists all listening ports together with the PID of the associated process - -```bash -lsof -Pan -i tcp -i udp -``` - -###### List all open ports and their owning executables - -```bash -lsof -i -P | grep -i "listen" -``` - -###### Show all open ports - -```bash -lsof -Pnl -i -``` - -###### Show open ports (LISTEN) - -```bash -lsof -Pni4 | grep LISTEN | column -t -``` - -###### List all files opened by a particular command - -```bash -lsof -c "process" -``` +##### Tool: [p0f](http://lcamtuf.coredump.cx/p0f3/) -###### View user activity per directory +###### Set iface in promiscuous mode and dump traffic to the log file ```bash -lsof -u username -a +D /etc +p0f -i enp0s25 -p -d -o /dump/enp0s25.log ``` -###### Show 10 Largest Open Files - -```bash -lsof / | \ -awk '{ if($7 > 1048576) print $7/1048576 "MB" " " $9 " " $1 }' | \ -sort -n -u | tail | column -t -``` + * `-i` - listen on the specified interface + * `-p` - set interface in promiscuous mode + * `-d` - fork into background + * `-o` - output file ___ @@ -1712,13 +3359,8 @@ ___ ###### Graph # of connections for each hosts ```bash -netstat -an | \ -grep ESTABLISHED | \ -awk '{print $5}' | \ -awk -F: '{print $1}' | \ -grep -v -e '^[[:space:]]*$' | \ -sort | uniq -c | \ -awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }' +netstat -an | awk '/ESTABLISHED/ { split($5,ip,":"); if (ip[1] !~ /^$/) print ip[1] }' | \ +sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }' ``` ###### Monitor open connections for specific port including listen, count and sort it per IP @@ -1727,6 +3369,12 @@ awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print watch "netstat -plan | grep :443 | awk {'print \$5'} | cut -d: -f 1 | sort | uniq -c | sort -nk 1" ``` +###### Grab banners from local IPv4 listening ports + +```bash +netstat -nlt | grep 'tcp ' | grep -Eo "[1-9][0-9]*" | xargs -I {} sh -c "echo "" | nc -v -n -w1 127.0.0.1 {}" +``` + ___ ##### Tool: [rsync](https://en.wikipedia.org/wiki/Rsync) @@ -1789,7 +3437,29 @@ dig -x 172.217.16.14 +short ___ -##### Tool: [network-other](https://github.com/trimstray/awesome-ninja-admins#tool-network-other) +##### Tool: [certbot](https://certbot.eff.org/) + +###### Generate multidomain certificate + +```bash +certbot certonly -d example.com -d www.example.com +``` + +###### Generate wildcard certificate + +```bash +certbot certonly --manual --preferred-challenges=dns -d example.com -d *.example.com +``` + +###### Generate certificate with 4096 bit private key + +```bash +certbot certonly -d example.com -d www.example.com --rsa-key-size 4096 +``` + +___ + +##### Tool: [network-other](https://github.com/trimstray/the-book-of-secret-knowledge#tool-network-other) ###### Get all subnets for specific AS (Autonomous system) @@ -1812,7 +3482,74 @@ sed 's/allow */subnet -> /g' _dname="google.com" ; curl -s "https://dns.google.com/resolve?name=${_dname}&type=A" | jq . ``` -Programming +##### Tool: [git](https://git-scm.com/) + +###### Log alias for a decent view of your repo + +```bash +# 1) +git log --oneline --decorate --graph --all + +# 2) +git log --graph \ +--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \ +--abbrev-commit +``` + +___ + +##### Tool: [python](https://www.python.org/) + +###### Static HTTP web server + +```bash +# Python 3.x +python3 -m http.server 8000 --bind 127.0.0.1 + +# Python 2.x +python -m SimpleHTTPServer 8000 +``` + +###### Static HTTP web server with SSL support + +```bash +# Python 3.x +from http.server import HTTPServer, BaseHTTPRequestHandler +import ssl + +httpd = HTTPServer(('localhost', 4443), BaseHTTPRequestHandler) + +httpd.socket = ssl.wrap_socket (httpd.socket, + keyfile="path/to/key.pem", + certfile='path/to/cert.pem', server_side=True) + +httpd.serve_forever() + +# Python 2.x +import BaseHTTPServer, SimpleHTTPServer +import ssl + +httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), + SimpleHTTPServer.SimpleHTTPRequestHandler) + +httpd.socket = ssl.wrap_socket (httpd.socket, + keyfile="path/tp/key.pem", + certfile='path/to/cert.pem', server_side=True) + +httpd.serve_forever() +``` + +###### Encode base64 + +```bash +python -m base64 -e <<< "sample string" +``` + +###### Decode base64 + +```bash +python -m base64 -d <<< "dGhpcyBpcyBlbmNvZGVkCg==" +``` ##### Tool: [awk](http://www.grymoire.com/Unix/Awk.html) @@ -1822,12 +3559,40 @@ _dname="google.com" ; curl -s "https://dns.google.com/resolve?name=${_dname}&typ awk '!x[$0]++' filename ``` -###### Exclude multiple columns using AWK +###### Print the last column + +```bash +awk '{print $NF}' filename +``` + +###### Remove empty lines + +```bash +awk 'NF > 0' filename + +# alternative: +awk NF filename +``` + +###### Print multiple columns with separators + +```bash +awk -F' ' '{print "ip:\t" $2 "\n port:\t" $3' filename +``` + +###### Exclude multiple columns ```bash awk '{$1=$3=""}1' filename ``` +###### Get the last hour of Apache logs + +```bash +awk '/'$(date -d "1 hours ago" "+%d\\/%b\\/%Y:%H:%M")'/,/'$(date "+%d\\/%b\\/%Y:%H:%M")'/ { print $0 }' \ +/var/log/httpd/access_log +``` + ___ ##### Tool: [sed](http://www.grymoire.com/Unix/Sed.html) @@ -1851,6 +3616,36 @@ sed -i 10d /path/to/file sed -i -re ',d' ``` +###### Replace newline(s) with a space + +```bash +sed ':a;N;$!ba;s/\n/ /g' /path/to/file + +# cross-platform compatible syntax: +sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' /path/to/file +``` + +- `:a` create a label `a` +- `N` append the next line to the pattern space +- `$!` if not the last line, ba branch (go to) label `a` +- `s` substitute, `/\n/` regex for new line, `/ /` by a space, `/g` global match (as many times as it can) + +Alternatives: + +```bash +# perl version (sed-like speed): +perl -p -e 's/\n/ /' /path/to/file + +# bash version (slow): +while read line ; do printf "%s" "$line " ; done < file +``` + +###### Delete string +N next lines + +```bash +sed '/start/,+4d' /path/to/file +``` + ___ ##### Tool: [grep](http://www.grymoire.com/Unix/Grep.html) @@ -1869,6 +3664,16 @@ fgrep "pattern" * -R grep . filename > newfilename ``` +###### Show only for multiple patterns + +```bash +grep 'INFO*'\''WARN' filename +grep 'INFO\|WARN' filename +grep -e INFO -e WARN filename +grep -E '(INFO|WARN)' filename +egrep "INFO|WARN" filename +``` + ###### Except multiple patterns ```bash @@ -1886,3 +3691,100 @@ grep -v ^[[:space:]]*# filename ```bash egrep -v '#|^$' filename ``` + +###### Show strings with a dash/hyphen + +```bash +grep -e -- filename +grep -- -- filename +grep "\-\-" filename +``` + +#### Shell functions  [[TOC]](#anger-table-of-contents) + +##### Table of Contents + +- [Domain resolve](#domain-resolve) +- [Get ASN](#get-asn) + +###### Domain resolve + +```bash +# Dependencies: +# - curl +# - jq + +function DomainResolve() { + + local _host="$1" + + local _curl_base="curl --request GET" + local _timeout="15" + + _host_ip=$($_curl_base -ks -m "$_timeout" "https://dns.google.com/resolve?name=${_host}&type=A" | \ + jq '.Answer[0].data' | tr -d "\"" 2>/dev/null) + + if [[ -z "$_host_ip" ]] || [[ "$_host_ip" == "null" ]] ; then + + echo -en "Unsuccessful domain name resolution.\\n" + + else + + echo -en "$_host > $_host_ip\\n" + + fi + +} +``` + +Example: + +```bash +shell> DomainResolve nmap.org +nmap.org > 45.33.49.119 + +shell> DomainResolve nmap.org +Unsuccessful domain name resolution. +``` + +###### Get ASN + +```bash +# Dependencies: +# - curl +# - python + +function GetASN() { + + local _ip="$1" + + local _curl_base="curl --request GET" + local _timeout="15" + + _asn=$($_curl_base -ks -m "$_timeout" "http://ip-api.com/json/${_ip}" | \ + python -c 'import sys, json; print json.load(sys.stdin)["as"]' 2>/dev/null) + + _state=$(echo $?) + + if [[ -z "$_ip" ]] || [[ "$_ip" == "null" ]] || [[ "$_state" -ne 0 ]]; then + + echo -en "Unsuccessful ASN gathering.\\n" + + else + + echo -en "$_ip > $_asn\\n" + + fi + +} +``` + +Example: + +```bash +shell> GetASN 1.1.1.1 +1.1.1.1 > AS13335 Cloudflare, Inc. + +shell> GetASN 0.0.0.0 +Unsuccessful ASN gathering. +``` diff --git a/static/img/the-book-of-secret-knowledge-preview.png b/static/img/the-book-of-secret-knowledge-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..8d83513d616fde29080dc4c0cc1adef89ccc8e0a GIT binary patch literal 39889 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