我的网络开发之旅——TCP/IP协议分析

简介:

之前在当地的一期技术沙龙做了一个《网络开发那些事》的技术分享,讲述了自己职业生涯从事的与网络相关的开发工作。在接触这类开发之前一直在从事业务系统或者单机系统的开发,说真的那时感觉自己对程序员这个职业既没有兴趣也没有多大能力,但是接触了网络相关的开发之后,慢慢的激发出了自己对这个行业的热情和潜力,使自己找到了方向。到底这类开发工作有什么神奇的地方?来吧,咱一起来看看。


网络开发究竟有些什么?

从招聘网站上截取典型的几段:

  • 熟悉Socket编程,熟悉Tcp/Ip协议栈;

  • 熟悉TCP/IP协议、UDP协议,有相关的协议开发经验;

  • 熟悉网络编程/多线程编程技术;

我们提取出其中的几个关键词:TCP/IP、Socket、协议、多线程,其实做网络相关的开发也就是以这几个关键词为主线。

我做的第一份与网络有关的工作是与安全有关的:核心是基于TCP/IP 协议的分析,相关的工作与socket编程关系不大,但必须要求熟悉TCP/IP协议的原理,今天这篇文章我就以此为专题。

想必有些朋友曾经遇到过这样的情形:

  • 在公司不敢上无关网站,无聊!

  • 在公司不敢下电影,浪费大好带宽!

  • 在公司甚至都不敢发某些邮件,郁闷了吧!

其实这些都是“基于TCP/IP 协议的分析”惹的祸,这些结果都可以通过协议分析之后很直观的展现出来。大家可以看这么两幅图

wKiom1QYUNbB1J_ZAAJZSiztW6Q817.jpg

wKiom1QYUNbDReTbAAFrY84i6wQ645.jpg

正是TCP/IP协议栈这种良好的分层设计为我们进行协议分析提供了极大的便利,那么我们该如何动手呢?


我们需要站在“巨人"的肩膀之上——pcap,我们截取维基百科上的定义来说明一下他:

In the field of computer network administration, pcap (packet capture) consists of an application programming interface (API) for capturing network traffic. Unix-like systems implement pcap in the libpcap library; Windows uses a port of libpcap known as WinPcap.

所以我们可以利用pcap库来对抓取的网络数据进行剥茧抽丝!

其实还有许多其他的”巨人“供我们继续踩:

  • snort的代码架构清晰,一些数据结构设计的非常巧妙;

  • tcpdump的代码短小精悍,使用方法为大家所熟知;

  • wireshark对各协议的分析最为全面。

从其中我们还可以学习到做协议分析在架构上一定要采用模块化设计,引入插件机制。


只是这么简单吗?当海量的网络数据”喷涌而来“时你会面临下面的困境

  • 作为入侵检测系统:海量数据的实时监测会成为难点(匹配算法——KMP算法)

  • 作为审计系统:大数据存储,挖掘会成为难点(分布式文件系统)


书籍推荐:

做好协议分析我认为只需读好一本书籍就好《TCP/IP详解 卷1:协议》

tip:我们的网络数据有多不安全——MSN消息是明文传输的(逝者已逝,不多说坏话了);曾经的有些邮箱也是明文,我曾经在办公网络中抓取到很多人的邮箱密码;另外现在用假wifi对手机钓个鱼的现象也时有发生......

我工作中利用网络协议分析来干什么?——”抓木马“,因为木马除了本地行为和特征外其实还有很突出的网络行为

  • 反向链接是木马最突出的一个行为特征,主要是为了应付各级防火墙的外出松内进紧的防控策略,但是我们可以利用这一特征来定位可疑的程序。

  • 端口复用:杀毒软件的端口扫描工具总是可以定位某些可疑端口,躲在某些知名端口的数据通道里干坏事就成为某些木马的生存之道。

  • 无端口技术:就如金庸笔下的风清扬一样,只闻其名未见其踪,从未抓到过。

以上各种行为再加上一些应用层协议的分析工作只能确定程序可疑,得靠上层的各种加权分析或者人为干预才能完全定性。但我一很牛的哥们(火星人)专门做木马样本的逆向工作,找出特征值把网络数据用匹配算法一比对一抓一个准。

正是这份与我们现实生活有很多交集的工作勾起了我对开发的兴趣,我记得我曾通过协议分析看哪个同事上***网站,通过木马植入做同事的恶作剧,还被亲戚要求帮忙监控孩子的网上行为......

本文转自永远的朋友博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/1553513如需转载请自行联系原作者

yaocoder
相关文章
|
1月前
|
移动开发 网络协议 安全
网络面试题:什么是 TCP/IP?
网络面试题:什么是 TCP/IP?
43 0
网络面试题:什么是 TCP/IP?
|
1月前
|
监控 Shell Linux
【Shell 命令集合 网络通讯 】Linux 分析串口的状态 statserial命令 使用指南
【Shell 命令集合 网络通讯 】Linux 分析串口的状态 statserial命令 使用指南
33 0
|
7天前
|
机器学习/深度学习 数据可视化 测试技术
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
19 0
|
7天前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
20 0
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
7天前
|
机器学习/深度学习 算法 数据可视化
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
17 0
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
|
8天前
|
存储 算法 前端开发
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
30 0
|
8天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
8天前
|
数据可视化 网络可视化
R语言混合图形模型MGM的网络可预测性分析
R语言混合图形模型MGM的网络可预测性分析
|
8天前
|
算法 定位技术 Windows
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
14 4
|
9天前
|
机器学习/深度学习 资源调度 数据可视化
使用Python和Keras进行主成分分析、神经网络构建图像重建
使用Python和Keras进行主成分分析、神经网络构建图像重建
13 1

热门文章

最新文章