本物の情報を利用した嘘

IT Proの記事によると、「2017年9月19日」にDNSが使えなくなるかもしれないらしい。

決して確実ではないが、DNSSECに用いる鍵の更新の影響で、そういうことが起こり得るんだそうだ。

 

 

こういうニュースが実在することで、攻撃の手口として利用されてしまうのではないか?と懸念している。

例えば以下のような攻撃シナリオだ。

 

続きを読む

PowerShellでNICの情報を収集してみた(改良版)

昨日書いたスクリプトを、一部改良しました。

出力されるテキストファイルは、実行した「Get-Netホニャララ」コマンドレットがそのままファイル名になります。

昨日のスクリプトでは、拡張子「.txt」までの間に長いスペースが発生してしまいますので、ちゃんと「Get-Netホニャララ.txt」となるようにしたのが以下のスクリプトです。

 

 

===============================

Get-Command -name Get-Net* | Format-List name | Out-File .¥1.txt

$1 = Get-Content .¥1.txt

$2 = $1.length -4

$C = 2

While($C -le $2)

{

$A = $1[$C]

$B = -join $A[7..100]

Invoke-Expression $B | Out-File .¥$B.txt

$C = $C +2

}

===============================

 

 

なお、PowerShellで「Get-Netホニャララ」が使えるようになるのは、Windows8 や Windows Server 2012以降です。

 

PowerShellでWindows ファイアウォールを設定してみた

Windows Server 2012 や Windows 8 以降、PowerShell に「NetSecurity」モジュールが追加されたことで、Windows ファイアウォールを設定できるようになりました。

 

 

Windows Server 2012 や Windows 8 に限りませんが、近年の Windows OS は、デフォルトで 外部からの ping に応答しないようになっています。

これは、「Windows ファイアウォール」が有効で、なおかつ 「ICMP の応答を許可する設定」が無効だからです。

応答させるためには、「Windows ファイアウォール」自体を無効化するか、もしくは 「ICMP の応答を許可する設定」を有効化する必要があります。

今回は、後者の設定を PowerShell でやってみます。(IPv4 による通信を想定)

 

 

なお、この設定は GUI「セキュリティが強化された Windows ファイアウォール」において、「ファイルとプリンターの共有(エコー要求 - ICMPv4 受信)」という表示名で存在します。

 

 

まずは、デフォルトの設定が無効であることを確認します。

(Get-NetFirewallRule -name FPS-ICMP4-ERQ-In).Enable

↓2015/11/14 末尾の一文字が欠けていたので修正しました。

(Get-NetFirewallRule -name FPS-ICMP4-ERQ-In).Enabled

この実行結果は「False」となるはずです。

 

 

続いて、この設定を有効化します。

Set-NetFirewallRule -name FPS-ICMP4-ERQ-In -enabled true

これにより、外部からの ping に応答するようになります。

前述の確認用コマンドレットの実行結果も、「True」になるはずです。

(OSの再起動や、ネットワークアダプタの無効化・有効化といった作業は特に必要ありません。)

 

ARP エントリを追加してみよう。

今年も残すところあと一ヶ月となりましたので、IP アドレスと MAC アドレスを紐付ける「ARP テーブル」に、手動でエントリを追加する方法を整理してみました。

どれも CUI です。

少なくとも Windows の機能としては、GUI で行う方法は無いようです。

 

 

 

◆ ARP コマンド

" ARP -s [宛先 IP アドレス] [宛先 MAC アドレス] [登録する NIC の IP アドレス] "

おそらくもっとも古くからある手法ではないでしょうか。

Windows XP SP3 でも、Windows 8.1 Update1 でも使用できることを確認しています。

三つ目のオプション [登録する NIC の IP アドレス] は必須ではありませんが、NIC が複数あるコンピューターでは、このオプションで指定してやらないとどの NIC に登録されるかわかりません。

(どうやら、ipconfig コマンドで一番上に表示される NIC に登録されるようなのですが、確証はありません。)

なお、このコマンドにより設定したエントリは OS をシャットダウンすることで揮発してしまいます。

エントリを恒久的に使用したい場合は、 スタートアップスクリプトとしてOS 起動時に実行する等の方法があります。

 

 

 

◆ netsh コマンド

" netsh interface ipv4 add neighbors [登録する NIC 名] [宛先 IP アドレス] [宛先 MAC アドレス] "

netsh コマンド自体は Windows XP にもありますが、こうやって APR エントリを追加することができるのは Windows Vista 以降です。

[登録する NIC 名] というのは、ipconfig を実行した時に「イーサネット アダプタ XXX:」として表示される「XXX」の部分です。

「ローカル エリア接続」のようにスペースを含んでいる場合は、ダブルクォーテーション記号「"」で前後を括ります。

arp コマンドと最も違うのは、デフォルトでは OS シャットダウン時に揮発しない点でしょう。

あえて揮発させたい場合は、" sotre=active " というオプションを付与します。

 

 

 

◆ New-NetNeighbor コマンドレット

" New-NetNeighbor -InterfaceAlias [登録する NIC 名] -IPAddress [宛先 IP アドレス] -LinkLayerAddress [宛先 MAC アドレス(ハイフン無し)] "

これだけコマンドではなく PowerShell です。

Windows 8 や Windows Server 2012 以降で使えるようになった、「NetTCPIP」モジュールに含まれています。

前述の二つのコマンドと違って、MAC アドレスを二桁ずつハイフン記号「-」で区切ってはいけません。

デフォルトでは OS シャットダウン時に揮発ないので、あえて揮発させたい場合は、" -PolicySotre ActiveStore " というオプションを付与します。

 

 

 

netsh の運命や如何に。

Windows Server 2012 R2 のプレビュー版が、6月中には公開されるそうですね。

ソースは、Microsoft Cloud というMicrosoft社によるツイッターアカウントです。

 

 

Windows Server 2012 では、コマンドプロンプトで " netsh " を実行し、次に " interface " 等を実行した時点で「Windows の将来のバージョンで、TCP/IP の Netsh機能が削除される可能性があります。」と表示されます。そしてPowerShell への移行を促されます。

さて、Windows Server 2012 R2 ではどうなっているでしょうか。

 

 

本当に無くなるのはさらに次のバージョンかもしれませんが、 "netsh" が無くなるとすると、これまで蓄積してきたスクリプト等の資産に少なからぬダメージがあるのではと思います。Windows Server 2008 R2 以降はパケットキャプチャまで出来ますからね。

Windows Server 2003 では OS 自体に標準で付属していたキャプチャツール「 Network Monitor 」が、Windows Server 2008 以降はダウンロードツールになりました。

商用稼働中のサーバーの場合、障害調査のためといえど、パケットキャプチャのためにフリーソフトをインストールすることなど言語道断!なケースもあります。たとえ Microsoft 純正であっても。そんな時には、 "netsh>trace" コマンドが有効な手段となりました。

パケットだけでなくネットワーク関連の様々な情報をまとめて採取出来るので、パケットキャプチャ自体が不要だったとしても、ネットワークの障害調査には有用なコマンドだと思います。

 

 

今のところ、Windows Server 2012 標準のPowershell v3.0 には、パケットキャプチャのコマンドレットは無いようです。Windows Server 2012 R2 には新しいバージョンが搭載されるのでしょうか。あるいは、バージョン自体は同じでモジュールの数が増えるのでしょうか。今から楽しみです。

 

 

ちなみに、Windows Server 2012 の PowerShell で "Get-Wild" と実行すると・・・

何も起こりません。

Windows Server 2012 R2  に期待します。