【Windows】パスワードを忘れてしまってログインできないとき

こちらのサイトを参考に。
http://www.atmarkit.co.jp/ait/articles/1312/06/news055.html

どうやら、「簡単操作ツール」をコマンドプロンプトに偽装して、新規ユーザを作成しそれでログインするみたい。

物理マシンで用意するのはちょっと面倒なので、Hyper-V上にWindows10をインストールして、うっかりパスワードを忘れちゃったというていでやっていこうと思います。

まず、ブートの順番をWindows10のISOファイルから起動するように変更(実際のパソコンでやる場合、BIOSからDVDドライブだったり、USBドライブを上位にもっていく)

起動する

「コンピューターを修復する」を選択

「トラブルシューティング」を選択

「コマンドプロンプト」を選択

以下コマンドを順次入力

再帰動して、Windowsログイン画面を表示させ、右下の「簡単操作センター」を選択

おー!コマンドプロンプトが起動した!

以下コマンドで対象ユーザのパスワードをリセットすると、ログインできるようになる!

whoamiを見てみると、systemユーザー権限で起動しているんだね。
なので、Administrator権限を付与したユーザーを新しく作成することもできるし、まぁなんでもできるよね。原理的にはわかっていたけど、いざやってみると新たな発見があるので勉強になるね。

なので、こういう破壊攻撃もできるね。ちなみに、実行後は起動してこなかった。

【ActiveDirectory】NetBIOSドメインとDNSドメインの違い

今日はActiveDirectoryのお勉強をする。

「test.local」というActiveDirectoryのドメインを例に考えてみる。
「test」と「test.local」は異なるもの。「test」は、NetBIOSドメイン名で、「test.local」はDNSドメイン名にあたるよ

ドメイン参加させるときに、「test」でも「test.local」でも、どちらでもドメイン参加できることがほとんどだと思う。
なぜなら、「test」はブロードキャストでの名前解決になるため、同一セグメントにADサーバがあれば、成功する。
一方で、「test.local」は、DNSサーバをADサーバに指定していれば、ADサーバ自身が名前解決をして、成功する。

ドメインの種類 名前解決の方法
test NetBIOSドメイン名 ブロードキャスト、Imhosts、WINS
test.local DNSドメイン名 DNS、hosts

結果、どっちでもいいんじゃね。と思われがちだけど、そうでもない。

「test.local」を入力して、ドメイン参加すべきなんだね。
なぜならば、ActiveDirectoryでは、すべてのコンピュータがDNSを利用して名前解決をして、ドメインを探すことができることが前提としているから。「test.local」でドメイン参加できるということは、つまりDNSによる名前解決のテストにもなっているんだね。

「「test.local」を入れて失敗した。「test」を入れたら成功した。」というパターンがあったとする。
これはとてもまずいことなんだね。DNSでの名前解決ができないと、Kerberos認証を使うことができないため、後々様々なトラブルを引き起こしてしまう可能性があるんだね。

逆パターンはOK。DNSでの名前解決成功という前提条件をクリアしているからだね。

【Linux】ApacehBenchを使ってみる

ApacehBenchでの負荷テストをやったので、忘れないうちに覚えておかないといけないことはメモっておこうね。

-nが合計リクエスト数、-cが平行する処理数。なので、以下の場合100リクエストを10列並行して投げる。

FailedRequestが0であれば、処理しれきれていること。
だんだん、並列数、リクエスト数を増やしていき、FailedRequestが発生してきたタイミングが現状での限界。
なので、ミドルウェアのエラーログやアプリケーションログを見始める必要があるよ。

ちなみに、1番最初のリクエストで取得したサイズをそれ以降のリクエストを照合し、サイズが同じならComplete、違った場合Failedとなるらしい。
なので、リクエストごとにサイズが変化するページをテストする場合は、サーバ内のアクセスログがすべて200で処理されていることを確認する必要があるみたい。

その他にも、
・httpdをインストールすれば、バンドルされてる
・「https」は非対応?
・abコマンドを実行するマシンのスペックにも左右される
・ネットワーク的に近いマシンから実行するほうが、障害となる要因がすくないので、より現実的なテストになる(と思う)
・Windows用のApacehBenchはとてつもなく遅い気がするので、全然並列してくれていない(が、WSLからなら普通に早かった)
・社内NWからとかは怒られちゃうからやめようね

このようなメッセージが出力されるときは、プロセスがオープンできるファイルディスクリプタの上限にあたってしまっているということ。
上限まできているのは、abコマンドを実行しているマシン。相手先ではないよ。

なので、上限をulimitコマンドで増やしてあげる。

【Hyper-V】仮想マシンの自動ライセンス認証(AVMA)

