Làm thế nào để bạn chạy CMD.exe trong Tài khoản hệ thống cục bộ?


144

Tôi hiện đang chạy Vista và tôi muốn hoàn thành thủ công các hoạt động tương tự như Dịch vụ Windows của mình. Vì Dịch vụ Windows đang chạy trong Tài khoản Hệ thống cục bộ, tôi muốn mô phỏng hành vi tương tự này. Về cơ bản, tôi muốn chạy CMD.EXE trong Tài khoản hệ thống cục bộ.

Tôi đã tìm thấy thông tin trực tuyến trong đó đề xuất việc xóa CMD.exe bằng lệnh AT Trình lập lịch tác vụ DOS, nhưng tôi nhận được cảnh báo Vista rằng "do cải tiến bảo mật, tác vụ này sẽ chạy vào thời điểm ngoại trừ nhưng không tương tác." Đây là một lệnh mẫu:

AT 12:00 /interactive cmd.exe

Một giải pháp khác đã đề xuất tạo một Dịch vụ Windows thứ cấp thông qua Điều khiển dịch vụ (sc.exe) chỉ khởi chạy CMD.exe.

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

Trong trường hợp này, dịch vụ không khởi động được và dẫn đến thông báo lỗi sau:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

Gợi ý thứ ba là khởi chạy CMD.exe thông qua tác vụ theo lịch trình. Mặc dù bạn có thể chạy các tác vụ theo lịch trình trong các tài khoản khác nhau, tôi không tin Tài khoản hệ thống cục bộ là một trong số đó.

Tôi cũng đã thử sử dụng Runas, nhưng nghĩ rằng tôi đang gặp phải hạn chế tương tự như khi tìm thấy một tác vụ theo lịch trình.

Cho đến nay, mỗi nỗ lực của tôi đã kết thúc trong thất bại. Bất kỳ đề xuất?

Câu trả lời:


221

Mặc dù tôi chưa thử nghiệm cá nhân nhưng tôi có lý do chính đáng để tin rằng giải pháp AT NHÀ đã nêu ở trên sẽ hoạt động cho XP, 2000 và Server 2003. Theo thử nghiệm của tôi và Bryant, chúng tôi đã xác định rằng cách tiếp cận tương tự không hoạt động với Vista hoặc Windows Server 2008 - rất có thể là do bảo mật được thêm vào và công tắc / tương tác bị phản đối.

Tuy nhiên, tôi đã xem qua bài viết này chứng minh việc sử dụng PSTools từ SysIternals (được Microsoft mua lại vào tháng 7 năm 2006.) Tôi đã khởi chạy dòng lệnh thông qua sau đây và đột nhiên tôi đang chạy dưới Tài khoản quản trị viên cục bộ như ma thuật:

psexec -i -s cmd.exe

PSTools hoạt động tốt. Đó là một bộ công cụ gọn nhẹ, được ghi chép đầy đủ, cung cấp một giải pháp thích hợp cho vấn đề của tôi.

Rất cám ơn những người đã đề nghị giúp đỡ.


11
Tôi thích cái này tốt hơn khi -dđược thêm vào, để tôi có thể tiếp tục sử dụng bảng điều khiển mà tôi đã khởi chạy nó từ đó.
SamB

1
Tôi mới dùng thử trên Vista x64 và nhận được "Dịch vụ PsExec đang chạy trên ... là một phiên bản không tương thích." Đã thử trực tiếp từ \\ live.sysi INTERNals.com \ tools \ psexec và nhị phân mới nhất. Dường như không có phiên bản x64
ZXX

