红队攻防学习之信息收集

一、信息收集

1、主机发现

nmap

官网: https://nmap.org/
安装系统及命令:

  • Mac os: brew install nmap

  • Centos: yum install nmap

  • Ubuntu: apt一get install nmap

参考手册: https://nmap.org/man/zh/index.html

扫描方式

常见的七种扫描方式:

  • ТСР: -sT

  • SYN: -sS

  • ACK: -sA

  • UDP: -sU

  • RPC: -sR

  • ICMP: -sP

  • Disable Port Scan: -sn

最常见的这些参数解释:https://blog.csdn.net/liudongdong19/article/details/83506731

常见扫描案例

  • 扫描10000端口、操作系统、版本
nmap -T4 -A <target>
  • 版本探测
nmap -sV <target>
  • 操作系统
nmap -O <target>
  • 其他常用技巧:
--host-timeout 主机超时时间 通常选值:18000
--scan-delay 报文时间间隔 通常选值:1000
-s <源地址> 定义扫描源地址,为了不被发现

示例

nmap -V -iR 100000 -PO -p 80

随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因此使用-PO禁止对主机列表。

host -l company.com | cut -d -f 4 | nmap -V -iL -

进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给Nmap。上述命令用于GNU/Linux —— 其它系统进行区域传输时有不同的命令。

输出

-oN <File>
-oX <XML File>
-oG <filespec>

Grep输出参考:http://www.unspecific.com/nmap-oG-output/

Masscan

项目地址: https://github.com/robertdavidgraham/masscan
安装:

$ sudo apt-get install git gcc make libpcap一dev
$ git clone https://github.com/ rober tdavidgr aham/ masscan
$ cd masscan
$ make

该工具兼容Nmap的参数高级选项

高级选项

msscan
命令:sudo masscan --ports 1-10000 192.168.1.101 --adapter-ip 192.168.1.1

  • -adapter-ip 指定发包的IP地址
  • -adapter-port 指定发包的源端口
  • -adapter-mac 指定发包的源MAC地址
  • -router-mac 指定网关的MAC地址
  • -exclude IP地址范围黑名单,防止masscan扫描
  • -excludefile 指定IP地址范围黑名单文件
  • -includefile,-iL 读取一个范围列表进行扫描
  • -wait 指定发送完包之后的等待时间,默认为10秒

命令:masscan -p 1-65535 192.168.1.101 --rate=100
在网络环境慢的情况下,快速扫描出存在端口与nmap配合


Nbtscan

kali系统自带nbtscan,以及查看帮助说明

ice@iceH:~/Desktop$ whereis nbtscan
nbtscan: /usr/bin/nbtscan /usr/share/man/man1/nbtscan.1.gz
ice@iceH:~/Desktop$ nbtscan 

NBTscan version 1.6.
This is a free software and it comes with absolutely no warranty.
You can use, distribute and modify it under terms of GNU GPL 2+.

Usage:
nbtscan [-v] [-d] [-e] [-l] [-t timeout] [-b bandwidth] [-r] [-q] [-s separator] [-m retransmits] (-f filename)|(<scan_range>) 
......

示例

nbtscan
nbtscan扫描可以发现主机名、MAC addr等信息…

  • 扫描整个C段
nbtscan -r 192.168.1.0/24
  • 扫描一个范围
nbtscan 192.168.1.1-100
  • 以:分割显示结果
nbtscan -v -s : 192.168.1.0/24
  • 从文件读取扫描范围
nbtscan -f <File>

高级用法

sudo nbtscan -v -s ' ' 192.168.1.105
sudo nbtscan -v -s ' ' 192.168.1.105 | awk '{print $1}' | uniq
ice@iceH:~/Desktop$ sudo nbtscan -v -s ' ' 192.168.1.105
192.168.1.105 GOOGLE-28D12ECA 00U
192.168.1.105 GOOGLE-28D12ECA 20U
192.168.1.105 WORKGROUP       00G
192.168.1.105 WORKGROUP       1eG
192.168.1.105 WORKGROUP       1dU
192.168.1.105 __MSBROWSE__ 01G
192.168.1.105 MAC 00:0c:29:f5:84:34
ice@iceH:~/Desktop$ sudo nbtscan -v -s ' ' 192.168.1.105 | awk '{print $1}' | uniq
192.168.1.105

hping3

hping3主要测试防火墙的拦截规则,对网络设备进行测试

常用模式

  • -0 -rawip IP原始报文
  • -1 -icmp ICMP模式
  • -2 -udp UDP模式
  • -8 -scan 扫描模式
  • -9 -listen 监听模式