Hyper-V上で動作する仮想マシンは自動ライセンス認証(AVMA:Automatic Virtual Machine Actication)と呼ばれる機能で、自動的にライセンス認証される。
Hyper-VホストがWindows Server 2016 Datacenterエディションで、仮想マシンのゲストOSがWindows Server 2012 R2以降であれば、利用できる。
AVMAはマイクロソフトや社内ライセンスサーバの代わりに、Hyper-VホストがゲストOSのライセンス認証を行うため、仮想マシンごとのライセンス認証を行う必要がない。
また、仮想マシンのネットワーク接続も不要。
AVMAを使用するには、仮想マシンのゲストOSインストール時に、次の固有ライセンスキーを入力する必要がある。
固有ライセンスキーが割り当たったゲストOSは、再起動または7日ごとにHyper-Vホストでの自動ライセンス認証が行われる。

エディション キー
Datacenter TMJ3Y-NTRTM-FJYXT-T22BY-CWG3J
Standard C3RCX-M6NRP-6CXC9-TW2F2-4RHYD
Essentials B4YNW-62DX9-W8V6M-82649-MHBKQ

【Windows】制限されている社給WindowsPCを快適に使う方法

社給パソコンはWindowsマシンが大半で、かつActiveDirectoryドメインに参加していると思う。大きい企業だったり、セキュリティに小うるさい会社だと社給パソコンを使わざるを得ない状況があるよね。
管理者はガシガシに固めているつもりでも割と抜け穴があるのがWindows設計の難しいところかもしれない。
(今は社給パソコンないけど)特定の設定を変えることで快適に社給パソコンライフを送れるかもしれない。
悪用はダメだよ。とはいっても、管理者権限を使えればどんな設定も変更できるはず。あとはモラルの問題ではあるけども。

・コマンドプロンプト/Powershellが起動できるか
グループポリシーで起動を抑止するポリシーが当てられているかもしれないのでチェックしよう
もし適用されている場合、特定のレジストリキーを削除することでグループポリシーを無力化することができるけど、そのキーはPoliciesという管理者権限がないと削除できないところにある。

ちなみに削除すべきキーはこちら

・レジストリエディタが起動できるか
こちらもグループポリシーで抑止されている可能性がある。
対処すべきグループポリシーを見つけても、レジストリキーを削除できないと意味がない。
グループポリシーに存在しないポリシーは「グループポリシーの基本設定」というのを使って、レジストリを直接配るという設定があるんだけど、HKCU配下に対し指定している場合、ユーザ権限でレジストリの削除ができるよ。

・バッチファイルが実行できるか
グループポリシーで抑止することができるけど、そんなことする設計は見たことがない。
なぜならば、抑止してしまうと管理者が配布するスタートアップなどで使われるバッチファイルを実行することができないからなんだね。
もしコマンドプロンプトが実行できなくても、バッチファイルにコマンドを羅列することで実行できるんだね。
まずは、「gpresult /h gpresult.html」を実行し、どんなグループポリシーが適用されているかチェックしてみよう!ここからヒントを探し出そう。

・インターネットへのアクセスはできるか
これはできないと仕事にならないからできないことはないと思う。
インターネットへアクセスできるということはアウトバウンドの80と443ポートは空いているということ。
つまり・・・(下へ続く)

・開発ツールなどは自由にインストールできるか
ターミナルソフトをインストールすることで、sshで外部サーバへ接続することができる。
たとえ22ポートで外にでられなくても、外部サーバのsshを80で待ち受けることで、接続ができてしまうんだね。
ということは、社給PCから外部サーバへローカルポートフォワード、自宅パソコンから外部サーバへRDP(3389)をリモートポートフォワードすることで自宅パソコンへ接続することができるんだね。
つまりそういうことだね。
sshの暗号化されたトンネル内の通信であるため、仮にパケットを眺められてもどこへアクセスしているかは分かるだろうけど、内容まではわからない。
確かWindows10の2018FallUpdateでsshが標準で搭載されたはずなので、最悪インストール禁止といわれても回避できるでしょう。

・シンクラ端末
とあるシンクラ端末はIE起動→VPNセッションを張る→VDI端末へリモートデスクトップというものがあった。
IEの起動とシャットダウンしかできないようにしてる設計なんだけど、IEを起動できるということは「ファイル」-「ファイルを開く」-「C:\windows\system32\cmd.exe」とすることで、コマンドプロンプトが実行できてしまうかもしれない。
タスクマネージャーも開けば、エクスプローラへのアクセスができるので、そこから同じ要領でできちゃうかも。

ちょっと前から書きたいと思っていて、やっとかけました!
快適な社給PCライフを(^^)

【Windows】WindowsServer2016でデータ重複除去機能を試してみる

データ重複除去機能は、
・データの正確性、整合性を損なうことなく重複を見つけて除去する
・ファイルを可変サイズのチャンク(32-128KB)に分割し、重複するチャンクを除去し、1つだけ残されたチャンクの参照になる
・システムドライブは設定不可能
・原理上、ファイルAというものが2GBでそれを単純に同一ドライブ内でコピーしたら、通常であれば4GB、重複除去設定をすれば2GBということ(だと思う)

サーバーマネージャーからインストールするだけ。

試す対象はHドライブ。とりあえず適当な4GB程度のISOファイルを10個くらいコピってみた。

サーバーマネージャーの「ファイルサービスと記憶域サービス」-「ボリューム」-「データ重複除去の構成」を選択