52
  1. Tải xuống psexec.exe từ Sysiternals .
  2. Đặt nó vào ổ C: \ của bạn.
  3. Đăng nhập như một người dùng tiêu chuẩn hoặc quản trị viên và sử dụng lệnh sau : cd \. Điều này đặt bạn vào thư mục gốc của ổ đĩa của bạn, nơi psexec được đặt.
  4. Sử dụng lệnh sau: psexec -i -s cmd.exetrong đó -i dành cho tương tác và -s dành cho tài khoản hệ thống.
  5. Khi lệnh hoàn thành, một vỏ cmd sẽ được khởi chạy. Loại whoami; nó sẽ nói "hệ thống"
  6. Mở taskmanager. Giết explorer.exe.
  7. Từ một loại vỏ lệnh nâng cao start explorer.exe.
  8. Khi explorer được khởi chạy, hãy chú ý tên "system" trong thanh menu start. Bây giờ bạn có thể xóa một số tệp trong thư mục system32 mà với tư cách là quản trị viên, bạn không thể xóa hoặc là quản trị viên, bạn sẽ phải cố gắng hết sức để thay đổi quyền để xóa các tệp đó.

Người dùng cố gắng đổi tên hoặc xóa các tệp hệ thống trong bất kỳ thư mục được bảo vệ nào của windows nên biết rằng tất cả các tệp windows được bảo vệ bởi DACLS trong khi đổi tên tệp bạn phải thay đổi chủ sở hữu và thay thế TrustedInstaller sở hữu tệp và tạo bất kỳ người dùng nào giống như người dùng Thuộc nhóm quản trị viên với tư cách là chủ sở hữu của tệp, sau đó thử đổi tên tệp sau khi thay đổi quyền, nó sẽ hoạt động và trong khi bạn đang chạy windows explorer với quyền riêng tư, bạn hơi bị hạn chế về quyền truy cập Mạng vì lý do bảo mật và đây vẫn là một chủ đề nghiên cứu cho tôi để có được quyền truy cập trở lại


Tôi sử dụng thủ thuật này, để bắt đầu thám hiểm như người dùng nâng cao thường xuyên. Đặc biệt, khi kết nối qua VNC với PC, nơi cần thiết lập cài đặt mạng chẳng hạn. +1 từ tôi
TPAKTOPA 17/214

Thủ thuật này có vẻ không hợp lệ bây giờ. HĐH của tôi là Windows 7 SP1. Tôi đã đi xa như nhìn thấy "hệ thống" trong thanh menu bắt đầu. Nhưng khi đổi tên một tập tin trong thư mục system32, nó cho phép bị từ chối. Thư mục system32 hiện thuộc sở hữu của TrustedInstaller và ngay cả tài khoản hệ thống cục bộ cũng chỉ có quyền đặc biệt.
Shaohua Li

Nếu bạn cố đổi tên hoặc xóa bất kỳ tệp nào trong bất kỳ thư mục windows được bảo vệ nào mà TrustedInstaller sở hữu, người dùng hiện tại của bạn phải sở hữu tệp bằng cách thay đổi quyền, sau đó bạn có thể đổi tên hoặc hủy nó, Điều này thường được sử dụng để đánh lừa slmgr. exe và các tệp hệ thống khác để có quyền truy cập Vô hạn vào phiên bản đường mòn của các cửa sổ mà không phải trả tiền cho nó
quạ

10

Tìm thấy một câu trả lời ở đây dường như để giải quyết vấn đề bằng cách thêm / k bắt đầu vào tham số binPath. Vì vậy, nó sẽ cung cấp cho bạn:

sc create testsvc binpath= "cmd /K start" type= own type= interact

Tuy nhiên, Ben nói rằng nó không hoạt động với anh ta và khi tôi dùng thử trên Windows Server 2008, nó đã tạo ra quy trình cmd.exe trong hệ thống cục bộ, nhưng nó không tương tác (tôi không thể nhìn thấy cửa sổ).

Tôi không nghĩ có một cách dễ dàng để làm những gì bạn yêu cầu, nhưng tôi tự hỏi tại sao bạn lại làm điều đó? Bạn chỉ đang cố gắng để xem những gì đang xảy ra khi bạn chạy dịch vụ của bạn? Có vẻ như bạn chỉ có thể sử dụng đăng nhập để xác định những gì đang xảy ra thay vì phải chạy exe như hệ thống cục bộ ...


Xin chào Bryant. Giải pháp này về cơ bản được phác thảo trong câu hỏi. Nó thực sự làm việc cho bạn? Nó dẫn đến một thất bại cho tôi. Cảm ơn.
Ben Griswold

