|
이 댓글 접기 이 댓글에 대한 링크 복사
UAC에는 토큰에서 제거할 권한과 거부할 그룹이 정의되어 있습니다. CreateRestrictedToken LUA_TOKEN이 올바르지 않은 경우 다른 플래그를 추가하여 사람들이 쉽게 하위 프로세스의 권한을 낮추도록 하는 것은 어떨까요?
이 댓글 접기 이 댓글에 대한 링크 복사
흠. 모든 것이 의도한 대로 작동하려면 사용자의 승격되지 않은 토큰처럼 보이는 토큰을 만드는 것만으로는 충분하지 않다고 생각합니다. 실제로 로그온 중에 생성된 승격되지 않은 특정 토큰을 사용해야 합니다.
승격된 토큰이 있는 경우 GetTokenInformation 및 TokenLinkedToken 클래스를 사용하여 승격되지 않은 관련 토큰을 쿼리할 수 있지만 이것이 제대로 작동하려면 SeTcbPrivilege가 필요할 수 있습니다. 즉, 로컬 시스템으로 실행해야 합니다. (승격되지 않은 토큰에서 사용 가능한 상승된 토큰을 얻으려면 SeTcbPrivilege가 필요하다는 것을 알고 있습니다. 그 반대의 경우는 잘 모르겠습니다.)
대부분의 경우에는 높이를 낮출 필요가 없도록 다시 디자인하는 것이 더 나을 것이라고 생각합니다.
이 댓글 접기 이 댓글에 대한 링크 복사
나는 그것이 다른 문제라고 생각한다.
개발자 모드가 개발자 PC에서 이를 허용하기 전에 계정이 관리자가 아닌 경우 사용자 권한 할당 보안 설정을 사용하여 계정에 대한 심볼릭 링크를 생성하는 기능을 추가해야 했던 것을 기억합니다.
이는 관리자가 심볼릭 링크를 생성할 수 있는 정말 흥미로운 상황으로 끝났습니다. 허용한 경우 UAC가 제한되지 않은 제한된 사용자 계정은 심볼릭 링크를 생성할 수 있지만 UAC가 제한된 사용자 계정은 심볼릭 링크를 생성할 수 있도록 계정을 추가한 경우에도 생성할 수 없습니다.
CreateRestrictedToken은 방금 제거했거나 고정된 권한 및 그룹 목록을 거부 전용으로 설정했습니다.
기억해야 할 또 다른 점은 자신을 제한하는 토큰이 자동으로 제한되는 토큰만큼 좋다는 것입니다. CreateProcessAsUser를 사용하면 자신의 사용자 토큰의 제한된 버전을 사용하여 새 프로세스를 생성할 수 있으며 이는 순전히 사용자의 SID를 비교하여 수행됩니다.
이 댓글 접기 이 댓글에 대한 링크 복사
나는 그것이 사실이라고 생각하지 않습니다. 우선, 직접 만든 토큰은 올바른 네트워크 드라이브 매핑 집합과 연결되지 않습니다.
이 댓글 접기 이 댓글에 대한 링크 복사
– [상승된 프로세스 redux에서 상승되지 않은 프로세스를 시작하려면 어떻게 해야 합니까?]( https://devblogs.microsoft.com/oldnewthing/20190425-00/?p=102443 )
이 댓글 접기 이 댓글에 대한 링크 복사
저는 작업 관리자가 실행 프롬프트에서 권한이 상승되지 않은 명령줄을 실행하는 데 사용하는 범용 "\Microsoft\Windows\Task Manager\Interactive"에 더 관심이 있습니다. 내 앱에서 수동으로 호출하려는 모든 시도를 거부하므로 내 실행 프로그램이 실행 중인 explorer.exe 프로세스를 검색하는 신뢰할 수 없는 방법 없이 승격되지 않은 프로세스를 실행할 수 있도록 복제해야 합니다. 나는 그것이 호출하는 RunTask COM 구성 요소가 작업 매개 변수와 충돌하지 않고 임의의 명령줄을 정확하게 전달할 수 있게 해주는 얇은 래퍼일 뿐이라고 추측합니다. CreateExplorerShellUnelevatedTask로 판단하면 내가 무엇을 놓칠 수 있는지 모르겠습니다.
이 댓글 접기 이 댓글에 대한 링크 복사
제안: 런처가 상승된 단일 프로세스로 실행되는 대신, 두 개의 프로세스가 있어야 합니다. 그 중 하나는 상승되지 않은 상태로 실행되고 다른 하나는 상승된 상태로 실행됩니다. 이렇게 하면 문서화되지 않은 기능에 의존하지 않고 승격되지 않은 프로세스를 훌륭하게 시작할 수 있습니다.
이 댓글 접기 이 댓글에 대한 링크 복사
이제 각 프로세스를 시작하는 방법을 알려주세요.
이 댓글 접기 이 댓글에 대한 링크 복사
일반적으로 승격되지 않은 프로세스는 시작 메뉴에서 시작되고 해당 프로세스는 물론 사용자의 동의를 받아 승격된 프로세스를 시작합니다.
일부 시나리오에서는 사용자가 로그인할 때 승격되지 않은 프로세스가 자동으로 시작되는 것을 선호할 수 있으며 이를 수행하는 방법은 많습니다(예: Run 키에 항목 추가). 일반적으로 사람들이 막히는 부분은 승격된 프로세스를 자체적으로 시작하는 방법이지만 이미 해당 부분이 작동하는 것처럼 들리므로 승격되지 않은 프로세스를 시작하는 이유가 무엇인지 잘 모르겠습니다. 문제.
즉, 아마도 처음에는 옳았을 것입니다. 단일 프로세스를 갖고 작업 스케줄러를 사용하여 하위 프로세스를 시작하는 것이 구조적으로 더 간단할 것입니다. 나는 이것이 특별히 어렵다고 생각하지 않는다.
편집하다
Powershell에서는 다음과 같이 간단할 수 있습니다.
복사
$action = New-ScheduledTaskAction - 'notepad.exe' 실행 Register-ScheduledTask -TaskName '메모장 실행' -Action $action -User $env:username Start-ScheduledTask -TaskName '메모장 실행'
이 댓글 접기 이 댓글에 대한 링크 복사
Explorer가 처음에 어떻게 상승하게 될지 궁금합니다. 사용자가 그것을 종료한 다음 관리자 권한 명령 창에서 다시 시작합니까?
이 댓글 접기 이 댓글에 대한 링크 복사
예전에는 자체 프로세스에서 탐색기 창을 시작하는 방법이 있었고 저는 자주 관리자 권한 탐색기 창을 시작했습니다. 저는 실제로 더 이상 그렇게 하지 않습니다. 모든 이유가 사라졌습니다.
또한 cmd.exe를 셸로 사용하여 이 Windows 10 시스템을 가장 오랫동안 실행했으며 필요할 때만 탐색기를 시작했습니다(엄청난 메모리 낭비지만 이미 그 논의를 했습니다). 실수로 잘못된 cmd.exe 창에서 탐색기를 실행하면 어떤 일이 발생하는지 쉽게 상상할 수 있습니다.
이 댓글 접기 이 댓글에 대한 링크 복사
나는 그러한 작업을 수행하기 위해 관리자 모드에서 탐색기 "교체"를 실행하곤 했습니다. 가끔 유용하게 사용할 수 있는 매우 인기 있는 무료 휴대용 탐색기 클론이 있습니다. (여기서 Microsoft가 아닌 제품을 직접 언급할 수 있는지는 확실하지 않지만 빠른 Bing 검색을 통해 찾을 수 있습니다!)
이 댓글 접기 이 댓글에 대한 링크 복사
마지막으로 그렇게 하고 싶었을 때(슬프게도 이유를 잊어버렸습니다) 관리자 모드에서 메모장을 연 다음 파일 열기 대화 상자에서 원하는 작업을 수행하는 이전 대체 방법을 선택했습니다.
이 댓글 접기 이 댓글에 대한 링크 복사
Explorer 프로세스는 쉘 확장이라고 불리는 수많은 제3의 패트리 플러그인을 호스팅할 수 있습니다. 마우스 오른쪽 버튼 클릭 상황에 맞는 메뉴 항목이나 파일 속성 대화 상자 탭을 생각해 보세요. 이러한 확장으로 인해 Explorer가 응답하지 않거나 CPU를 회전시키거나 RAM을 많이 먹는 등 오작동을 일으킬 수 있습니다. 불만족스러운 사용자는 (상승된) 작업 관리자에서 Explorer를 종료하고 거기에서 다시 시작합니다. 그런 다음 Explorer는 고도를 상속받습니다. 거기에서 다른 모든 프로그램이 상승합니다. 이는 좋지 않습니다.
첫댓글 원문 https://devblogs.microsoft.com/oldnewthing/20220524-00/?p=106682
다음 장, 댓글21 번역으로 연결 https://cafe.daum.net/nicotine02/bbpo/36?svc=cafeapi
다다음장, 댓글4 로 연결 https://cafe.daum.net/nicotine02/bbpo/37?svc=cafeapi