「汎用ファイルサーバー」を選択し、日数を「0」にして、「OK」。
※日数「0」だと、即時実行

もちろん、Powershellでの実行をできる

結果発表。3TBで12時間以上はかかっていたと思う。
19%も重複があったみたいで、2100GB中の300GB近く容量の空きができた。

【Azure】RecoverServicesコンテナを使ってファイルバックアップ

Azureのバックアップ機能であるRecoverServicesコンテナにファイルバックアップをしてみる。
オンプレというか自宅のWindowsServer2016にAzure Recover Services Agentをインストールして、そこからAzureへバックアップするよ。
システム状態だったり、ドライブ丸ごとVSSバックアップもできるみたいだから、標準のWindows ServerバックアップのAzure版といった感じな気がした。

Azure上で「Recovery Servicesコンテナ」を選択し、バックアップ用コンテナを作る


「Recovery Services Agent」と資格情報をダウンロードする

「Azure Recovery Services Agent」をウィザードに従ってダウンロードしてきたインストーラーを起動して、インストール開始







インストールが完了したら、「バックアップのスケジュール」を選択し、対象ドライブを選択する








スケジュール登録が完了したら、「今すぐバックアップ」を選択し、バックアップを実行する


バックアップが完了したら、「データの回復」を選択することでバックアップしたフォルダをマウントできる。マウントした状態から中のファイルを取り出してリストアをする。





【Linux】1つのターミナル内で複数ターミナルを操作できるtmux

最近までしらなかったけど、こんなに便器なソフトがあるんですね。
・ターミナル上でターミナルを起動するから、セッションが切れても処理が続行
・めちゃくちゃ機能が豊富
・セッションを保存できるので、再接続時に作業をそのまま続行できる

viのイメージと近くて、コンソール操作モードとコマンドモードを行き来する感じ。
コマンドモードへは「Ctrl+B」で移行する。tmux自体を抜けるときは「Ctrl+D」で復帰は「fg」。
初心者のぼくでも便利に扱うことができる最低限覚えておくと便利なコマンドをご紹介しますネ。

・セッション開始

・セッション一覧

・作業中セッションを開始

・コマンドモード「Ctrl+B」になってから

キー操作 説明
? ヘルプ
: コマンド入力モード
$ セッション名変更
下方向に画面分割
% 右方向に画面分割
:set synchronize-panel on ブロードキャスト操作ON
:set synchronize-panel off ブロードキャスト操作OFF
矢印キー ペイン移動
{ 操作対象ペイン閲覧
スペース ペイン整列
z 操作対象ペインの最大化(戻るのも同じ)
{ 前方向ペインと入れ替え
後方向ペインと入れ替え

いままで、複数コンソールを1つ1つ立ち上げてたけど、もうそんなことはしない!

【Windows】NanoServerをインストールしてみた

勉強がてらにNanoServerをインストールしてみました。
NanoServerはWindowsServer2016からサポートされたリモート管理サービスというのでs、ディスク容量やメモリなどを極限まで軽くしたもの。
ServerCoreよりも軽量。
クラウドやコンテナ環境での利用を想定して作られているみたい。

主な特徴
・起動停止が高速
・適用すべき更新プログラムが少ない
・GUI管理ツールからの操作はできない
・64ビットアプリのみサポート
・ドメインコントローラにはなれない
・グループポリシーは適用されない
・プロダクトキーでのライセンス認証は不要
・ローカルからの操作は最低限のものしかないので、リモートからの操作が基本

WindowsServer2016のISOイメージ内の「NanoServerImageGenerator」をローカルにコピー

Hyper-Vから新規仮想マシンを作成し、「既存のハードディスクを選択」からコマンドで作成したvhdxを指定して起動する

固定IPアドレスを設定でとりあえず、インストールはOK

次にIISをインストールしてみる。
NanoServerへのパッケージインストールは仮想ハードディスクに対して行う。なので、直接NanoServerにログインしてインストールするとかそういうものではないみたい。

ブラウザからアクセスしてみるとWelcomeページがちゃんと表示された!

【Azure】Azure SQL Server使ってみる

仕事でAzureSQLServerを使うことになったので、お勉強。
・PaaS
・クラウド用にカスタムされたSQL Server
・3重化されており、フェイルオーバー機能がある
・AzureADユーザでの認証ができる

ホーム画面から、「SQL Database」を選ぶ

まず、Databaseを作成するSQLServerを作る。

一番安いBasicプランでいこう

デプロイが完了するとこんな感じ。
SQL Serverとそれに格納されるデータベースが1リソースとして作成される。

とりあえずこれで外部からアクセスできるようになったから、SQL Management Studioで接続してみる。

デフォルトだと外部からのアクセスができないようにファイアウォール設定がされている。
初回接続時には解除してくれる。

接続するとこんな感じ

テーブルを作って、なんか適当なデータを入れてみる

Azure上のDatabaseリソースの「Query editor (preview)」から接続し、SELECTしてみるとちゃんと反映されているネ!