Reber's Blog

会一点点编程、会一点点渗透


macOS 上发送 CANFD 报文

0x00 前因

我的主力机是 Mac,手头有个 PEAK PCAN-USB Pro FD,平时拿它发车上的诊断请求
它在 Windows 上用着没问题,在 Mac 上却一直发不出 CANFD,但一连上就反复报 bus error / bus-off
把诊断线全拔掉、只留 USB,空闲通道的状态查询照样报错

more...

安卓调用 so 文件

0x00 安卓的 JNI

安卓开发中,JNI 就是 Java Native Interface 的缩写,它允许 Java 代码调用原生的 C/C++ 代码,或者允许 C/C++ 代码调用 Java 代码。

在 Android Stdio 中,有以下 3 种方法使用 so 文件:

more...

使用 Hook 框架 frida 进行调试

0x00 frida

1、手机端安装一个 server 程序
2、然后把手机端的端口转到 PC 端
3、PC 端写 js 脚本进行通信

frida -U -f com.package.name -l exploit.js

function hook() {
  console.log("[*] Starting script")
    
  Java.perform(function () {
    var <class_reference> = Java.use("<package_name>.<class>");
    <class_reference>.<method>.implementation = function(<args>) {
      console.log("hook <class_reference>.<method>()")
      console.log("args is:", args)
      
      var ret = this.<method_to_hook>(args);
      return ret
    }
  })
}

0x01 JAVA 层 - 直接调用函数

  • 调用静态函数

    package com.example.test.ui.test;
    
    public class TestFrida {
        public static String staticFunc(boolean isOk) {
            if (isOk){
                return "flag{sdfjwiejflkjf}";
            } else {
                return "nonono";
            }
        }
    }
    
    function hook_static_func() {
      console.log("[*] Starting script")
    
      Java.perform(function () {
        var TestFrida = Java.use("com.example.test.ui.test.TestFrida")
        var str = TestFrida.staticFunc(true)
        console.log(str)
      })
    }
    
  • 调用非静态函数

     package com.example.test.ui.test;
    
     public class TestFrida {
         public String noStaticFunc(boolean isOk){
             if (isOk){
                 return "flag{orjkwjflkjd}";
             } else {
                 return "nonono";
             }
         }
     }
    
    function hook_no_static_func() {
      console.log("[*] Starting script")
    
      Java.perform(function () {
        var TestFrida = Java.use("com.example.test.ui.test.TestFrida")
        var testFrida = TestFrida.$new();
        var str = testFrida.noStaticFunc(true);
        console.log(str)
      })
    }
    
more...

固件提取

0x00 固件组成

固件通常由 bootloader、内核、根文件系统及其他资源文件组成
固件采用的根系统文件类型有很多种,常见的有 squashfs、ubifs、ext4、jeffs2 等。
固件文件通常以 bin、zip、LZMA、arj 等文件压缩类型封装,最常见的为 bin 和 zip 格式
最常采用的文件系统是 squashfs,分析人员可以使用 unsqushfs 工具对文件系统提取数据。

more...

硬件接口测试

0x01 JTAG 接口

主要用来读写固件,常见 JTAG 接口引脚有 10PIN、14PIN、20PIN

一般需要接的引脚:
GND:接地引脚
TDI:测试数据输入,用于向被测设备传输测试数据
TDO:测试数据输出,用于从被测设备读取测试数据
TCK:测试时钟,用于同步测试数据的传输
TMS:测试模式选择,用于控制 JTAG 状态机的状态转移
TRST:可选,TRST 可以用来对 TAPController 进行复位(初始化)

more...

使用 MSF 进行 PtH 和 PtT

0x00 概述

  • 环境

    攻击机 MSF:172.20.10.2
    DC (Server2008R2X64):10.11.11.5
    目标机 (Win7ProX86):10.11.11.14

  • PtH 和 PtT

    PtH 一般用来进行域内横向
    PtT 一般是在已经获取域控的前提下利用,用来做权限维持

more...

Kerberos 与 NTLM Hash 与 Ticket

0x00 Kerberos

Kerberos 协议有两个基础认证模块: AS 和 TGS,以及微软扩展的两个认证模块 S4U 和 PAC。 常见的基于 Kerberos 协议攻击的方法如下图所示: 60

0x01 Kerberos 关键词

  • 域控制器(Domain Controller,DC):在域中至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样。
  • 帐户数据库(Account Database,AD):一个类似于 Windows 本机 SAM 的数据库,存储了域内所有网络对象的凭证,也存储所有 Client 的白名单,在白名单中的 Client 才可以申请到 TGT。
  • 密钥分发中心(Key Distribution Center,KDC):KDC 维护着域中所有安全主体(SecurityPrincipal)账户信息数据库,负责管理票据、认证票据、分发票据,在 Windows 域环境中,KDC 的角色由 DC 承担。
  • 身份验证服务(Authentication Service,AS):用于生成 TGT 的服务。
  • 票据发放服务(Ticket Granting Service,TGS):用于生成某个服务的 ticket
  • 认证票据(Ticket Granting Ticket,TGT):可以理解为入场券,通过入场券能够获得票据,是一种临时凭证的存在。
  • 票据(Ticket):网络对象互相访问的凭证。
  • Session Key:AS 生成的随机会话密钥。
  • Server Session Key:TGS 生成的随机会话密钥。
  • krbtgt 账户:每个域控制器都有一个 krbtgt 的用户账户,是 KDC 的服务账户,用来创建票据授予服务(TGS)加密的密钥。

0x02 Kerberos 认证过程

认证的大致过程:

more...

JNDI 注入

0x00 JDNI

JNDI(Java Naming and Directory Interface) 是 Java 提供的 Java 命名和目录接口

JNDI 可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA

more...

1 of 18 Next Page