入口点是应用程序能够接收输入的地方,对于攻击者来说,入口点是尝试突破应用程序的最佳位置。在安全测试中,采用以下的步骤去识别并研究高风险入口点:

  1. 识别应用程序的入口点,搞清楚它们是干什么的;
  2. 确定每个入口点需要的访问权限;
  3. 从测试的角度为这些高风险的入口点划分等级;
  4. 通过攻击来测试这些入口点;

 

常用的入口点有:文件,套接字,HTTP请求,命名管道,可插入协议处理程序,恶意服务器响应,程序化接口,结构化查询语言(SQL,通用数据库),注册表,用户接口,E-mail,命令行参数,环境变量。

 

文件:

注册文件类型(Registered File Type):能够打开程序来加载自身。只要浏览了它们,就会通过Windows Shell自动打开。

       未注册文件类型(Unregistered File Type):除非用户指定某个程序去打开它,否则就不会被打开。

       如何查找这些入口点: 

  • 应用程序访问的文件
  • 文件的访问权限
  • 文件扩展名信息

 

套接字(Socket):

套接字用于应用程序之间的双向通信,这些应用程序可以使用各种不同的网络协议。套接字地址由一个IP地址和一个端口号组成,端口号是0-

65535之间的一个值,它确定应用程序通过哪个“门”向一个特定的IP地址往来传输数据。

当应用程序使用来自网络的数据时,攻击者能够尝试使用以下技术对应用程序实施攻击:

  • 监控数据
  • 从客户端发送畸形数据
  • 从服务器发送畸形数据
  • 中间人截取攻击

可通过监控网络流量查找入口点

 

HTTP请求:

查找入口点:在HTTP端口上监控流量。

 

命名管道:

  • 匿名管道:总是本地的和单向的管道,允许通过一端写数据而从另一端读数据。
  • 命名管道:允许一个管道服务端和一个或多个客户端进行单向或双向的通信。一个进程与本地或远程的另一个进程进行通信的最常用方式就是使用命名管道。

一个应用程序要么能够创建一个命名管道,并充当服务器来等待其他客户端的连接,要么就作为一个客户端连接到一个命名管道。一旦创建了命名管道,利用文件的I/O应用程序接口(API)读/写数据到文件句柄,就能建立起一个到服务器的连接。

在创建了一个命名管道之后,就能通过约定的格式\.pipepipename来访问它,(\.)表明这是本地机器的一个连接,但是它也能被远程服务器名代替,例如\contosopipeMyEvilPipe代表的是一个叫做contoso的机器上名为MyEvilPipe的命名管道。如果在一台机器上建立一个命名管道,那么攻击者能够从远程服务器上访问到这个命名管道。

攻击者可以通过以下几种方法来利用这个命名管道:

  • 利用命名管道的弱权限
  • 劫持命名管道的创建
  • 模仿客户端

可插入协议处理程序:

 

恶意服务器响应:

使某个用户与一个恶意的服务器建立连接

 

程序化接口:

程序化接口允许应用程序之间的通信,几种类型的技术能够允许应用程序的程序化访问。一些程序化接口利用套接字进行通信;通常,数据被封装在特定的结构里,如果结构被篡改,那么请求将无效。例如,如果你尝试操纵RPC包,那么RPC层可能在请求到达应用程序前就拒绝它。

 

SQL:

注册表:

用户接口:

E-mail:

命令行参数:

环境变量:

 

参考:《安全漏洞追踪》 【美】Tom Gallagher , Bryan Jeffries , Lawrence Landauer

 

 

 

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!