GNU/Linux >> Linux の 問題 >  >> Linux

Linuxシステム管理者:偶発的なセキュリティリスクを回避するためのncatの能力を理解する

ncat コマンドはnmapスイートの一部であり、そのために特別に作成されました。確かにncat 有名なスイスアーミーナイフと同じくらい多くの用途がありますが、誤って使用された場合や悪意のある攻撃者によって使用された場合も同様に危険です。その強みの1つは、 ncat クライアントとサーバーの両方にすることができます。この記事では、その関係の1つの側面に焦点を当てます。 ncatでリスニングbashシェルを開く方法を紹介します ncatで誰でもアクセスできる クライアントとして。私の記事「Linuxのトラブルシューティング:ncatを使用したTCPリスナーのセットアップ」では、 ncatをセットアップする方法について説明します。 特定のポートでリッスンするリスナーまたはサーバーとして。この例も似ていますが、 ncatの威力に感動すると思います。 あなたにあげる。それはまたあなたを怖がらせるはずです—たくさん。

ncatのインストール

/ usr / binでシステムを確認してください 最初に、 ncatをインストールする必要があるかどうかを確認します 。通常、Red HatEnterpriseLinuxベースのディストリビューションに含まれています。インストールする必要がある場合、パッケージ名は nmap-ncatです。 。 ncatをインストールすることもできます 単独で、または nmapをインストールします およびnmap-ncat パッケージは依存関係としてインストールされます。

ncatを使用

ncatを発行しないでください 特にこの記事の例では、rootとしてのコマンド。そうすることで、誰でも認証なしでシステムにrootアクセスできるようになります。すべてのユーザーがncatを発行できます コマンド。これは、その機能の1つであり、危険の1つでもあります。サービスアカウントを作成し、 ncatを使用することをお勧めします そのアカウントを使用します。私を信じてください。サービスアカウントに対する賛否両論を聞いたことがありますが、 ncatが表示されたら 実際には、サービスアカウントを使用してやり取りすることをお勧めします。

bashシェルを配信する

これは、 ncat を使用することの楽しい(そして危険な)部分です。 。ユーザーを新しいサービスアカウントに切り替えます。私の名前は恥ずかしがり屋です 。

[ken@server1 ~] $ su - bashful
Password: 
[bashful@server1 ~] $

ユーザーアカウントを切り替えたので、次はそのシェルを開きます。これは、ほとんどインタラクティブなシェルを介して、システムへの認証されていないアクセスを提供します。接続すると、「ほとんど」インタラクティブとはどういう意味かがわかります。この次のコマンドはncatを使用します TCPポートでリッスンするbashシェルを実行します。この例では、server1(192.168.1.50)のポート9922を使用しています。 -l <​​/ code> オプションはリスニングポートを設定します。 -k オプションは、ソケットを維持するキープアライブフラグです。 -kを発行しない場合 オプションを選択すると、セッションを切断した後にソケットが停止し、他の接続を確立できなくなります。

[bashful@server1 ~] $ ncat -e "/bin/bash" -l 9922 -k &

-e オプションは、コマンドを引用符で囲んで実行します。この場合は、bashシェル( / bin / bash )です。 )。アンパサンドを使用しています( )プロンプトを解放して ncatを配置するコマンドの後に リスナーをバックグラウンドモードにします。 を使用しない場合 、すると、端末が「ハング」し、端末と対話できなくなります。それが問題にならない場合は、そのままにしておきます。

netstatを発行する コマンドは、リスナーが所定の位置にあることを示します。

[bashful@server1 ~]$ netstat -an |grep 9922
tcp        0      0 0.0.0.0:9922            0.0.0.0:*               LISTEN     
tcp6       0      0 :::9922                 :::*                    LISTEN     
[bashful@server1 ~]$

リモートシステムからリスニングポートに接続するには、ホストベースのファイアウォールでポート9922の例外を開く必要もあります。

