反弹端口型木马分析了防火墙的特性后发现:防火墙对于连入的链接往往会进行非常严格的过滤,但是对于连出的链接却疏于防范。于是,与一般的木马相反,反弹端口型木马的服务端(被控制端)使用主动端口,客户端(控制端)使用被动端口,木马定时监测控制端的存在,发现控制端上线立即弹出端口主动连结控制端打开的主动端口,为了隐蔽起见,控制端的被动端口一般开在80,这样,即使用户使用端口扫描软件检查自己的端口,发现的也是类似 TCP UserIP:1026 ControllerIP:80 ESTABLISHED的情况,稍微疏忽一点你就会以为是自己在浏览网页。(防火墙也会这么认为的,我想大概没有哪个防火墙会不给用户向外连接80端口吧,嘿嘿)看到这里,有人会问:那服务端怎么能知道控制端的IP地址呢?难道控制端只能使用固定的IP地址?哈哈,那不是自己找死么?一查就查到了。

实际上,这种反弹端口的木马常常会采用固定IP的第三方存储设备来进行IP地址的传递。举一个简单的例子:事先约定好一个个人主页的空间,在其中放置一个文本文件,木马每分钟去GET一次这个文件,如果文件内容为空,就什么都不做,如果有内容就按照文本文件中的数据计算出控制端的IP和端口,反弹一个TCP链接回去,这样每次控制者上线只需要FTP一个INI文件就可以告诉木马自己的位置,为了保险起见,这个IP地址甚至可以经过一定的加密,除了服务和控制端,其他的人就算拿到了也没有任何的意义。对于一些能够分析报文、过滤TCP/UDP的防火墙,反弹端口型木马同样有办法对付,简单的来说,控制端使用80端口的木马完全可以真的使用HTTP协议,将传送的数据包含在HTTP的报文中,难道防火墙真的精明到可以分辨通过HTTP协议传送的究竟是网页还是控制命令和数据?

一般使用反弹型木马,比如灰鸽子,你可以先申请一个免费主页空间,里面建立一个文件,然后配置灰鸽子读取里面的数据,你每次上线后修改这个文件,让他指向你的Ip,就可以了,你的肉鸡自动连接到你的机器。

                          图2 反弹式木马骗取防火墙信任

  那么,如何防范这类反弹式木马呢?

  1、我们推荐大家使用个人防火墙,其采用独特的“内墙”方式——应用程序访问网络规则,专门对付存在于用户计算机内部的各种不法程序对网络的应用。从而可以有效的防御像“反弹式木马”那样的骗取系统合法认证的非法程序。当用户计算机内部的应用程序访问网络的时候,必须经过防火墙的内墙的审核。合法的应用程序被审核通过;而非法的应用程序将会被防火墙个人版的“内墙”所拦截。

  2、再就是老生常谈了,千万不要随便运行陌生的程序;收到邮件一定要先查看附件,再运行;不要隐藏文件后缀,发现是“.EXE”一定要小心。这些都是对付木马程序应该注意的地方,在此就不赘述了。

木马的传播方式主要有两种:一种是通过E-MAIL,控制端将木马程序以附件的形式夹在邮件中发送出 去, 收信人只要打开附件系统就会感染木马;另一种是软件下载,一些非正规的网站以提供软件下载为 名义, 将木马捆绑在软件安装程序上,下载后,只要一运行这些程序,木马就会自动安装。

