天天看點

cli4bofs:一款功能強大的BOF檔案運作指令行接口工具

作者:FreeBuf

關于cli4bofs

cli4bofs是一款功能強大的運作指令行接口工具,在該工具的幫助下,廣大研究人員可以在環境之外通過獨立的指令行接口工具運作BOF檔案。

cli4bofs:一款功能強大的BOF檔案運作指令行接口工具

cli4bofs是一個用于運作和維護BOF檔案的多功能工具,支援從目标檔案系統運作任何BOF檔案,而且還可以友善地向其傳遞參數。除此之外,該工具還可以為相關BOF檔案的基本資訊定義簡單的YAML模式,例如描述、源代碼URL、參數和使用示例等。而且cli4bofs還可以友善地幫助我們開發和測試BOF檔案。

功能介紹

該工具能夠使用來完成下列任務:

1、直接在Windows(x86、x64)平台從檔案系統讀取并運作BOF檔案;

2、直接在Linux/UNIX(x86、x64、ARM、AARCH64)平台從檔案系統讀取并運作BOF檔案;

工具安裝

廣大研究人員可以直接通路該項目的【】下載下傳對應作業系統平台的cli4bofs版本:

cli4bofs:一款功能強大的BOF檔案運作指令行接口工具

工具使用

正常指令使用

Usage: ./zig-out/bin/cli4bofs command [options]

 

Commands:

 

help      <COMMAND>  顯示給定指令的幫助資訊

exec      <BOF>        從檔案系統執行給定的BOF檔案

info      <BOF>        顯示BOF描述和使用樣例

usage     <BOF>        檢視調用詳細資訊和參數類型

examples <BOF>        檢視BOF使用樣例

 

General Options:

 

-c, --collection        提供自定義BOF YAML集合

-h, --help             檢視工具幫助資訊           

exec子指令使用

exec子指令允許我們從檔案系統直接執行BOF檔案,還可以使用sizZb(後跟:)字元串作為字首來辨別參數的類型,進而友善我們将參數傳遞給BOF:

Usage: cli4bofs <BOF> [[prefix:]ARGUMENT]...

 

Execute given BOF from filesystem with provided ARGUMENTs.

 

ARGUMENTS:

 

ARGUMENT's data type can be specified using one of following prefix:

short OR s  - 16位有符号整數

int OR i      - 32位有符号整數

str OR z      - 以零結尾的字元串

wstr OR Z  - 以零結尾的寬字元字元串

file OR b      - 特殊類型,後跟檔案路徑,辨別将指針(指向用檔案内容填充的緩沖區)将傳遞給BOF

 

If prefix is ommited then ARGUMENT is treated as a zero-terminated characters string (str / z).           

使用樣例如下:

cli4bofs uname -a

cli4bofs udpScanner 192.168.2.2-10:427

cli4bofs udpScanner z:192.168.2.2-10:427

cli4bofs udpScanner 192.168.2.2-10:427 file:/tmp/udpProbes           

YAML BOF集合

我們可以使用簡單的YAML規則來标記BOF,并對BOF檔案進行定義,下面給出的是一個YAML樣例:

name: "udpScanner"

description: "Universal UDP port sweeper."

author: "Z-Labs"

tags: ['net-recon']

OS: "cross"

header: ['thread', 'zib']

sources:

    - 'https://raw.githubusercontent.com/The-Z-Labs/bof-launcher/main/bofs/src/udpScanner.zig'

usage: '

    udpScanner str:IPSpec[:portSpec] [int:BUF_LEN str:BUF_MEMORY_ADDR]

 

Arguments:

 

    str:IPSpec[:portSpec]    ex: 192.168.0.1; 10.0.0-255.1-254; 192.168.0.1:161,427,10-15

    [int:BUF_LEN]            length of UDP probes buffer

    [str:BUF_MEMORY_ADDR]    pointer to the buffer containing one or more UDP probe(s). One probe per line is allowed.

 

UDP probe syntax (with example):

 

<portSpec> <probeName> <hexadecimal encoded probe data>\n

53,69,135,1761 dnsReq 000010000000000000000000'

 

examples: '

    Scanning provided IP range on most common UDP ports with builtin UDP probes:

 

      udpScanner str:192.168.0.1-32

 

    Scanning only cherry-picked ports (if no builtin UDP probe for the chosen port is available then length and content of the packet payload will be randomly generated:

 

      udpScanner str:192.168.0.1:123,161

      udpScanner str:102.168.1.1-128:53,427,137

      udpScanner str:192.168.0.1:100-200           

UDP探針執行樣例:

udpScanner str:192.168.0.1-32 int:BUF_LEN str:BUF_MEMORY_ADDRESS           

下列指令可以使用cli4bofs工具運作udpScanner(BOF),并運作檔案中的UDP探針:

cli4bofs exec udpScanner 102.168.1.1-4:161,427 file:/tmp/udpPayloads'           

下列指令可以檢視可用的BOF并顯示使用詳情:

$ cli4bofs list

uname

udpScanner

zerologon

arp           

下面給出的是給定BOF的參數定義和使用解釋:

$ cli4bofs usage udpScanner

Usage:

 

    udpScanner str:IPSpec[:portSpec] [int:BUF_LEN str:BUF_MEMORY_ADDR]

 

Arguments:

 

    str:IPSpec[:portSpec]    ex: 192.168.0.1; 10.0.0-255.1-254; 192.168.0.1:161,427,10-15

    [int:BUF_LEN]                UDP探測緩沖區長度

    [str:BUF_MEMORY_ADDR]   指向包含一個或多個UDP探針的緩沖區           

UDP探測語句樣例:

<portSpec> <probeName> <hexadecimal encoded probe data>\n

53,69,135,1761 dnsReq 000010000000000000000000           

許可證協定

本項目的開發與釋出遵循開源許可證協定。

項目位址

cli4bofs:https://github.com/The-Z-Labs/cli4bofs

參考資料

https://github.com/The-Z-Labs/bof-launcher

繼續閱讀