2018/10/04-网络API-《恶意代码实战分析》
2021-07-03 01:36
标签:connect cep start 兼容 连接 选项 查找 http 应用层 恶意代码通常依赖于网络函数来完成它的肮脏工作,而Windows API函数中就有很多可以进行网络通信。创建网络特征的任务是复杂的,我们这里的目标,是向你如何识别和理解常见的网络函数,这样你就可以辨别出一个恶意程序在使用这些函数时会做些什么。 在Windows的网络选项中,恶意代码最普遍使用的是伯克利兼容套接字,它们的功能在Windows和UNIX系统上几乎是一样的。 伯克利兼容套接字 伯克利兼容套接字的网络功能在Windows系统中是由Winsock库实现的,主要在ws2_32.dll中。在所有函数中,socket、connect、bind、listen、accept、send和recv函数是最常用的。 WSAStartup函数必须要在其他网络函数之前被调用,以便为这些网络库分配资源。当在调试代码查找网络连接入口时,在WSAStartup函数中设置一个断点,是非常有用的,因为网络入口应该跟在后面不远的地方。 socket 创建一个套接字 bind 将一个套接字绑定到特定端口,应该在accept之前调用 listen 预示一个套接字将进入监听,等待入站连接 accept 向一个远程套接字打开一个连接,并接受连接 connect 向一个远程套接字打开一个连接,远程套接字必须在等待连接 recv 从远程套接字接收数据 send 发送数据到远程套接字 网络的服务器和客户端 一个网络程序通常有两个端点:服务器端,它维护一个打开套接字并等待入站连接;客户端,它连接一个正在等待的套接字。而恶意代码可以是这两端中的任意一个。 在连接一个远程套接字的客户端应用例子中,你会看到socket调用,然后紧跟着一个connect调用,如果需要的话,后面跟着的是send和recv调用。对一个监听入站连接的服务应用,顺序则是socket、bind、listen和accept函数陆续被调用,如果需要的话,跟着是send和recv调用。这个模式在恶意和非恶意的程序中,都是很常见的。 WinINET API 除了Winsock API以外,还有一个称为WinINET API的更高一级WindowsAPI。WinINET API函数被保存在Wininet.dll中。如果一个程序从这个DLL中导入函数,它就是在使用更高一级的网络API。 WinINET API实现了应用层协议,入HTTP和FTP。你可以基于恶意代码打开的是何种连接,来理解它在做什么事情。 InternetOpen被用来初始化一个道互联网的连接。 InternetOpenUrl被用来访问一个URL(它可以是一个HTTP页面或一个FTP资源)。 InternetReadFile和ReadFile函数工作原理相似,允许程序从一个来自互联网的下载文件中读取数据。 恶意代码可以使用WinINET API,来连接一个远程服务器,并获取要执行的进一步指令。 2018/10/04-网络API-《恶意代码实战分析》 标签:connect cep start 兼容 连接 选项 查找 http 应用层 原文地址:https://www.cnblogs.com/Fingerprint/p/9906815.html
下一篇:C#设计模式原则
文章标题:2018/10/04-网络API-《恶意代码实战分析》
文章链接:http://soscw.com/essay/101031.html