Bryant, tôi có một Dịch vụ quản lý việc cài đặt và gỡ cài đặt một thành phần khác. Tôi muốn cung cấp cho nhóm hỗ trợ của chúng tôi một cách dễ dàng để "gỡ cài đặt" thành phần một cách mạnh mẽ nếu Dịch vụ của tôi không thực hiện được công việc của mình. Trong khi thử nghiệm, tôi cũng muốn có thể "buộc" gỡ cài đặt. Thx để được giúp đỡ ..
Ben Griswold

1
@Ben: Bạn có loại bắt đầu dịch vụ "Phát hiện dịch vụ tương tác" được đặt thành "Thủ công" hoặc "Vô hiệu hóa" không?
Hello71

1
Để cho phép các dịch vụ tương tác cho Máy chủ 2012, HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServicescần đặt thành 0 (Mặc định 1)
Ivan Chau


6

Tôi sẽ khuyên bạn nên tìm ra bộ quyền tối thiểu mà dịch vụ của bạn thực sự cần và sử dụng, thay vì bối cảnh Hệ thống cục bộ quá đặc quyền. Ví dụ: Dịch vụ địa phương .

Các dịch vụ tương tác không còn hoạt động - hoặc ít nhất, không còn hiển thị UI - trên Windows Vista và Windows Server 2008 do cách ly phiên 0 .


4
Mike, cảm ơn vì đã trả lời. Mặc dù tôi đồng ý với đề xuất của bạn và tôi nghĩ mọi người sẽ được lợi từ câu trả lời của bạn, tôi không tin rằng bạn đã trả lời câu hỏi.
Ben Griswold

@Ben Griswold: Tuy nhiên, ông chỉ ra chính xác điều gì làm cho cách cũ thất bại trong Vista. +1.
SamB

1
Câu hỏi là "Làm thế nào để bạn chạy CMD.exe trong Tài khoản hệ thống cục bộ?"
Jaco Pretorius

2
@SamB, và đó là những gì bình luận dành cho, khi bạn có thứ gì đó để đóng góp mà thực sự không phải là một câu trả lời .
Synetech

6

Sử dụng Secure Desktop để chạy cmd.exe nhưsystem

Chúng ta có thể dễ dàng truy cập kernel thông qua CMDWindows XP / Vista / 7 / 8.1 bằng cách đính kèm trình gỡ lỗi:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. Chạy CMDvới tư cách quản trị viên

  2. Sau đó sử dụng lệnh này trong Elevated:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. Sau đó chạy osk(onscreenkeyboard). Nó vẫn không chạy với mức toàn vẹn hệ thống nếu bạn kiểm tra qua trình thám hiểm quy trình, nhưng nếu bạn có thể sử dụng OSK trong phiên dịch vụ, nó sẽ chạy nhưNT Authority\SYSTEM

Vì vậy, tôi đã có ý tưởng bạn phải chạy nó trên Secure Desktop.

Bắt đầu bất kỳ tập tin như Quản trị viên. Khi lời nhắc UAC xuất hiện, chỉ cần nhấn Win+ Uvà bắt đầu OSKvà nó sẽ bắt đầu CMDthay thế. Sau đó, trong dấu nhắc nâng cao, nhập whoamivà bạn sẽ nhận đượcNT Authority\System . Sau đó, bạn có thể khởi động Explorer từ trình vỏ lệnh hệ thống và sử dụng cấu hình Hệ thống, nhưng bạn phần nào bị hạn chế những gì bạn có thể làm trên mạng thông qua các đặc quyền HỆ THỐNG vì lý do bảo mật. Tôi sẽ thêm lời giải thích sau khi tôi phát hiện ra nó một năm trước.

Giải thích ngắn gọn về việc này xảy ra như thế nào

