From: SMTP%"DSJ@WKUVX1.WKU.EDU" 21-DEC-1993 10:56:29.20 To: EVERHART CC: Subj: AUGUST93.SECURE X-FileServer: Digital Systems Journal File Server Date: Tue, 21 Dec 1993 09:54:52 CDT Sender: DSJ-Mgr@WKUVX1.WKU.EDU Errors-To: DSJ-Mgr@WKUVX1.WKU.EDU Warnings-To: <> From: DSJ-Mgr@WKUVX1.WKU.EDU Reply-To: DSJ@WKUVX1.WKU.EDU Subject: AUGUST93.SECURE To: EVERHART@arisia.gce.com $! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created: $! Name : SECURE $! By : Hunter Goatley $! Date : 12-AUG-1993 12:29:51.14 $! Using: VMS_SHARE 8.4, (C) 1993 Andy Harper, Kings College London UK $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. SECURE.DESC;1 $! 2. SECURE.DSJ;1 $! $ set="set" $ set symbol/scope=(nolocal,noglobal) $ f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $ e="write sys$error ""%UNPACK"", " $ w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ if f$getsyi("CPU") .gt. 127 then $ goto start $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes,P4=size $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped" $ delete 'f'* $ exit $dirok: $ x=f$search(P1) $ if x .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped" $ delete 'f'* $ exit $file_absent: $ w "-I-UNPACK, Unpacking ", P5, " of ", P6, " - ", P1, " - ", P4, " Blocks" $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT/NOJOURNAL 'f'/OUT='n' PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t, SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;PROCEDURE SkipPartsep LOCAL m; LOOP m:=MARK(NONE);EXITIF m=END_OF(b);DELETE(m);EXITIF INDEX(ERASE_LINE, "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b, n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF; MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1); p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[ ' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE; PROCEDURE Decode LOCAL m;POSITION(BEGINNING_OF(b));LOOP m:=MARK(NONE);EXITIF m= END_OF(b);DELETE(m);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")= 1 THEN SkipPartSep;ELSE ProcessLine;MOVE_HORIZONTAL(1);ENDIF;ENDLOOP; ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL, OFF);t:="0123456789ABCDEF";f:=GET_INFO(COMMAND_LINE,"file_name");b:= CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO(COMMAND_LINE,"output_file")); QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ endsubroutine $start: $! $ create 'f' XThis`20file`20offers`20code`20originally`20published`20in`20the`20July/August V`201993`20issue`20of XDigital`20Systems`20Journal.`20It`20was`20first`20runh`20as`20part`20of`20Bruc Ve`20Ellis's`20article X"Internals:`20A`20Tool`20for`20the`20Security`20Arsenal,"`20found`20on`20page V`2042.`20When`20your Xsystem`20security`20has`20been`20compromised,`20you`20may`20want`20to`20have V`20some`20control Xover`20the`20activities`20that`20are`20being`20performed`20on`20your`20system. V`20`20Taking Xpriviledges`20away`20from`20a`20running`20process`20may`20seem`20like`20an`20a Vggressive Xapproach`20to`20security,`20but`20it`20provides`20a`20measure`20of`20control V`20that`20is`20not Xcommonly`20available. $ call unpack SECURE.DESC;1 875311352 "" 2 1 2 $! $ create 'f' X$ X$`20type`20block_self_deletion.mar X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09Program:`20BLOCK_SELF_DELETE.MAR X;`09Author:`09Bruce`20Ellis`20`20The`20VASTEK`20Company,`20Inc. X;`09Synopsis:`09Program`20to`20block`20deletion`20and`20suspension X;`09`09`09of`20the`20current`20process. X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09.library`09/sys$library:lib.mlb/ X`09.link`09`09/sys$system:sys.stb/ X`09$pcbdef`09`09;Process`20control`20block`20definitions X`09.entry`09block_delete,`5Em<> X;`20Just`20do`20it!`20`20(in`20kernel`20mode) X`09$cmkrnl_s`09routin=set_nodel X`09ret X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09Kernel`20mode`20routine`20to`20set`20nodelete`20and`20nosuspend`20bits. X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09.entry`09set_nodel,`5Em<> X`09bbss`09#pcb$v_nodelet,pcb$l_sts(r4),10$ X10$:`09bbss`09#pcb$v_nosuspend,pcb$l_sts(r4),20$ X20$:`09movl`09#ss$_normal,r0 X`09ret X`09.end`09block_delete X X$`20 X$`20macro`20block_self_deletion X$`20link`20block_self_deletion X$`20 X$`20 X$`20run`20block_self_deletion X$`20 X$`20show`20process X X15-MAY-1993`2005:48:12.21`20`20`20User:`20SYSTEM`20`20`20`20`20`20`20`20`20`20 V`20Process`20ID:`20`20`20 X00000145 X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Proces Vs`20name:`20 X"_RTA1:" X XTerminal:`20`20`20`20`20`20`20`20`20`20`20RTA1:`20`20(GT::SYSTEM) XUser`20Identifier:`20`20`20`20`5B1,4`5D XBase`20priority:`20`20`20`20`20`204 XDefault`20file`20spec:`20`20SYS$SYSROOT:`5BSYSMGR`5D X XDevices`20allocated:`20`20RTA1: X$`20 X$`20spawn X%DCL-S-SPAWNED,`20process`20SYSTEM_1`20spawned X%DCL-S-ATTACHED,`20terminal`20now`20attached`20to`20process`20SYSTEM_1 X$`20stop/id=145 X%SYSTEM-F-NODELETE,`20object`20cannot`20be`20deleted X$`20set`20process/suspend/identification=145 X%SET-E-NOTSET,`20process`20_RTA1:,`20PID=00000145,`20not`20suspended X-SYSTEM-F-NOSUSPEND,`20process`20cannot`20be`20suspended X$`20 X$`20lo X`20`20Process`20SYSTEM_1`20logged`20out`20at`2015-MAY-1993`2005:49:07.72 X%DCL-S-RETURNED,`20control`20returned`20to`20process`20_RTA1: X$`20 X X`0C X X$`20 X$`20 X$`20analyze/system X X XVAX/VMS`20System`20analyzer X XSDA>`20show`20process X X XProcess`20index:`200045`20`20`20Name:`20_RTA1:`20`20`20Extended`20PID:`2000000 V145 X----------------------------------------------------------- X=======>`20Process`20status:`20`2002850001`20`20`20RES,PHDRES,NODELET`20`20 X<=========== X XPCB`20address`20`20`20`20`20`20`20`20`20`20`20`20`20`20808E7220`20`20`20`20JIB V`20address`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X80AA30E0 XPHD`20address`20`20`20`20`20`20`20`20`20`20`20`20`20`2081255000`20`20`20`20Swa Vpfile`20disk`20address`20`20`20`20 X00000000 XMaster`20internal`20PID`20`20`20`20`20`2000020045`20`20`20`20Subprocess`20coun Vt`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X`200 XInternal`20PID`20`20`20`20`20`20`20`20`20`20`20`20`2000020045`20`20`20`20Creat Vor`20internal`20PID`20`20`20`20`20 X00000000 XExtended`20PID`20`20`20`20`20`20`20`20`20`20`20`20`2000000145`20`20`20`20Creat Vor`20extended`20PID`20`20`20`20`20 X00000000 XState`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CUR V`20`20`20`20`20`20Termination`20mailbox`20`20`20`20`20`20`20`20`20`20 X0000 XCurrent`20priority`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`207`20`20`20 V`20AST's`20enabled`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 XKESU XBase`20priority`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`204`20 V`20`20`20AST's`20active`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 XNONE XUIC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`5B00001,000004`5D`20`20`20 V`20AST's`20remaining`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X97 XMutex`20count`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`200 V`20`20`20`20Buffered`20I/O`20count/limit`20`20`20`20`20`20 X100/100 XWaiting`20EF`20cluster`20`20`20`20`20`20`20`20`20`20`20`20`20`201`20`20`20`20D Virect`20I/O`20count/limit`20`20`20`20`20`20`20`20 X100/100 XStarting`20wait`20time`20`20`20`20`20`20`201B001B1A`20`20`20`20BUFIO`20byte`20 Vcount/limit`20`20`20`20`20`20 X32704/32704 XEvent`20flag`20wait`20mask`20`20`20`20`207FFFFFFF`20`20`20`20#`20open`20files V`20allowed`20left`20`20`20`20`20`20 X99 XLocal`20EF`20cluster`200`20`20`20`20`20`20`20E0000001`20`20`20`20Timer`20entri Ves`20allowed`20left`20`20`20`20`20 X20 XLocal`20EF`20cluster`201`20`20`20`20`20`20`20C0000000`20`20`20`20Active`20page V`20table`20count`20`20`20`20`20`20`20`20 X`200 XGlobal`20cluster`202`20pointer`2000000000`20`20`20`20Process`20WS`20page`20cou Vnt`20`20`20`20`20`20`20`20 X1028 XGlobal`20cluster`203`20pointer`2000000000`20`20`20`20Global`20WS`20page`20coun Vt`20`20`20`20`20`20`20`20`20`20`20 X42 XSDA>`20exit X$`20 X$`20 X$`20type`20allow_self_deletion.mar X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09Program:`20ALLOW_SELF_DELETION.MAR X;`09Author:`09Bruce`20Ellis`20`20The`20VASTEK`20Company,`20Inc. X;`09Synopsis:`09Program`20to`20allow`20deletion`20and`20suspension X;`09`09`09of`20the`20current`20process. X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09.library`09/sys$library:lib.mlb/ X`09.link`09`09/sys$system:sys.stb/ X`09$pcbdef`09`09;Process`20control`20block`20definitions X`09.entry`09allow_delete,`5Em<> X;`20Just`20do`20it!`20`20(in`20kernel`20mode) X`09$cmkrnl_s`09routin=reset_nodel X`09ret X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09Kernel`20mode`20routine`20to`20clear`20nodelete`20and`20nosuspend`20bits. V X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;Note`20bbcc`20was`20used`20over`20bicl,`20as`20we`20do`20not`20know`20if`20th Vese`20bits X;`20are`20in`20the`20first`20or`20second`20longword`20of`20the`20status`20fiel Vd. X`09.entry`09reset_nodel,`5Em<> X`09bbcc`09#pcb$v_nodelet,pcb$l_sts(r4),10$ X10$:`09bbcc`09#pcb$v_nosuspend,pcb$l_sts(r4),20$ X20$:`09movl`09#ss$_normal,r0 X`09ret X`09.end`09allow_delete X X$`20 X$`20macro`20allow_self_deletion X$`20link`20allow_self_deletion X$`20 X$`20run`20allow_self_deletion X$`20 X$`20analyze/system X X XVAX/VMS`20System`20analyzer X XSDA>`20show`20process X XProcess`20index:`200045`20`20`20Name:`20_RTA1:`20`20`20Extended`20PID:`2000000 V145 X----------------------------------------------------------- X==========>`20Process`20status:`20`2002040001`20`20`20RES,PHDRES`20<========== V==== X XPCB`20address`20`20`20`20`20`20`20`20`20`20`20`20`20`20808E7220`20`20`20`20JIB V`20address`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X80AA30E0 XPHD`20address`20`20`20`20`20`20`20`20`20`20`20`20`20`2081255000`20`20`20`20Swa Vpfile`20disk`20address`20`20`20`20 X00000000 XMaster`20internal`20PID`20`20`20`20`20`2000020045`20`20`20`20Subprocess`20coun Vt`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X`200 XInternal`20PID`20`20`20`20`20`20`20`20`20`20`20`20`2000020045`20`20`20`20Creat Vor`20internal`20PID`20`20`20`20`20 X00000000 XExtended`20PID`20`20`20`20`20`20`20`20`20`20`20`20`2000000145`20`20`20`20Creat Vor`20extended`20PID`20`20`20`20`20 X00000000 XState`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CUR V`20`20`20`20`20`20Termination`20mailbox`20`20`20`20`20`20`20`20`20`20 X0000 XCurrent`20priority`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`207`20`20`20 V`20AST's`20enabled`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 XKESU XBase`20priority`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`204`20 V`20`20`20AST's`20active`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 XNONE XUIC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`5B00001,000004`5D`20`20`20 V`20AST's`20remaining`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X97 XMutex`20count`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`200 V`20`20`20`20Buffered`20I/O`20count/limit`20`20`20`20`20`20 X100/100 XWaiting`20EF`20cluster`20`20`20`20`20`20`20`20`20`20`20`20`20`201`20`20`20`20D Virect`20I/O`20count/limit`20`20`20`20`20`20`20`20 X100/100 XStarting`20wait`20time`20`20`20`20`20`20`201B001B1B`20`20`20`20BUFIO`20byte`20 Vcount/limit`20`20`20`20`20`20 X32704/32704 XEvent`20flag`20wait`20mask`20`20`20`20`207FFFFFFF`20`20`20`20#`20open`20files V`20allowed`20left`20`20`20`20`20`20 X99 XLocal`20EF`20cluster`200`20`20`20`20`20`20`20E0000001`20`20`20`20Timer`20entri Ves`20allowed`20left`20`20`20`20`20 X20 XLocal`20EF`20cluster`201`20`20`20`20`20`20`20C0000000`20`20`20`20Active`20page V`20table`20count`20`20`20`20`20`20`20`20 X`200 XGlobal`20cluster`202`20pointer`2000000000`20`20`20`20Process`20WS`20page`20cou Vnt`20`20`20`20`20`20`20`20`20 X913 XGlobal`20cluster`203`20pointer`2000000000`20`20`20`20Global`20WS`20page`20coun Vt`20`20`20`20`20`20`20`20`20`20`20 X42 XSDA>`20exit X$`20 X X`0C X X$`20 X$`20type`20take_priv.mar X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09Program:`09take_priv.mar X;`09Author:`09`09Bruce`20Ellis X;`09Synopsis:`09This`20program`20resets`20a`20target`20Process'`20privileges X;`09`09`09to`20be`20TMPMBX`20and`20NETMBX. X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X X;Include`20the`20system`20macro`20library X`09.library`09/sys$library:lib.mlb/ X;Link`20against`20the`20system`20symbol`20table X`09.link`09`09"sys$system:sys.stb" X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;Include`20definitions X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09$pcbdef`09`09;Process`20control`20block X`09$dyndef`09`09;Dynamic`20memory`20types X`09$ipldef`09`09;Interrupt`20Priority`20Level X`09$acbdef`09`09;AST`20Control`20block X`09$pridef`09`09;Priority`20boost`20classes X`09$phddef`09`09;Process`20header`20offsets X`09$prvdef`09`09;Privilege`20mask`20bit`20definitions X X`09.macro`09check`09?l X`09blbs`09r0,l X`09$exit_s`09r0 Xl: X`09.endm`09check X Xpid_a:`09.long`098`09;Ascii`20descriptor`20for`20PID`20storage X`09.address`0910$ X10$:`09.blkb`098 Xpid:`09.blkl`091`09;Storage`20for`20binary`20representation`20of`20PID Xpmt:`09.ascid`09/pid>`20/ Xpid_arg:`09`09;argument`20list`20for`20exe$nampid X`09.long`091 X`09.address`09pid X`09.long`090 Xlock_adr: X`09.address`09lock_start X`09.address`09lock_end X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09User`20mode`20code X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09.entry`09blaster,`5Em<> X`09pushal`09pid_a`09;Read`20in`20pid`20 X`09pushal`09pmt`09;`20`20with`20prompt X`09pushal`09pid_a X`09calls`09#3,g`5Elib$get_input X`09check X`09pushal`09pid`09;Convert`20pid`20from`20Hex`20Ascii`20to X`09pushal`09pid_a`09;`20`20a`20longword`20binary`20value X`09calls`09#2,g`5Eots$cvt_tz_l X`09check X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`20Lock`20down`20code`20and`20data`20accessed`20at`20elevated`20IPL X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09$lkwset_s`09inadr=lock_adr X`09check X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09Get`20into`20kernel`20mode`20and`20blast`20him X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09$cmkrnl_s`09routin=negate_him,arglst=pid_arg X`09ret X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09Kernel`20mode`20code X;`09description: X;`09`091)`09Checks`20the`20pid`20and`20converts`20to`20PCB`20address X;`09`09`09and`20obtains`20IPID X;`09`092)`09Allocates`20pool`20for`20an`20ACB,`20including`20the X;`09`09`09code`20for`20the`20special`20kernel`20ast X;`09`093)`09Queues`20a`20Special`20Kernel`20AST`20to`20the`20process X;`09`09`09to`20reset`20privilege`20mask. X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E Xproc_err: X`09setipl`09#0 X`09ret X`09.entry`09negate_him,`5Em Xlock_start: X`09jsb`09g`5Eexe$nampid`09`09;find`20him X`09blbc`09r0,proc_err`09`09;on`20error`20deallocate`20the`20pool X`09pushl`09r1`09`09`09;save`20target`20pid X`09movl`09#blaster_ast_size,r1`09;Allocate`20the`20pool`20for`20the X`09jsb`09g`5Eexe$alononpaged`09;`20ACB+code X`09blbc`09r0,scram`09`09;no`20pool`20then`20leave X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;Copy`20the`20code`20into`20pool X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09pushr`09#`5Em`09 X`09movc3`09#blaster_ast_size,blaster_ast,(r2) X`09popr`09#`5Em`09 X`09movw`09R1,acb$w_size(r2)`09;Fill`20in`20size`20for`20later`20deallocation X`09movb`09#dyn$c_acb,acb$b_type(r2)`09;set`20type`20as`20ACB X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;Fill`20in`20the`20address`20of`20the`20KAST`20routine X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X`09moval`09(r2),acb$l_kast(r2) X`09clrb`09acb$b_rmod(r2)`09`09;Clear`20request`20mode`20bits X`09bisb`09#acb$m_kast,acb$b_rmod(r2)`09;Mark`20as`20Special`20kernel`20AST X`09popl`09r1`09`09`09;restore`20target`20pid X`09movl`09r1,acb$l_pid(r2)`09;copy`20in`20his`20IPID X`09movl`09r2,r5`09`09`09;R5`20must`20point`20to`20ACB`20for`20SCH$QAST X`09movl`09#pri$_ticom,r2`09`09;give`20him`20a`20big`20boost X`09jsb`09g`5Esch$qast`09`09;Queue`20the`20AST X`09unlock`09lockname=SCHED,newipl=#0`09;Give`20up`20SCHED`20spinlock X`09`09`09`09`09`09;taht`20nampid`20took`20out X`09movl`09#ss$_normal,r0`09`09;success Xoutta_here: X`09ret`09`09`09`09;sayonara Xscram: X`09unlock`09lockname=SCHED,newipl=#0`09;Give`20up`20SCHED`20spinlock X`09brb`09outta_here`09`09;return`20error`20status X X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E X;`09ACB`20with`20code`20following X;`09R4`20points`20to`20current`20PCB`20address`20in`20a`20special`20kernel`20A VST X;`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E V`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E Xblaster_ast: Xacb:`09.blkb`09acb$k_length`09`09;Allocate`20storage`20for`20ACB XASSUME`20PRV$V_TMPMBX`20LE`2031 XASSUME`20PRV$V_NETMBX`20LE`2031 Xnew_priv:`09 X`09.long`09PRV$M_TMPMBX!PRV$M_NETMBX`09;New`20priv`20mask X`09.long`090 Xblaster_ast_code: X`09pushl`09r3`09`09`09;save`20r3 X`09movl`09g`5Ectl$gl_phd,r3`09`09;get`20his`20P1`20window`20to`20phd X`09movq`09new_priv,pcb$q_priv(r4)`20;reset`20current`20priv`20mask X`09movq`09new_priv,phd$q_privmsk(r3)`20`09;reset`20old`20current`20priv`20mask V X`09movq`09new_priv,g`5Ectl$gq_procpriv`09;reset`20process`20privilege`20mask X`09movq`09new_priv,phd$q_authpriv(r3)`09;reset`20authorized`20priv`20mask X`09movq`09new_priv,phd$q_imagpriv(r3)`09;reset`20image`20priv`20mask X Xescape:`09movl`09r5,r0`09`09`09;set`20up`20for`20deallocation X`09popl`09r3`09`09`09;restore`20r3 X`09jmp`09g`5Eexe$deanonpaged`09;give`20up`20the`20pool`20and`20disappear X`09blaster_ast_size=.-blaster_ast Xlock_end: X X`09.end`09blaster X$`20 X$`20macro`20take_priv X$`20 X$`20link`20take_priv X$`20 X$`20spawn/nowait`20wait`2010:00:00.00 X%DCL-S-SPAWNED,`20process`20SYSTEM_1`20spawned X$`20 X$`20show`20system/sub XVAX/VMS`20V5.5-2`20`20on`20node`20GT`20`2015-MAY-1993`2006:00:22.98`20`20`20Up Vtime`20`207`2019:25:02 X`20`20Pid`20`20`20`20Process`20Name`20`20`20`20State`20`20Pri`20`20`20`20`20 V`20I/O`20`20`20`20`20`20`20CPU`20`20`20`20`20`20`20Page`20flts`20Ph.Mem X00000148`20SYSTEM_1`20`20`20`20`20`20`20`20LEF`20`20`20`20`20`204`20`20`20`20 V`20`20`2037`20`20`200`2000:00:00.04`20`20`20`20`20`20`20191`20`20`20`20183`20 V`20S X$`20 X$`20type`20show_priv.com X$wso`20=`20"WRITE`20SYS$OUTPUT`20" X$cp=f$getjpi(P1,"CURPRIV") X$pp=f$getjpi(P1,"PROCPRIV") X$ap=f$getjpi(P1,"AUTHPRIV") X$ip=f$getjpi(P1,"IMAGPRIV") X$wso`20"**********************************" X$wso`20"Current`20Privileges:" X$wso`20cp X$wso`20"**********************************" X$wso`20"Process`20Privileges:" X$wso`20pp X$wso`20"**********************************" X$wso`20"Authorized`20Privileges:" X$wso`20ap X$wso`20"**********************************" X$wso`20"Image`20Privileges:" X$wso`20ip X$wso`20"**********************************" X$`20 X$`20@show_priv`20148 X********************************** XCurrent`20Privileges: X%DCL-W-TKNOVF,`20command`20element`20is`20too`20long`20-`20shorten X`20`5CCMKRNL,CMEXEC,SYSNAM,GRPNAM,ALLSPOOL,DETACH,DIAGNOSE,LOG_IO,GROUP,ACNT, V XPRMCEB,PRMMBX,PSWAPM,ALTPRI,SETPRV,TMPMBX,WORLD,MOUNT,OPER,EXQUOTA,NETMBX, XVOLPRO,PHY_IO,BUGCHK,PRMGBL,SYSGBL,PFNMAP,SHMEM,SYSPRV,BYPASS,SYSLCK,SHARE, XUPGRADE,DOWNGRADE,GRPPRV,READALL, X********************************** XProcess`20Privileges: X%DCL-W-TKNOVF,`20command`20element`20is`20too`20long`20-`20shorten X`20`5CCMKRNL,CMEXEC,SYSNAM,GRPNAM,ALLSPOOL,DETACH,DIAGNOSE,LOG_IO,GROUP,ACNT, V XPRMCEB,PRMMBX,PSWAPM,ALTPRI,SETPRV,TMPMBX,WORLD,MOUNT,OPER,EXQUOTA,NETMBX, XVOLPRO,PHY_IO,BUGCHK,PRMGBL,SYSGBL,PFNMAP,SHMEM,SYSPRV,BYPASS,SYSLCK,SHARE, XUPGRADE,DOWNGRADE,GRPPRV,READALL, X********************************** XAuthorized`20Privileges: X%DCL-W-TKNOVF,`20command`20element`20is`20too`20long`20-`20shorten X`20`5CCMKRNL,CMEXEC,SYSNAM,GRPNAM,ALLSPOOL,DETACH,DIAGNOSE,LOG_IO,GROUP,ACNT, V XPRMCEB,PRMMBX,PSWAPM,ALTPRI,SETPRV,TMPMBX,WORLD,MOUNT,OPER,EXQUOTA,NETMBX, XVOLPRO,PHY_IO,BUGCHK,PRMGBL,SYSGBL,PFNMAP,SHMEM,SYSPRV,BYPASS,SYSLCK,SHARE, XUPGRADE,DOWNGRADE,GRPPRV,READALL, X********************************** XImage`20Privileges: XCMKRNL,SYSNAM,LOG_IO,ALTPRI,TMPMBX,SYSPRV X********************************** X$`20 X$`20run`20take_priv Xpid>`20148 X$`20 X$`20 X$`20@show_priv`20148 X********************************** XCurrent`20Privileges: XTMPMBX,NETMBX X********************************** XProcess`20Privileges: XTMPMBX,NETMBX X********************************** XAuthorized`20Privileges: XTMPMBX,NETMBX X********************************** XImage`20Privileges: XTMPMBX,NETMBX X********************************** X$`20 X X $ call unpack SECURE.DSJ;1 604347526 "" 25 2 2 $ v=f$verify(v) $ exit