Friday, October 4, 2019

Simple Port Scanner in AWK

This is a simple TCP Port scanner written in awk scripting language. It scans for ports and then checks against the /etc/services file to identify the ports open.

#!/usr/bin/env gawk -f

BEGIN {

## How we check for open ports
o_port = "Connection timed out"

print "\nPORT\tSERVICE\tSTATE\n"

}

## MAIN
{
    ## Scan loopZ
    while ((getline host 0) {

        for (port=0;port<1024;port++) {
            
            Service = "/inet/tcp/0/" host "/" port 
            
            PROCINFO[Service, "READ_TIMEOUT"] = 1000
            
            Service |& getline
            
            ## Try to enumerate port service
            if (ERRNO ~ o_port) {
                s_index=0;
                p_index=0;
                while ((getline service[s_index++]<"/etc/services") > 0) {
                    if (service[p_index] ~ port) {
                        sub("\t.*", " ", service[p_index])
                        print port "\t" service[p_index] "\t" "OPEN\n"
                        next        
                    }
                    p_index++
                }
            }
            close("/net/tcp/0/"host"/"port)  
        }
    }
}

## Fin
END { print "Finished" }

If we run the script we get...

root@asus:~/pentest_notes/SCANNING% echo "127.0.0.1" > awk.txt
root@asus:~/pentest_notes/SCANNING% awk -f tcp_connect_scanner.awk awk.txt

PORT SERVICE STATE

53 domain  OPEN

Finished
root@asus:~/pentest_notes/SCANNING% 

As you can see we got some results from our scan. This is really a novel port scanner it is obviously better to use something like nmap for more reliable results.

No comments:

Post a Comment

Exploiting Weak WEBDAV Configurations

The server we are going to audit has the following fingerprint. 80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2) Next we need t...