[ken@server1 ~]$ sudo firewall-cmd --add-port=9922/tcp
success

ここにフェイルセーフがありますか?アカウントとsudoを使用して作成する必要があったのはファイアウォールの例外です 。ホストベースのファイアウォールまたはIPTablesを実行している場合(そして実行している方がよい場合)、このサービスはそのポートを許可するまで機能しません。つまり、通常のユーザーは管理者アクセスなしでこれを機能させることはできません。そうしないと、ncatの教育を受けたユーザーがいたるところにポートを開いて、その過程であなたを夢中にさせることになります。あなたが持っているであろうセキュリティの問題は言うまでもありません。私は逸脱します。

リモートシステムからシェルにアクセスする

これで、ポート9922のリモートシステムからbashシェルにアクセスできます。

[ken@server2 ~]$ ncat 192.168.1.50 9922

server2から 、 ncatを発行します server1のターゲットIPアドレスを使用したコマンド 接続すると何も起こらないので、端末がハングしているように見えるので、信じてしまうかもしれません。しかし、実際に起こっていることは、rawソケットと通信しているため、プロンプトが表示されないことです。 whoを発行して証明します コマンド。

[ken@server2 ~]$ ncat 192.168.1.50 9922
who
ken    pts/0        2020-08-26 13:39 (server2)

ユーザーが恥ずかしがり屋にしたい任意のコマンドを発行できます にアクセスできます。 rootアクセスを必要とするコマンドを発行した場合、応答が表示されない可能性があります。端末は「ハング」状態のままであるように見えます。応答は実際にはserver1の端末に表示されます 。たとえば、次のコマンドを発行した場合:

firewall-cmd --list-all

server2には何も表示されません の画面。 server1 の画面には、次のように表示されます。

[bashful@server1 ~]$ Authorization failed.
    Make sure polkit agent is running or run the application as superuser.

server2から切断するには の秘密のシェル、 Ctrl + Cを発行します 組み合わせとローカルプロンプトが返されます。

職場でこれを試さないでください

楽しみのために、またはあなたが私を信じていない場合は、現在の ncatを殺してください サービスアカウントを使用して、またはルートとして処理します。次に、rootユーザーと同じコマンドを再発行して、そのbashシェルをrootとして実行します。リモートシステムから再度接続し、そのファイアウォールコマンドを再発行します。今回は結果が表示されます。 rootとして任意のコマンドを発行できるため、このタイプのサービスをrootユーザーとして設定する必要はありません。

そして今、あなたは ncatを使用することの本当の危険性を理解しています ルートとして。悪意のある攻撃者は、ポートスキャンで見逃された秘密のポートにそのようなシェルを設定し、認証なしで完全なルートアクセス権を持ちます。

まとめ

非常に有用で潜在的に非常に危険なncat コマンドはあなたの親友であり、あなたの最悪の敵です。小屋の他のすべてのツールと同様に、それはあなたがそれを与えること以外の意図はありません。 ncatを勉強する必要があります コマンド、その使用法、および環境での制限。 ncatを殺すことを忘れないでください 処理が終了したら継続的に実行したくないプロセスを実行し、そのアクセスを許可するファイアウォール例外を削除します。また、大きな力には、物事を本当に台無しにする能力が伴うことを忘れないでください。

[システム管理者のスキルをテストしたいですか?今日、スキル評価を受けてください。 ]


Linux
  1. LinuxでSSHポートを変更する方法

  2. Linuxシステム管理者:偶発的なセキュリティリスクを回避するためのncatの能力を理解する

  3. NcatLinuxコマンド

  1. Linux – Linuxへのログインを理解していますか?

  2. Linux – Raspberrypiシリアルポート?

  3. Linuxでのポートの使用を確認する

  1. Linuxでncatを使用してポートリダイレクトを設定する

  2. Linux USB:電源をオン/オフしますか?

  3. Linux ネットワーク ポートの枯渇