反弹木马——本质上就是一个开80端口的CS程序,伪造自己在浏览网页的更多相关文章

  1. QTime的本质上是一个int,QDateTime本质上是一个qint64

    研究这个问题的起因发现使用<=比较时间的不准确,所以怀疑是一个浮点数(Delphi里的time就是一个浮点数).结果却发现是一个int class Q_CORE_EXPORT QTime { e ...

  2. apache服务器本质上说是一个TCP socket服务

    apache服务器本质上说是一个TCP socket服务,socket模型如下:  下面以worker MPM来说明apache代码中相应处理的位置在哪里: (以apache httpd 2.2.23 ...

  3. docker上部署nginx容器80端口自动转443端口

    拉去nginx镜像 # docker pull nginx 运行nginx容器config用于拷贝nginx配置文件 # docker run --name nginxconfig -d docker ...

  4. Liunx 如何查看80端口被哪个程序所占用

    场景:启服务时一直报80端口被占用 解决方: 1.首先查看下 80 端口的使用情况 netstat -anp|grep 80 查看80端口被被占用的PID 2.根据这个PID 来查看被哪个程序在使用 ...

  5. Wireshark "The NPF driver isn’t running…"(可见的驱动本质上是一个系统服务,使用net start 启动)

    前几天重装系统,装上了windows7 RC系统.昨天开始尝试装上了wireshark 这款很强大的网络监视软件,满心欢喜的打开,可是每次打开都会弹出“The NPF driver isn't run ...

  6. IMP本质上是一个通用的函数指针

    IMP:通用的函数指针 /// A pointer to the function of a method implementation. #if !OBJC_OLD_DISPATCH_PROTOTY ...

  7. 如何在Web服务器80端口上开启SSH服务

    本文所讨论的网络端口复用并非指网络编程中采用SO_REUSEADDR选项的 Socket Bind 复用.它更像是一个带特定路由功能的端口转发工具,在应用层实现. 背景 笔者所处网络中防火墙只开放了一 ...

  8. WEB框架本质和第一个Django实例

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 总的来说:Web框架的本质就是浏览 ...

  9. Web的本质以及第一个Django实例.

       Web框架的本质:    所有的Web应用本质上就是一个socket服务器, 而用户的浏览器就是一个socket客户端. import socket sk = socket.socket() s ...

随机推荐

  1. powerDesigner如何动态显示mysql数据库表结构

    原文链接:http://jingyan.baidu.com/article/e5c39bf5d64efa39d760333c.html 有时候,由于数据库中的表太多,主外键关系复杂,对数据库的非设计人 ...

  2. synchronized与static synchronized 的差别、synchronized在JVM底层的实现原理及Java多线程锁理解

    本Blog分为例如以下部分: 第一部分:synchronized与static synchronized 的差别 第二部分:JVM底层又是怎样实现synchronized的 第三部分:Java多线程锁 ...

  3. Bing地图切片原理

    Bing地图切片系统 Bing地图提供了一个可以直接平移和缩放的世界地图.为了让地图操作更加平滑和及时响应,我们选择提前渲染地图不同层级的细节,并把每个层级的地图切割成为瓦片以便快速的还原展示.这篇文 ...

  4. Swift开发教程--怎样使UITableViewController背景透明

    self.tableView.backgroundView? .backgroundColor = UIColor.clearColor(); self.tableView.backgroundCol ...

  5. android学习笔记(5)Activity生命周期学习

    每一个activity都有它的生命周期,开启它,关闭它,跳转到其他activity等等,都会自己主动调用下面某种方法.对这些个方法覆写后观察学习. protected void onCreate(Bu ...

  6. android全磁盘加密

    android 全磁盘加密 什么是全磁盘加密? 全磁盘加密是使用一个密钥来为android设备上全部的用户数据加密的过程.一旦设备被加密,全部的用户创建的数据都将会在提交的磁盘之前自己主动加密,在读取 ...

  7. hdu Escape

    Escape 题目: 非常裸的多重匹配. 可是点数较多,所以要用到状态压缩. . .. .. 第一次写. 好厉害的赶脚. #include <iostream> #include < ...

  8. 文档相关命令-cat命令查看一个文件

    用于查看一个文件的内容并将其显示在屏幕上 cat 后直接加上文件名 -n  表示显示行号 cat -n dirb/filee -A 显示所有内容包括特殊字符 cat -A dirb/filee

  9. jq 方法函数(淡入淡出,查找元素,过滤)遍历

    淡入淡出:fadeIn fadeOut fadeToggle fadeTo 淡入:fadeIn(speed[,callback])   速度和回调函数 回调函数可以写匿名函数,或者方法名不加括号. s ...

  10. (转)script标签到底该放在哪里

    一般script标签会被放在头部或尾部.头部就是<head>里面,尾部一般指<body>里[4-5]. 将script放在<head>里,浏览器解析HTML,发现s ...