skip to main |
skip to sidebar
Nmap is a free utility tool for network discovery, port scanning and security auditing, even though we can use it for more than that but in this article we will learn how to do these three things with nmap.
The original author of nmap is Gordon Lyon (Fyodor). Nmap is licensed under GPL v2 and has available ports in many different languages. Nmap is available for Linux, Windows, and Mac OS X. You can download your copy of nmap from their website.
Lets get started with nmap.
When performing pentests we always look for networks we are going to attack. We need to identify live hosts on the network so that we can attack them. There are plenty of tools available for finding live hosts on a network but nmap is one of the best tools for doing this job.
Lets start with simple host (target) discovery scans i,e scans that will tell us which ip address is up on our target network. Those ip addresses which are up on our target network are the ones that are assigned to a device connected on our target network. Every device on the network is going to have a unique ip address.To perform a simple host discovery scan we use the following command
nmap -v -sn 10.10.10.0/24
flags we used in the above command are-v for verbose output-sn to disable port scan (we don't want to scan for ports right now)
Following the flags is the ip address of the target network on which we want to look for live hosts. The /24 at the end of the ip address is the CIDR that specifies the subnet of the network on which we are looking for live hosts.
After running the above command you should get a list of live hosts on your target network.If you just want to know the list of ip addresses your command is going to scan, you can use the -sL flag of the nmap like this.
nmap -sL 10.10.10.0/24
this command will simply output the list of ip addresses to scan.
We sometimes want to do dns resolution (resolving ip addresses to domain names) when performing our network scans and sometimes we don't want dns resolution. While performing a host discovery scan with nmap if we want to perform dns resolution we use -R flag in our command like this:
nmap -v -sn -R 10.10.10.0/24
And if we don't want to perform dns resolution of hosts during our scan we add the -n flag to our command like this:
nmap -v -sn -n 10.10.10.0/24
After we have discovered the hosts that are up on our target network, we usually put the ip addresses of these hosts into a file for further enumeration.
Next step in our enumeration would be to detect which operating system and which ports are running on these live hosts, for that we run this command:
nmap -O -v 10.10.10.119
here we use -O (capital o not zero) for operating system detection and by default nmap performs SYN Scan for port discovery. However nmap scans for 1000 ports only by default of a particular host.
To make nmap go over a list of ip addresses in a file we use -iL flag like this:
nmap -O -v -iL targetlist
where targetlist is the name of the file which contains ip addresses that we want to perform port scan on.
To make nmap scan all the ports of a target we use the -p flag like this:
nmap -p- -v 10.10.10.121
We can also specify a range of ports using the -p flag like this:
nmap -p1-500 -v 10.10.10.121
here 1-500 means scan all the ports from 1 to 500.
We can use a number of scan techniques to discover open ports on our network but I will only discuss some of them for brevity.
We can perform a TCP SYN scan using nmap with -sS flag like this:
nmap -sS -v 10.10.10.150
We have also flags for TCP connect and ACK scans which are -sT -sA
nmap -sT -v 10.10.10.150
nmap -sA -v 10.10.10.150
We can also perform UDP scan as well instead of TCP scan using -sU flag
nmap -sU -v 10.10.10.150
We can perform TCP Null, FIN, and Xmas scans using the flags -sN, -sF, -sX
nmap -sN -v 10.10.10.150
nmap -sF -v 10.10.10.150
nmap -sX -v 10.10.10.150
If you don't know what these scans are then please visit Port Scanning Techniques and Algorithms for explanation.
After discovering the open ports on our target host, we want to enumerate what services are running on those open ports. To enumerate services and versions information on open ports we use the -sV flag like this:
nmap -sV -v 10.10.10.118
This should give us information about what services are running on what ports and what versions of those services are running on the target host.
nmap has an interesting feature called NSE nmap scripting engine. It allows users to write their own scripts, using the Lua programming language, to automate a wide variety of networking tasks. nmap ships with a diverse set of scripts which are very helpful to enumerate a target. To use the nmap default set of scripts while enumerating the target, we use the -sC flag like this:
nmap -sC -sV -v 10.10.10.118
We can also save the results of our nmap scans to a file using the -o flag like this
nmap -sC -sV -v -oA defaultscan 10.10.10.119
here -oA tells the nmap to output results in the three major formats at once and defaultscan is the name of the file that will be prepended to all the three output files.
This is the end of this short tutorial see you next time.
References:https://nmap.org/book/scan-methods-null-fin-xmas-scan.html Related posts
- Hackerrank
- Pentest Kit
- Pentest Vs Red Team
- Pentest Free
- Hacker Kevin Mitnick
- Pentest Wiki
- Pentest Companies
- Hacker Kevin Mitnick
- Pentest Tools For Windows
- Pentest Practice
- Is Hacking Illegal
All commands (A-Z) for Kali Linux here:Aapropos Search Help manual pages (man -k)apt-get Search for and install software packages (Debian/Ubuntu)aptitude Search for and install software packages (Debian/Ubuntu)aspell Spell Checkerawk Find and Replace text, database sort/validate/indexBbasename Strip directory and suffix from filenamesbash GNU Bourne-Again SHellbc Arbitrary precision calculator languagebg Send to backgroundbreak Exit from a loop •builtin Run a shell builtinbzip2 Compress or decompress named file(s)Ccal Display a calendarcase Conditionally perform a commandcat Concatenate and print (display) the content of filescd Change Directorycfdisk Partition table manipulator for Linuxchgrp Change group ownershipchmod Change access permissionschown Change file owner and groupchroot Run a command with a different root directorychkconfig System services (runlevel)cksum Print CRC checksum and byte countsclear Clear terminal screencmp Compare two filescomm Compare two sorted files line by linecommand Run a command – ignoring shell functions •continue Resume the next iteration of a loop •cp Copy one or more files to another locationcron Daemon to execute scheduled commandscrontab Schedule a command to run at a later timecsplit Split a file into context-determined piecescut Divide a file into several partsDdate Display or change the date & timedc Desk Calculatordd Convert and copy a file, write disk headers, boot recordsddrescue Data recovery tooldeclare Declare variables and give them attributes •df Display free disk spacediff Display the differences between two filesdiff3 Show differences among three filesdig DNS lookupdir Briefly list directory contentsdircolors Colour setup for `ls'dirname Convert a full pathname to just a pathdirs Display list of remembered directoriesdmesg Print kernel & driver messagesdu Estimate file space usageEecho Display message on screen •egrep Search file(s) for lines that match an extended expressioneject Eject removable mediaenable Enable and disable builtin shell commands •env Environment variablesethtool Ethernet card settingseval Evaluate several commands/argumentsexec Execute a commandexit Exit the shellexpect Automate arbitrary applications accessed over a terminalexpand Convert tabs to spacesexport Set an environment variableexpr Evaluate expressionsFfalse Do nothing, unsuccessfullyfdformat Low-level format a floppy diskfdisk Partition table manipulator for Linuxfg Send job to foregroundfgrep Search file(s) for lines that match a fixed stringfile Determine file typefind Search for files that meet a desired criteriafmt Reformat paragraph textfold Wrap text to fit a specified width.for Expand words, and execute commandsformat Format disks or tapesfree Display memory usagefsck File system consistency check and repairftp File Transfer Protocolfunction Define Function Macrosfuser Identify/kill the process that is accessing a fileGgawk Find and Replace text within file(s)getopts Parse positional parametersgrep Search file(s) for lines that match a given patterngroupadd Add a user security groupgroupdel Delete a groupgroupmod Modify a groupgroups Print group names a user is ingzip Compress or decompress named file(s)Hhash Remember the full pathname of a name argumenthead Output the first part of file(s)help Display help for a built-in command •history Command Historyhostname Print or set system nameIiconv Convert the character set of a fileid Print user and group id'sif Conditionally perform a commandifconfig Configure a network interfaceifdown Stop a network interfaceifup Start a network interface upimport Capture an X server screen and save the image to fileinstall Copy files and set attributesJjobs List active jobs •join Join lines on a common fieldKkill Stop a process from runningkillall Kill processes by nameLless Display output one screen at a timelet Perform arithmetic on shell variables •ln Create a symbolic link to a filelocal Create variables •locate Find fileslogname Print current login namelogout Exit a login shell •look Display lines beginning with a given stringlpc Line printer control programlpr Off line printlprint Print a filelprintd Abort a print joblprintq List the print queuelprm Remove jobs from the print queuels List information about file(s)lsof List open filesMmake Recompile a group of programsman Help manualmkdir Create new folder(s)mkfifo Make FIFOs (named pipes)mkisofs Create an hybrid ISO9660/JOLIET/HFS filesystemmknod Make block or character special filesmore Display output one screen at a timemount Mount a file systemmtools Manipulate MS-DOS filesmtr Network diagnostics (traceroute/ping)mv Move or rename files or directoriesmmv Mass Move and rename (files)Nnetstat Networking informationnice Set the priority of a command or jobnl Number lines and write filesnohup Run a command immune to hangupsnotify-send Send desktop notificationsnslookup Query Internet name servers interactivelyOopen Open a file in its default applicationop Operator accessPpasswd Modify a user passwordpaste Merge lines of filespathchk Check file name portabilityping Test a network connectionpkill Stop processes from runningpopd Restore the previous value of the current directorypr Prepare files for printingprintcap Printer capability databaseprintenv Print environment variablesprintf Format and print data •ps Process statuspushd Save and then change the current directorypwd Print Working DirectoryQquota Display disk usage and limitsquotacheck Scan a file system for disk usagequotactl Set disk quotasRram ram disk devicercp Copy files between two machinesread Read a line from standard input •readarray Read from stdin into an array variable •readonly Mark variables/functions as readonlyreboot Reboot the systemrename Rename filesrenice Alter priority of running processesremsync Synchronize remote files via emailreturn Exit a shell functionrev Reverse lines of a filerm Remove filesrmdir Remove folder(s)rsync Remote file copy (Synchronize file trees)Sscreen Multiplex terminal, run remote shells via sshscp Secure copy (remote file copy)sdiff Merge two files interactivelysed Stream Editorselect Accept keyboard inputseq Print numeric sequencesset Manipulate shell variables and functionssftp Secure File Transfer Programshift Shift positional parametersshopt Shell Optionsshutdown Shutdown or restart linuxsleep Delay for a specified timeslocate Find filessort Sort text filessource Run commands from a file `.'split Split a file into fixed-size piecesssh Secure Shell client (remote login program)strace Trace system calls and signalssu Substitute user identitysudo Execute a command as another usersum Print a checksum for a filesuspend Suspend execution of this shell •symlink Make a new name for a filesync Synchronize data on disk with memoryTtail Output the last part of filetar Tape ARchivertee Redirect output to multiple filestest Evaluate a conditional expressiontime Measure Program running timetimes User and system timestouch Change file timestampstop List processes running on the systemtraceroute Trace Route to Hosttrap Run a command when a signal is set(bourne)tr Translate, squeeze, and/or delete characterstrue Do nothing, successfullytsort Topological sorttty Print filename of terminal on stdintype Describe a command •Uulimit Limit user resources •umask Users file creation maskumount Unmount a deviceunalias Remove an alias •uname Print system informationunexpand Convert spaces to tabsuniq Uniquify filesunits Convert units from one scale to anotherunset Remove variable or function namesunshar Unpack shell archive scriptsuntil Execute commands (until error)uptime Show uptimeuseradd Create new user accountuserdel Delete a user accountusermod Modify user accountusers List users currently logged inuuencode Encode a binary fileuudecode Decode a file created by uuencodeVv Verbosely list directory contents (`ls -l -b')vdir Verbosely list directory contents (`ls -l -b')vi Text Editorvmstat Report virtual memory statisticsWwait Wait for a process to complete •watch Execute/display a program periodicallywc Print byte, word, and line countswhereis Search the user's $path, man pages and source files for a programwhich Search the user's $path for a program filewhile Execute commandswho Print all usernames currently logged inwhoami Print the current user id and name (`id -un')wget Retrieve web pages or files via HTTP, HTTPS or FTPwrite Send a message to another userXxargs Execute utility, passing constructed argument list(s)xdg-open Open a file or URL in the user's preferred application.yes Print a string until interrupted. Run a command script in the current shell!! Run the last command again More info