SYN方式扫描主机端口

hping3 --scan 445,135 -S 192.168.1.105

hping3

可以看到,目标主机回复了: S…A,代表SYN/ACK

测试防火墙对ICMP包的反应、是否支持traceroute、是否开放某个端口、对防火墙进行拒绝服务攻击(DoS attack)。例如,以LandAttack方式测试目标防火墙(Land Attack是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接)

hping3 -S -a 114.114.114.114 -p 53 114.114.114.114 -c 5

DRDDOS

基于UDP的DOS

hping3 -udp -a 114.114.114.114 -p 53 114.114.114.114 -c 5

参考

http://0daysecurity.com/articles/hping3_examples.html –很详细用法的解释
http://man.linuxde.net/hping3


2、关联信息生成

在渗透前期工作开展之前,需要对目标的各种信息进行分析、拆分、组合
例如:赫尔巴斯亚基国
根据地域习惯、宗教、互联网开放信息等信息进行简要拆分,假设获取的信息如下:

  • 当地人爱好吃橙子
  • 当地人信奉伊斯兰教
  • IPV4地址开放IP段
  • 相关社交网络公 开的数据库

根据宗教、习惯、IP地址、 开放数据支持…等,为后续的字典生成、鱼叉、水坑攻击铺下基石

字典生成:pydictor

安装:

git clone https://github.com/LandGrey/pydictor

安装

生成字典

生成字典

命令:python pydictor.py --sedb

python pydictor.py --sedb
set cname liwei
set sname lw Lwei
set ename zwell
set birth 19880916
set usedpwd liwei123456. liwei@19880916 lw19880916_123
set phone 18852006666
set uphone 15500998080
set hphone 76500100 61599000 01061599000
set email 33125500@qq.com
set email 13561207878@163.com
set email weiweili@gmail.com
set email wei010wei@hotmail.com
set postcode 663321 962210
set nickname zlili
set idcard 152726198809160571
set jobnum 20051230 100563
set otherdate 19591004 19621012
set otherdate 19870906 19880208
set usedchar tiger gof gamesthrones 176003 m0n5ter ppdog
run

生成字典

合并去重

python pydictor.py -tool uniqbiner /my/all/dict/

多字典文件组合工具

python pydictor.py -tool hybrider heads.txt some_others.txt tails.txt

参考详细:https://github.com/LandGrey/pydictor/blob/master/docs/doc/usage.md


3、开放漏洞情报

常用网站

Search Exploit一DB

搜索漏洞

利用 searchsploit apache 5.3.12 ,搜索apache漏洞

搜索漏洞

更新最新exp库

命令:searchsploit -u
更新最新exp库


4、开源情报信息搜集(OSINT)

搜索引擎语法

在线接口

有几个挺好用的,自行挖掘…

相关工具

此网站极力推荐学习!!!


5、Github Hacking

您可以在所有公共GitHub存储库中搜索以下类型的信息,以及您有权访问的所有私有Github存储库

  • Repositories
  • Topics
  • Issues and pull requests
  • Code
  • Commits
  • Users
  • Wikis

参考 :

  • Searching for repositories
  • Searching topics
  • Searching code
  • Searching commits
  • Searching issues and pull requests
  • Searching users
  • Searching wikis
  • Searching in forks

可以使用以上方式搜索页面或高级搜索页面搜索Github
您可以使用>>=<,和<=搜索是大于大于或等于小于小于或等于另一个值的值
下面会介绍如何搜索

搜索仓库

QueryExample
>_ncats stars:>1000匹配关键字”cats”且star大于1000的仓库
>=ncats topIcs:>=5匹配关键字”cats”且标签数量大于等于5的仓库
<_n_cats size:<10000匹配关键字”cats”且文件小于10KB的仓库
<=_n_cats stars:<=50匹配关键字”cats”且star小于等于50的仓库
_n_..*cats stars:10..*匹配关键字”cats”且star大于等于10的仓库
*.._n_cats stars:*..10匹配关键字”cats”且star小于等于10的仓库
n..ncats stars:10..50匹配关键字”cats”且star大于10且小于50的仓库

搜索代码

注意事项

  • 只能搜索小于384KB的文件
  • 只能搜索少于500,000个文件的存储库,登录的用户可以搜索所有公共存储库
  • 除filename搜索外,搜索源代码时必须至少包含一个搜索词。例如,搜索language: Javascript无效,而是这样: amazing language:Javascript
  • 搜索结果最多可以显示来自同一文件的两个片段,但文件中可能会有更多结果。您不能将以下通配符用作搜索查询的一部分“.、! “ = * ! ? # $ & + ^ | ~ < > ( ) { } [ ] 搜索将忽略这些符号

