로컬 사용자 계정의 생성 날짜를 찾는 방법은 무엇입니까?


8

로컬 사용자 계정의 생성 날짜를 원합니다 (중요한 경우 Win 7). 나는 다음 WMI 객체 (그리고 구글도 물론)를 보았다.

Win32_UserAccount Win32_NetworkLoginProfile

에서 반환 된 객체 NetworkLoginProfile에는 마지막 로그인 시간이 있지만 생성 날짜는 없습니다. Date Created프로필 폴더 의 속성을 확인하면 계정 자체가 아니라 폴더 가 만들어진 날짜 만 제공 됩니다.


2
채팅에서 추가하려면 : 레지스트리 작성 날짜에 사용자 하이브를 볼 수 있지만 이는 계정 작성 날짜가 아니라 첫 번째 로그인을 기반으로합니다.
TheCleaner

답변:


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유틸리티에서 멀어지지 않았으며 , 여기서 문서화되지 않은 SAM 구조에 대한 정보를 찾기 시작했습니다.


귀하의 아이디어가 흥미롭고 귀하의 뉴스 레터를 구독하고 싶습니다. 이 도구를 사용하여 직접 시도해보십시오. 당신은, 퍼 치언 스, 내가 그 목적을 달성 할 수있는 어떤 연관성을 가지고 있는가? (Damn you markdown!)
HopelessN00b

위의 리그 리퍼 프로젝트 링크입니다. 개인적으로 사용하지는 않았지만 다루기 쉬운 것으로 보입니다. 라이브 CD를 부팅하는 대신 Perl 환경을 설치하여 리그 리퍼를 실행하려는 경우 지금 Kali Linux에 포함 된 것 같습니다 ( bugs.kali.org/print_bug_page.php?bug_id=246 ). 분명히이 도구들에 관한 책이있었습니다. 비용이 많이 듭니다 : amazon.com/Windows-Registry-Forensics-Advanced-Forensic/dp/… 어느 시점에서 이러한 도구를 가지고 놀아야 할 것 같습니다.
Evan Anderson

나는 에반 리처드 뮬러에게 사과를 빚을 것 같아요)
charleswj81을

나는 도구를 사용해 보지 않았다. 날짜가 채워지지 않는다는 것을 알고 있습니까?
Evan Anderson

아래에서 내 답변을 아직 보았는지 확실하지 않지만 "생성 일"이라고하는 필드는 실제로 "비밀번호가 마지막으로 변경되었습니다"이며 이는 첫 번째 계정 생성 후 비밀번호가 변경 될 때까지 동일한 값입니다.
charleswj81

3

실제로 알 수있는 유일한 방법 은 계정을 만들 때 계산 관리자에서 계정 관리 감사를 활성화하는 것 입니다. 그러면 생성 날짜의 이벤트 로그에 EventID 4720이 표시됩니다. (이 기사는 Active Directory라고하지만 로컬 계정에도 동일하게 적용됩니다. 확인했습니다.)

그렇지 않으면 사용자의 레지스트리 하이브, ntuser.dat파일, 사용자 프로필 폴더 등에서 생성 날짜를 확인하는 것이 가장 가깝지만 주석에서 언급했듯이 사용자의 첫 로그온과 관련하여 정확합니다. 만들어집니다.

불행히도, 이것은 "로그를 기록하지 않으면 해당 정보가 존재하지 않는"경우입니다.


1

생성 시간을 추출하고 구문 분석하기 위해 POC PowerShell 스크립트를 제공하려고했지만 chntpw논리가 잘못 되었음을 깨달았습니다 . 생성 시간을 호출하는 값은 실제로 비밀번호 마지막 설정 시간이지만이 값은 초기 계정 생성시 동일합니다. SAM에 대한 자세한 설명은 여기 를 참조 하십시오 .

에반의 두 번째 링크는 그렇다 samparse. 실제로 보면 효과가 있습니다. 소스를 여기 에서 보면 99 행 :

$c_date = $create->get_timestamp();

get_timestampPerl 's에서 호출 하는 것을 볼 수 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
이것은 어떻게 관련이 있습니까? 질문을 읽었습니까?
Sven

-5

내 컴퓨터를 통해

C : \ Users 및 로컬 컴퓨터에 모든 사용자 계정이 표시됩니다. 적절한 사용자 계정을 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하면 생성 된 날짜가 표시됩니다. 이는 사용자 계정 생성과 동일해야합니다

내 2 센트 만


2
-1-프로필 디렉토리가 생성 된 시점을 보여줍니다. 계정을 만든 후 언제라도 프로필 디렉토리를 삭제하고 다시 만들 수 있기 때문에 언제 계정을 만들 었는지 알 수 없습니다.
Evan Anderson

가능하지만 99 %의 시간이 정확할 것입니다. 대부분의 경우 충분합니다
Kevin

나는 항상 단순하게 유지하라는 말을 들었습니다 ... 우리 둘 다 같은 답을 얻는 것처럼 보입니다. 프로그램을 작성해야했고, 나는 당신 앞에서 이미 사용 가능한 데이터를 가져
Kevin

2
미안 케빈,이 특정 솔루션으로 거의 자르지 않습니다. 특히, 로그인 시간을 허용하고 공간을 낭비하지 않기 위해 프로파일 폴더를 정기적으로 삭제해야하는 실험실의 컴퓨터에서이 작업을 수행해야했기 때문에이 솔루션은 그 날짜가 단지 그럴듯 해 보이지 않습니다. 사용자 프로필 생성 날짜가 아닌 폴더 생성 날짜
MDMoore313

1
@Kevin "간단하게 유지"대답은 내 것입니다. 즉, 사용자의 레지스트리 하이브, ntuser.dat 파일 또는 사용자 프로필 폴더를 만들 수는 있지만 계정을 만들기 전에 감사를 사용하지 않으면 수행 할 수 없습니다. 근사치. 복잡한 대답은 실제로 놀랍게도 EvanAnderson 's입니다.
HopelessN00b
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.