From 1e8fec9af667b57bcd67e606ef297be9de5a2fc5 Mon Sep 17 00:00:00 2001 From: Thanwer Date: Thu, 31 Oct 2024 23:03:43 -0300 Subject: [PATCH] Add new post netcat --- content/posts/netcat.md | 125 ++++++++++++++++++++++++++++++++++ static/images/nc-example1.gif | Bin 0 -> 40345 bytes 2 files changed, 125 insertions(+) create mode 100644 content/posts/netcat.md create mode 100644 static/images/nc-example1.gif diff --git a/content/posts/netcat.md b/content/posts/netcat.md new file mode 100644 index 0000000..05d8dfa --- /dev/null +++ b/content/posts/netcat.md @@ -0,0 +1,125 @@ ++++ +date = '2024-10-31T22:00:53-03:00' +title = 'Netcat' +description = "Thanwer's Blog Post about netcat tool" ++++ + +I heard too many times a work coleague, or a third-party vendor telling me "there is something wrong on the network here", or "This port isn't open!". + +You can use websites to try to test for open ports, a quick Google search should yield you a couple good results, but sometimes that is not enough. + + +## The problem +Let's suppose you followed my other post about [restricting source address with iptables]({{< ref "/posts/iptables-basics" >}} "Iptables basics"), in this case those random web tools won't help you, so you use nmap! + +I will make a post about nmap in the future, for now let's use it in a very simple way to check for an open port: + +```bash +$ sudo nmap -sS -p 80 example.com +Password: +Starting Nmap 7.95 ( https://nmap.org ) at 2024-10-31 22:08 -03 +Nmap scan report for example.com (192.0.0.4) +Host is up (0.18s latency). +Other addresses for example.com (not scanned): 2001:db8::192:0:0:4 + +PORT STATE SERVICE +80/tcp open http + +Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds +``` + +As you can see, the important part is -p 80, which specifies that we want to test port 80, and the last argument is the host we are scanning. + +Now let's suppose that another person which is setting up a PABX, which is a classical example... I have a lot of histories about telephony people... For example, he may have set a simple wrong configuration, like the gateway or subnet mask, and that causes his service to not work. He does the same tests I showed above, but instead of "open" that says the port is "filtered". + +That is enough argument for him, now he will blame your network for that. How can we prove that our firewall rules are correct and working? + +The simplest answer is using netcat! + +## netcat (nc) + +Netcat is a very simple, but very powerful tool for those cases. With that, you can setup a listener on any TCP or UDP port! + +### Installing + +The instalation is very simple! On Debian systens you can do it with the command: +```bash +$ sudo apt install netcat +``` + +### Using the tool + +I invite you to read the [nc man page](https://linux.die.net/man/1/nc). + +The main options we need to use are: + +* -p : This specifies which port should we listen to. +* -k : This makes netcat to keep listening after a client disconects. +* -u : Use UDP instead of TCP + +### Use cases + +#### Check for network comunication + +Listen on port 2000: +```bash +$ nc -l 2000 + +``` +This starts a server which listens on port 5000. + +Now let's open another terminal and connect a client to this port: +```bash +$ nc localhost 2000 + +``` + +On both terminals you should see as a chat app working, this is being transmited over the network! + +See an example of this working: + +![Example of netcat usage](/images/nc-example1.gif) + +#### File transfer + +Netcat can be used to send and receive files between two hosts over a network. This can be particularly useful in environments without FTP or SCP access. + +On the receiver’s end: + +```bash +$ nc -l -p 1234 > received_file.txt +``` +On the sender’s end, assuming that 192.0.0.2 is the receiving server: + +```bash +$ nc 192.0.0.2 -p 1234 < file_to_send.txt +``` + +This can be useful for transferring a log file for example. + +#### Port scan + +nc can be used as a simpler alternative to nmap: +```bash +$ nc -z host.example.com 20-30 +Connection to host.example.com 22 port [tcp/ssh] succeeded! +Connection to host.example.com 25 port [tcp/smtp] succeeded! +``` + +#### Directly talking to servers + +nc can be used as an alternative to telnet for troubleshooting. + +For example, you can talk to a SMTP server directly over port 25: + +```bash +$ nc localhost 25 << EOF +HELO host.example.com +MAIL FROM: +RCPT TO: +DATA +Body of email. +. +QUIT +EOF +``` diff --git a/static/images/nc-example1.gif b/static/images/nc-example1.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d973957cbdcd2e602d0ee2fc4641653b1446343 GIT binary patch literal 40345 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 literal 0 HcmV?d00001