日期条件

  • cats pushed:<2012-07-05 搜索在2012年07月05日前push代码,且cats作为关键字
  • cats pushed:2016-04-30..2016-07-04 日期区间
  • cats created:>=2017-04-01 创建时间

逻辑运算

  • AND、OR、NOT

排除运算

  • cats pushed:<2012-07-05 language:java 搜索在2012年07月05日前push代码,且cats作为关键字,排除java语言仓库

包含搜索

  • cats in:file 搜索文件中包含cats的代码
    • cats in:path 搜索路径中包含cats的代码
      • cats in:path,file搜索路径、文件中包含cats的代码
  • console path:app/public language:javascript 搜索关键字 console,且语言为javascript,在app/public下的代码

主体搜索

  • user: USERNAME 用户名搜索
    • org: ‘’ORGNAME 组织搜索
      • repo: USERNAME/REPOSITORY指定仓库搜索

文件大小

  • size:>1000 搜索大小大于1KB的文件

文件名称

filename:config.php language:php 搜索文件名为config.php,且语言为php的代码
github hacking

搜索Java项目配置文件: mail filename:.properties
github hacking

扩展名

搜索extension:yaml mongolab.com 中存在的代码信息等
github hacking

自动化工具

https://github.com/unkl4b/gitmIner

自动化工具


6、google hacking

google hacking

用法

  • Intitle 包含标题
    • Intext 包含内容
      • filetype 文件类型
        • Info 基本信息
          • site 指定网站
          • inurl 包含某个url
          • link 包含指定链接的网页
          • cache 显示页面的缓存版本
        • numberange搜索一个数字

示例

  • 搜索目标包含后台的页面

命令:inurl:/admin intext: 后台管理系统

site:"some-keywords.com"intitle: login intext: intext: 管理|后台|登陆|用户名|密码|验证码|系统|帐号| manage|admin|login|system

google hacking

  • 搜索目标是否有目录列表

命令:intext: index of / | ../ | Parent Directory

site:"some-keywords.com" intext: index of / | ../ | Parent Directory

google hacking

可看到存在目录列表很多url

google hacking


7、Git-all-secret

略过这个,等有精力再研究


8、mailsniper.ps1获取outlook所有联系人

条件

掌握其中一个用户邮箱的账号密码,并且可以登录outlook
outlook地址可以是官方的也可以是目标自己搭建的,并无影响

目的

获取目标邮箱里的所有联系人,方便后续爆破弱口令等等

利用

命令

将尝试 Outlook Web Access(OWA)Exchange Web服务(EWS)的方法。此命令可用于从Exchange收集电子邮件列表 :

Get-GlobalAddressList -ExchHostname "outlook地址" -UserName "域名/域用户名" -Password "密码" -OutFile global-address-list.txt

可以自己搭建目标outlook在自己服务器上

此处使用klion的域环境模拟
mailsniper. ps1最后一行加入以下代码,也可以通过传参的形式调用

Get-GlobalAddressList -ExchHostname mail.domain.com -UserName domain\username -Password Fall2016 -OutFile global-address-list.txt

尝试使用我们传递的账号密码去登录目标的outlook,成功登录后会把邮件里的联系人都获取下来,并输出保存到文件里

目标outlook在Office365

道理也是一样的,把ExchHostname指向outlook.office365.com即可,username使用完整的邮箱不要是用户名即可

Get-GlobalAddressList -ExchHostname outlook.office365.com -Username 用户名@邮箱.....

参考链接

工具地址

https://github.com/dafthack/mailsniper


9、内网渗透之信息收集

Windows(工作组和域)

检查当前shell权限

whoami /user & whoami /priv

检查当前shell权限

查看系统信息

收集信息主机名->扮演角色

systeminfo

主机名:           WIN-2008
OS 名称:          Microsoft Windows Server 2008 R2 Standard
OS 版本:          6.1.7601 Service Pack 1 Build 7601
OS 制造商:        Microsoft Corporation
OS 配置:          成员服务器
OS 构件类型:      Multiprocessor Free
注册的所有人:     Windows 用户
注册的组织:
产品 ID:          55041-628-5044404-84151
初始安装日期:     2020/10/14, 14:31:07
系统启动时间:     2020/11/19, 18:02:28
系统制造商:       VMware, Inc.
系统型号:         VMware Virtual Platform
系统类型:         x64-based PC
处理器:           安装了 1 个处理器。
                  [01]: Intel64 Family 6 Model 142 Stepping 10 GenuineIntel ~1992 Mhz
