Qun lý mng Windows bng Script - Phn 11: Các th thut kch bn khác
Ngu
n:quantrimang.com
Mitch Tulloch
Trong phn trước ca lot bài này chúng ta đã biết hai th thut cho kch bn
điu khin xa. Trong phn trước chúng ta đã xem thêm hai mo kch bn na.
Mo đầu tiên, th thut kch bn điu khin xa t mt độc gi, mo th hai, mt
ví d thế gii thc được dùng để th hin cách s dng the Windows
Management Instrumentation Command-line (WMIC).
Th thut 1: Th thut “runas” nhưng vi s mã hóa
Th thut kch bn đầu tiên được đệ trình bi độc gi Steven Beard đến t Anh.
Steve đưa ra mt cách hoàn toàn khác để gi lnh “runas” t bên trong kch bn
điu này có th hu dng trong các môi trường hot động kinh doanh như thế
nào. Hãy lng nghe nhng gì mà Steve đã nói:
Tôi đã s dng vb script trong nhiu năm qua để qun tr min Windows ca tôi
nhưng chưa bao gi hiu hết v WMI mà ch là nhng gì tôi thc s cn thiết.
Mc dù phn cui cùng ca các bn quan tâm đến hàm runas là rt tt, nhưng
tôi s dng nó theo nhiu cách khác nhau, bn có th xem dưới đây:
Set WshShell = CreateObject("Wscript.Shell")
Set WshEnv = WshShell.Environment("PRocess")
WshShell.Run "runas.exe /user:" & "domain\user" & " " &
Chr(34) & "cscript c:\PCQuery.vbs" & Chr(34)
Wscript.Sleep 800
WshShell.AppActivate WshEnv("SystemRoot") &
"\system32\runas.exe"
Wscript.Sleep 200
WshShell.SendKeys "PASSWORD" & "~"
Wscript.Sleep 500
Set WshShell = Nothing
Set WshEn = Nothing
Mt cách cơ bn, tôi giu tt c các kch bn cn đến quyn qun tr trong kch
bn trên bng s dng runas, sau đó đợi và s dng sendkeys để gi mt
khu.
Đây là vn đề tương t kch bn được chuyn đến bn bng mt độc gi khác.
Các mt khu gi không được mã hóa xuyên mng, đó là lý do ti sao tôi viết
email này.
Tôi s dng script encoder (cơ bn chy kch bn thông qua b mã hóa và các
bng băm bng nhiu thut toán mã hóa), sau đó kết thúc vi mt file .vbe thay
vì .vbs.
Tôi đảm bo nó vn có th b crack nhưng vn tt hơn là không mã hóa.
Th thut 2: Truy vn cho qun tr viên cc b bng WMIC
Th thut th hai này s được da trên vn đề cuc sng thc. Mt độc gi đã
liên h vi chúng tôi hi mt câu hi đơn gin: làm thế nào bn có th lit kê các
tài khon qun tr viên cc b trên máy tính điu khin xa? Kch bn là độc gi
nhiu máy trm Windows XP, các máy là phn khi đầu ca mt nhóm, và người
dùng có quyn qun tr cc b trên các máy tính đó (nghĩa là các tài khon cc
b ca h là thành viên ca nhóm qun tr cc b trên các máy tính này). Cui
cùng mng cũng đã được di trú đến mt min Active Directory và người dùng
được trao các tài khon mi vi tư cách là thành viên nhóm toàn cc Domain
Users. Sau đó, mt ngày qun tr viên được thông báo rng người dùng dường
như có nhiu đặc quyn hơn nhng gì mà anh ta đã gán và anh ta đã phát hin
ra rng các tài khon qun tr cc b cũ đã không được phát hin t máy trm
ca anh ta, anh ta đã đăng nhp bng mt tài khon qun tr cc b đó khi tài
khon domain user không cho anh ta có được đủ quyn điu khin trên máy
trm. Qun tr viên nhn ra điu này có th là mt vn đề nghiêm trng khi (a) nó
can thip vào chính sách bo mt ca công ty và (b) cho phép người dùng đăng
nhp vào các máy trm ca h như các qun tr viên, nghĩa là h có th x
đơn gin trên máy trm ca h khi qun tr cc b có th thc hin gn như bt
c cái gì trên các máy ca h, tuy nhiên điu này có th dn đến chi phí h tr
cao hơn.
Bây gi để làm cho nó phc tp hơn chút ít, nhóm qun tr cc b Administrators
đính kèm trên máy trm được đặt li tên thành mt tên nào đó và tài khon
người dùng Administrator cc b đính kèm cũng được đặt li tên. Kim tra máy
trm th hai đã phát hin ra rng nhóm cc b qun tr viên đính kèm và tài
khon người dùng cc b cũng đều được đặt li tên trên máy tính này, tuy nhiên
chúng được đặt li tên khác vi máy trm đầu tiên! Thc s là mt s phc tp
gây đau đầu! Vic gii quyết điu này ging nhưđòi hi phi đăng nhp vào
các máy trm và đào bi tìm kiếm tt c người dùng và các nhóm cc b trên
mi máy tính để xác định tài khon người dùng cc b nào là qun tr cc b trên
máy đó, hoc tìm các khác để xác định thông tin này. Có th là mt kch bn?
Bn có th gii quyết bng kch bn nhưng thay vì làm điu đó, bn hãy th thc
hin mt cái gì đó khác và s dng Windows Management Instrumentation
Command-line (WMIC) xem sao. WMIC cơ bn là mt công c (mt trình thông
dch lnh) cho phép truy vn thông tin WMI trc tiếp t dòng lnh thay vì phi
thc hin nó bên trong mt kch bn. WMIC có th được s dng theo hai cách:
tương tác (đưa ra mt lnh ti mt thi đim nào đó ca s lnh) hoc trong
các file.
S dng WMIC tương tác
Ví d, hãy cho rng nhóm qun tr cc b đính kèm và tài khon người dùng cc
b không được đặt li tên trên h thng. Nếu đây là mt trường hp thì bn có
th s dng WMIC tương tác để hin th danh sách các thành viên ca nhóm
qun tr cc b bng cách m ca s lnh và đánh vào đó lnh sau:
C:\Documents and Settings\myself>wmic path win32_groupuser
where
(groupcomponent="win32_group.name=\"administrators\",domai
n=\"%computername%\"")
GroupComponent??????????????????? ????????PartComponent
win32_group.domain="XP191",name="administrators"?
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
Administrator"
win32_group.domain="XP191",name="administrators"?
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
sjones"????
win32_group.domain="XP191",name="administrators"?
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
gsmith"???????
win32_group.domain="XP191",name="administrators"?
\\XP191\root\cimv2:Win32_Group.Domain="TEST",Name="Domain
Admins"
Xem ct th hai, chúng ta có th thy nhóm qun tr cc b trên máy tính này có
3 tài khon người dùng cùng vi nó: qun tr viên, sjones và gsmith. Thêm vào
đó, nhóm qun tr min toàn cc là mt thành viên ca nhóm qun tr cc b trên
h thng này.
Bây gi nhóm qun tr cc b đính kèm trên h thng được đổi tên thành gì?
Chy lnh trên bn s có kết qu dưới đây:
C:\Documents and Settings\myself>wmic path win32_groupuser
where
(groupcomponent="win32_group.name=\"administrators\",domain
=\"%computername%\"")
No Instance(s) Available.
Ti sao lnh b hng? Rõ ràng bi vì tên ca nhóm tn ti đã truy vn bi mã
cng trong lnh. Nhưng nếu nhóm qun tr cc b đính kèm được đặt li tên thì
bn có th xác định tên mi ca nó như thế nào? Câu tr li đơn gin là nhóm
này có th được đặt tên là gì thì nó vn ging nhóm cũ b ngoài. Hay nó theo
cách khác, nó là b nhn dnh bo mt (SID) không thay đổi và vn là S-1-5-32-
544 (bn có th xem thêm ti đây để có thêm danh sách v các SID).
Vy chúng ta có th xác định tên ca nhóm là gì nếu biết SID ca nó? Chúng ta
có th s dng li WMIC mt ln na, ging như dưới đây:
C:\Documents and Settings\myself>wmic group where (sid =
"S-1-5-32-544" and localaccount = true) get name
Name
JustAnotherGroup
Vy nhóm qun tr đính kèm trên h thng này được đặt li tên thành
JustAnotherGroup!
Dù thế nào đi chăng na bây gi chúng ta cũng biết được tên ca nhóm này,
chúng ta có th s dng WMIC để truy vn các thành viên ca nó:
C:\Documents and Settings\myself>
w
mic path win32
_
groupuser
where
(groupcomponent="win32_group.name=\"justanothergroup\",dom
ain=\"%computername%\"")
GroupComponent PartComponent
win32_group.domain="XP191",name="justanothergroup"
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
JustAnotherUser"
win32_group.domain="XP191",name="justanothergroup"
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
sjones"
win32_group.domain="XP191",name="justanothergroup"
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
gsmith"
win32_group.domain="XP191",name="justanothergroup"
\\XP191\root\cimv2:Win32_Group.Domain="TEST",Name="Domain
Admins"
Và chúng ta có th xem t đầu ra lnh có 3 qun tr cc b trên máy tính này:
sjones, gsmith và JustAnotherUser. Rõ ràng nhóm toàn cc qun tr min là mt
thành viên ca JustAnotherGroup.
S dng WMIC trong các file Batch
Ngược li nếu chúng ta không mun đăng nhp vào máy trm và chy các lnh
WMIC trên, thì chúng ta phi làm như thế nào? WMIC có th được chy trên các
máy tính điu khin xa bng cách s dng khóa chuyn đổi /node:””, khóa
được cung cp để bn có th kích hot Remote Administration trên các máy tính
mc tiêu (bn có th thc hin bng cách s dng Group Policy như đã được
gii thích trong phn 6). Vy tha nhn rng bn đã thc hin điu đó, hãy m
ca s lnh trên máy ch trung tâm ca chúng ta (b điu khin min) và đưa ra
hai lnh tương t WMIC, nhưng lúc này máy trm điu khin xa có tên là XP191.
Đầu tiên chúng ta ly tên ca nhóm qun tr cc b đính kèm trên máy tính điu
khin xa.
C:\Documents and Settings\Administrator>wmic /node:"xp191"
group where (sid = "S-1-5-32-544" and localaccount = true)
get name
Name
JustAnotherGroup
Bây gi chúng ta s dng kết qu này để ly danh sách các thành viên ca
nhóm:
C:\Documents and Settings\Administrator>
w
mic /node:"xp191"
path win32_groupuser where (groupcomponent =
"win32_group.name=\"justanothergroup\",domain=\"xp191\"")
GroupComponent?????????????????????????????PartComponent
win32_group.domain="xp191",name="justanothergroup"?
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
JustAnotherAccount"
win32_group.domain="xp191",name="justanothergroup"?
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
sjones"
win32_group.domain="xp191",name="justanothergroup"?
\\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name="
gsmith"
win32_group.domain="xp191",name="justanothergroup"?
\\XP191\root\cimv2:Win32_Group.Domain="TEST",Name="Domain
Admins"
Kết qu ginh như nhng gì chúng ta mong đợi. T đim này, bn hoàn toàn d
dàng viết mt file đơn gin để truy vn tt c các máy trm trên mng và lưu kết