ローカルユーザーアカウントの作成日を確認するにはどうすればよいですか?


8

ローカルユーザーアカウントの作成日を取得したい(重要な場合はWin 7)。私は次のWMIオブジェクト(そしてもちろんGoogle)を見てきました。

Win32_UserAccount Win32_NetworkLoginProfile

から返されたオブジェクトにNetworkLoginProfileは最終ログイン時刻がありますが、作成日はありません。Date Createdプロファイルフォルダーのプロパティを確認すると、フォルダーが作成された日付が示されるだけで、必ずしもアカウント自体は示されません。


2
チャットから追加するには:レジストリの作成日にユーザーハイブが表示されますが、これはアカウントの作成日ではなく、最初のログインにのみ基づいています。
TheCleaner 2014

回答:


10

データはSAM内にありますが、Microsoftによって公に文書化されているようではなく、それを取得するための公式のAPIが見つかりません。値が各アカウントの "F"レジストリキーに格納されているchntpwユーティリティのソースコードを見るとわかります。ソースコードを止める:

#define USER_F_PATH "\\SAM\\Domains\\Account\\Users\\%08X\\F"

struct user_F {
  ...
  char t_creation[8]; /* Time of account creation */
  ...
}

regripperのフォレンジックプロジェクトは、プラグイン、持っているsamparseアカウントの作成日を報告します。

科学捜査ツールはおそらく望んでいるものではありませんが、Microsoftが容易にしていないようです。


これを調査したところ、Microsoft MVPがアカウント作成データがSAMに保存されていることを知らなかったのは面白いことでした。彼の利益のために、おそらく彼はchntpwユーティリティから離れていないのではないでしょうか。


あなたのアイデアは私に興味をそそられ、私は---ニュースレターを購読---したいと思います。つまり、このツールを使用して自分で試してみる方法を学びます。私、そのために私が利用するかもしれない何らかのつながりがありますか?(あなたは値下げしてください!)
HopelessN00b 14

上記のregripperプロジェクトへのリンクです。個人的には使用していませんが、扱いはかなり簡単そうです。ライブCDを起動するだけでなく、Perl環境をインストールして再グリッパーを実行する場合は、Kali Linuxに含まれているようです(bugs.kali.org/print_bug_page.php?bug_id=246)。どうやらこれらのツールについて書かれた本があった。それは高価に見えます:amazon.com/Windows-Registry-Forensics-Advanced-Forensic/dp/… 私はおそらくこれらのツールをいつか試してみる必要があります-機会がなかっただけです。
エヴァンアンダーソン

エヴァンはリチャード・ミューラーに謝罪を負うかもしれないと思う;)
charleswj81 14

ツールを試してみませんでした。日付が入力されていないことに気付いていますか?
エヴァンアンダーソン

以下の自分の回答をまだ見たかどうかはわかりませんが、「作成日」と呼ばれるフィールドは実際には「パスワードの最終変更」です。これは、最初のアカウント作成後のパスワード変更まで明らかに同じ値です。
charleswj81 14

3

実際に知る唯一の方法は、アカウントの作成時にコンピューティング rでアカウント管理監査を有効にすることです。次に、作成日にイベントログにイベントID 4720が表示されます。(記事ではActive Directoryについて説明していますが、ローカルアカウントにも同じことが当てはまります。確認しました。)

それがなければ、ユーザーのレジストリハイブ、ntuser.datファイル、ユーザープロファイルフォルダーなどで作成日を確認することで最も近い結果を得ることができますが、コメントで述べたように、これはユーザーの最初のログオンに関してのみ正確です。作成されます。

残念ながら、これは「ログに記録しなかった場合、その情報は存在しません」というケースです。


1

作成時間を抽出して解析するためのPOC PowerShellスクリプトを提供しようとしていましたが、chntpwロジックが正しくないことに気付きました。作成時間と呼ばれる値は、実際には最後に設定されたパスワードですが、これらの値は最初のアカウント作成時と同じです。SAMの完全な説明については、ここを参照してください。

samparseしかし、エヴァンの2番目のリンクは、それを正しく理解するかもしれません。実際に見てみると効果があります。ここでソースを見ると、99行目:

$c_date = $create->get_timestamp();

get_timestampPerlからの呼び出しが表示されますParse::Win32Registry。それが実際にキーの最後の書き込み時間であると確信しています。特定のキー(HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>)は対応するRIDキーへのポインターのみを保持しているように見えるため、作成後に変更してはならず、最終書き込み時間は作成時間と同じになります。

さらに組み込みのツールを使い続けたいので、PowerShellを介してその方法を説明する一連のScripting Guyの記事を次に示します。

PowerShellを使用してレジストリの最終変更タイムスタンプにアクセスする

PowerShellレジストリのタイムスタンプコードの再利用

レジストリキーのタイムスタンプを表示するプロキシ関数を作成する

PowerShellを介してレジストリキーのタイムスタンプを活用する


-3

powershellのこのコマンドは、トリックを実行する必要があります。

systeminfo | findstr /C:"Install Date"

1
これはどのように関連していますか?質問を読みましたか?
スヴェン

-5

マイコンピュータから

C:\ Usersをクリックすると、ローカルマシンにリストされているすべてのユーザーアカウントが表示されます。適切なユーザーアカウントを右クリックしてプロパティに移動すると、作成日が表示されます。これは、ユーザーアカウントの作成と同じである必要があります。

ちょうど私の2セント


2
-1-プロファイルディレクトリがいつ作成されたかを示します。アカウントが作成された後はいつでもプロファイルディレクトリを削除して再作成できるため、アカウントがいつ作成されたかはわかりません。
エヴァンアンダーソン

それは可能ですが、99%の確率で正確であり、ほとんどの場合これで十分です
Kevin

私は常にそれをシンプルに保つように言われました...私たち2人はほぼ同じ答えを得るようです、あなたはプログラムを書かなければならなかった、そして私はちょうどあなたの前ですでに利用可能なデータを取った
Kevin

2
ケビンさん、申し訳ありませんが、この特定のソリューションではほとんど効果がありません。具体的には、これはラボのコンピューターで行う必要があり、ログイン時間を受け入れてスペースを無駄にしないために、プロファイルフォルダーを定期的に削除する必要がありました。そのため、このソリューションは決して妥当ではありません。ユーザープロファイルの作成日ではなく、フォルダーの作成日。
MDMoore313 2014

1
@Kevin「単純に保つ」という答えは私のものです。つまり、ユーザーのレジストリハイブ、ntuser.datファイル、またはユーザープロファイルフォルダーの作成によって、近似。複雑な答えは、驚いたことに実際に機能するEvanAndersonの答えです。
HopelessN00b 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.