BIOS 版本:        Phoenix Technologies LTD 6.00, 2020/2/27
Windows 目录:     C:\Windows
系统目录:         C:\Windows\system32
启动设备:         \Device\HarddiskVolume1
系统区域设置:     zh-cn;中文(中国)
输入法区域设置:   zh-cn;中文(中国)
时区:             (UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐
物理内存总量:     2,047 MB
可用的物理内存:   1,529 MB
虚拟内存: 最大值: 4,095 MB
虚拟内存: 可用:   3,562 MB
虚拟内存: 使用中: 533 MB
页面文件位置:     C:\pagefile.sys
域:               secice.cn
登录服务器:       \\WIN-2008
修补程序:         安装了 2 个修补程序。
                  [01]: KB2999226
                  [02]: KB976902
网卡:             安装了 2 个 NIC。
                  [01]: Intel(R) PRO/1000 MT Network Connection
                      连接名:      本地连接
                      启用 DHCP:   否
                      IP 地址
                        [01]: 192.168.3.101
                        [02]: fe80::15a9:e224:1f9b:336
                  [02]: Intel(R) PRO/1000 MT Network Connection
                      连接名:      本地连接 2
                      启用 DHCP:   是
                      DHCP 服务器: 192.168.126.254
                      IP 地址
                        [01]: 192.168.126.175
                        [02]: fe80::d1cb:2aa2:fe1f:d647

Tcp/udp 网络连接状态信息

可以获取内网IP分布状态-服务(redis)

netstat -ano

Tcp/udp 网络连接状态信息

查看机器名

hostname

查看当前操作系统

wmic OS get Caption,CSDVersion,OSArchitecture,Version 
ver

查看当前操作系统

查看当前安装的程序

wmic product get name,version

查看当前安装的程序

查看在线用户

quser

查看在线用户

查看网络配置

有 Primary Dns Suff就说明是域内,空的则当前机器应该在工作组

ipconfig /all

查看网络配置

查看进程

有些进程可能是域用户启的->通过管理员权限凭证窃取->窃取域用户的凭证

tasklist /v

查看进程

查看当前登陆域

net config workstation

查看当前登陆域

远程桌面链接历史记录

可以把凭证取下来->本地解密

cmdkey /l

查看本机上的用户账户列表

net user 

查看本机用户xxx的信息

net user xxx

查看本机用户xxx的信息

net user /domain 				显示所在域的用户名单
net user 域用户 /domain			获取某个域用户的详细信息 
net user /domain xxx 12345678 	修改域用户密码,需要域管理员权限

Windows(域)

nltest /domain_trusts /all_trusts /v /server:192.168.126.175    返回所有信任域列表
nltest /dsgetdc:secice /server:192.168.3.101    				   返回域控和其相应的IP地
net user /do 												   获取域用户列表
net group /domain											查看域里面的组。
net group "domain computers" /domain						查看域内所有的主机计算机名。
net group "domain admins" /domain								查看域管理员。
net group "domain controllers" /domain							查看域控制器。
net group "enterprise admins" /domain							查看企业管理组。
net localgroup administrators								   本机管理员[通常含有域用户]
net localgroup administrators /domain 						   登录本机的域管理员 
net localgroup administrators workgroup\user001 /add 		   域用户添加到本机
net view 				查看同一域内机器列表 
net view \\ip			查看某IP共享
net view \\GHQ		    查看GHQ计算机的共享资源列表 
net view /domain		查看内网存在多少个域 
net view /domain:XYZ	查看XYZ域中的机器列表 
net accounts /domain	查询域用户密码过期等信息
net time/domain			查看时间服务器。

定位域控IP

1)ipconfig /all	通常域内主机 DNS 地址就是域控地址
2)查看开启 53389 等端口的主机
3)net time /domain && ping DC.secice.cn

Linux

查看当前权限

whoami

查看网卡配置

ifconfig