Chạy trong Cmd.exetài khoản hệ thống cục bộ mà không cần sử dụngPsExec. Phương pháp này chạy kỹ thuật Bẫy gỡ lỗi đã được phát hiện trước đó, nhưng kỹ thuật này có lợi ích riêng của nó, nó có thể được sử dụng để bẫy một số sâu độc hại hoặc độc hại trong trình gỡ lỗi và chạy một số exe khác để ngăn chặn sự lây lan hoặc thiệt hại tạm thời. Ở đây, khóa đăng ký này bẫy bàn phím trên màn hình trong trình gỡ lỗi riêng của windows và chạy cmd.exe thay vào đó, nhưng cmd vẫn sẽ chạy với đặc quyền của Logged on người dùng, tuy nhiên nếu chúng tôi chạy cmd trong session0, chúng tôi có thể lấy shell hệ thống. Vì vậy, chúng tôi thêm vào đây một ý tưởng khác, chúng tôi mở rộng cmd trên máy tính để bàn an toàn, hãy nhớ máy tính để bàn an toàn chạy trong phiên 0 trong tài khoản hệ thống và chúng tôi nhận được hệ thống shell. Vì vậy, bất cứ khi nào bạn chạy bất cứ thứ gì khi tăng, bạn phải trả lời lời nhắc UAC và lời nhắc UAC trên màn hình tối, không tương tác và một khi bạn thấy nó, bạn phải nhấn Win+ Uvà sau đó chọnOSKbạn sẽ được CMD.exechạy theo đặc quyền hệ thống cục bộ. Thậm chí còn có nhiều cách hơn để có quyền truy cập hệ thống cục bộ vớiCMD


ya thậm chí còn có nhiều cách hơn để chạy cmd khi Nâng cao với quyền Đặc quyền NT
quạ

Điều này là rất tốt đẹp. Rất đẹp. Tôi ghét dựa vào các tiện ích bổ sung của bên thứ 3 để hoàn thành công việc. Điều này là siêu nhanh chóng và dễ dàng. Thường trực :-) Vấn đề duy nhất là bạn phải chạy tất cả các lệnh trong cửa sổ UAC và chỉ một số ứng dụng mở. Explorer.exe không mở ví dụ. Tôi muốn thử nghiệm nếu có một cách khác để kích hoạt điều này. Tôi muốn có thể chạy các ứng dụng khác trong môi trường windows gốc mà không bị giới hạn UAC. Công cụ tuyệt vời Raven!
KonaRin

3

Một thay thế cho điều này là Process hacker nếu bạn chạy như ... (Tương tác không hoạt động với những người có cải tiến bảo mật nhưng điều đó không quan trọng) và khi hộp mở, hãy đặt Service vào loại hộp và đặt HỆ THỐNG vào hộp người dùng và đặt C : \ Users \ Windows \ system32 \ cmd.exe để phần còn lại nhấp vào ok và boch bạn đã có một cửa sổ với cmd trên đó và chạy như hệ thống bây giờ hãy tự làm các bước khác vì tôi đề nghị bạn biết chúng


2

Có một cách khác. Có một chương trình gọi là PowerRun cho phép chạy cmd nâng cao. Ngay cả với quyền TrustedInstaller. Nó cho phép cả hai lệnh console và GUI.


1

nếu bạn có thể viết một tệp bó không cần tương tác, hãy thử chạy tệp bó đó như một dịch vụ, để làm những gì cần phải làm.


0

Tôi sử dụng tiện ích RunAsTi để chạy dưới dạng TrustedInstaller (đặc quyền cao). Tiện ích có thể được sử dụng ngay cả trong chế độ khôi phục của Windows (chế độ bạn nhập bằng cách thực hiện Shift+ Restart), tiện ích psexec không hoạt động ở đó. Nhưng bạn cần thêm các đường dẫn C:\WindowsC:\Windows\System32(không X:\WindowsX:\Windows\System32) của mình vào PATHbiến môi trường, nếu không RunAsTi sẽ không hoạt động trong chế độ khôi phục, nó sẽ chỉ in: Điều chỉnh các đặc quyền cho SeImpersonateName: Không phải tất cả các đặc quyền hoặc nhóm được tham chiếu đều được gán cho người gọi .


0

Sử dụng bộ lập lịch tác vụ, lên lịch chạy CMDKEY chạy trong HỆ THỐNG với các đối số thích hợp của / add: / user: và / pass:

Không cần cài đặt gì cả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.