查看端口状态(开启了哪些服务,内网IP连接等

netstat -anpt

查看进程状态(开启了哪些服务等)

ps -ef

查看管理员的历史输入命令(获取密码,网站目录,内网资产等信息)

cat /root/.bash_history

查找某个文件(寻找配置文件等)

find / -name *.cfg

10、后渗透信息收集之wmic命令的一些使用方法

前言

wmic和cmd一样在所有的windows版本中都存在,同时wmic有很多cmd下不方便使用的部分,今天给大家介绍一些在后渗透过程中非常适用的使用wmic进行信息收集的命令

关于wmic

WMI命令行(WMIC)实用程序为WMI提供了命令行界面。WMIC与现有的Shell和实用程序命令兼容。在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,例如SMS,或者使用WMI的脚本编程API,或者使用象CIM Studio之类的工具。如果不熟悉C++之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要用WMI管理系统是很困难的,WMIC改变了这种情况

wmic的简单使用

首先在cmd命令行输入wmic进入交互式页面,这里说一下在powershell也可以和cmd命令行一样的操作
wmic的简单使用

/?				查看WMIC命令的全局选项以及命令属性等
process /?		进程管理的帮助
wmic process get /?   属性获取操作帮助

根据实际的需要去对相关的信息进行读取

以进程为例展现wmic的使用

这里的靶机是server 2008的虚拟机,这里以查看进程为例:

获取系统当前正在运行的进程等信息

wmic process get caption,executablepath,processid

获取进程信息

查看服务进程详细信息

wmic service where (state="running") get name ,processid ,pathname ,startmode ,caption

获取进程详细信息

系统安装软件情况

wmic product get name

查看当前安装的程序

系统环境变量

wmic environment get Description, VariableValue

查看当前安装的程序

关于更多的信息可以通过官方的说明文档

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/wmic

关于powershell的Get-Wmi对象

Get-Wmi是获取Windows Management Instrumentation(WMI)类的实例或有关可用类的信息。我们需要首先知道自己的 windows计算机支持那些可用的WMI类

Get-Wmiobject -list 	自己的windows计算机支持那些可用的WMI类
get-wmiobject
get-wmiobject -class win32_process		在本地计算机上获取进程

具体的参数以及命令在官方文档中进行查询:

https://docs.microsoft.com/zh-cn/powershell/module/Microsoft.PowerShell.Management/Get-WmiObject?view=powershell-5.l#parameters

11、内网横向常见端口

Port. 445

SMB( Server Message Block) Windows协议族,主要功能为文件打印共享服务,简单来讲就是共享文件夹

该端口也是近年来内网横向扩展中比较火的端口,大名鼎鼎的永恒之蓝漏洞就是利用该端口,操作为扫描其是否存在MS17-010漏洞。正常情况下,其命令主要是建立IPC服务中

空会话

net use \\192.168.1.x

远程本地认证

net use \\192.168.1.2 /user:a\username password

注:a/username 中 a 为工作组情况下的机器命名,可以为任意字符,例如workgroup/username

域 test.local 远程认证

net use \\192.168.1.2 /user:test\username password

Port:137、138、139

NetBios端口,137、138为UDP端口,主要用于内网传输文件,而NetBios/SMB服务的获取主要是通过139端口

Port: 135

该端口主要使用DCOMRPC(Remote Procedure Call)服务,我们利用这个端口主要做WMI(Windows Management Instrumentation)管理工具的远程操作

  • 使用时需要开启wmic服务
  • 几乎所有的命令都是管理员权限
  • 如果出现 “Invalid Globa| Switch”,需要使用双引号把该加的地方都加上
  • 远程系统的本地安全策略的“网络访问:本地帐户的共享和安全模式”应设为“经典-本地用户以自己的身份验证”
  • 防火墙最好是关闭状态

Port: 53

该端口为DNS服务端口,只要提供域名解析服务使用,该端口在渗透过程中可以寻找一下DNS域传送漏洞,在内网中可以使用DNS协议进行通信传输,隐蔽性更加好
参考文章

dns隧道之dns2tcp

dns隧道之unseat2

Port: 389

用于LADP(轻量级目录访问协议),属于TCP/IP协议,在域过程中一般出现在域控上出现该端口,进行权限认证服务,如果拥有对该域的用户,且担心net或者其他爆破方法不可行的情况,可以尝试使用LADP端口进行爆破

工具可以使用类似于hydra等开源项目

Port: 88

该端口主要开启Kerberos服务,属于TCP/IP协议,主要任务是监听KDC的票据请求,该协议在渗透过程中可以进行黄金票据和白银票据的伪造,以横向扩展某些服务

Port: 5985

该端口主要介绍WinRM服务,WinRM是Windows对WS-Management的实现,WinRM允许远程用户使用工具和脚本对Windows服务器进行管理并获取数据。并且WinRM服务自Windows Vista开始成为Windows的默认组件

条件:

  • Windows Vista上必须手动启动,而Windows Server 2008 中服务是默认开启的
  • 服务在后台开启,但是端口还没有开启监听,所以需要开启端口
  • 使用 winrm quickconfig 对winRM进行配置,开启HTTP和HTTPSS监听,且需要开启防火墙