Rairii,
@Rairii@haqueers.com avatar

if i had a nickel for every anti-cheat vendor whom implemented functionality in their driver to elevate the calling usermode process to PP/PPL, i would have two nickels. which isn't a lot, but it's weird that it happened twice

kernel-mode anticheat is malware.

TheRogueArchivist,

@Rairii Denuvo Anti-Cheat hilariously tries to ease concern about it being kernel-mode in their FAQ, with one of the questions asking if it's safe. They basically just say "it's concerning, but we need to do it! And also others do it too!" without actually saying that it's safe 🤣

https://irdeto.com/denuvo/anti-cheat/

Rairii,
@Rairii@haqueers.com avatar

@TheRogueArchivist still amazed nobody's done VTL1 cheats yet, it's theoretically possible. i guess when you can patch hyper-v itself you don't need vtl1

thegibson,

@Rairii Thank you.

full agreement.

That shit should trigger every detection.

Rairii,
@Rairii@haqueers.com avatar

@thegibson i only found this one because someone wrote up what is effectively an arbitrary memcpy as a feature in the same driver ( https://ioctl.fail/echo-ac-writeup/ )

so I threw it into IDA and looked

i guess the interesting feature about this one is it doesn't have a table of EPROCESS offsets for each nt version

no, this one tries to find the most likely EPROCESS offset by statistical analysis

it walks through all processes, and gets the process protection value (by a syscall). it then checks each EPROCESS byte from 0x600-0x1000, for a match it increments a counter in a table, then it uses the offset with the most hits

Rairii,
@Rairii@haqueers.com avatar

@thegibson oh lol

the issue with ioctl 0x9e6a0594 mentioned in the writeup

this is the "init" ioctl

it attempts to read the calling process exe from disk, and then hashes it by SHA512 and verifies an ECC sig (passed in to the ioctl)

the intent of course is that you need a valid ecc sig for your exe to use the interesting calls (of course you could just find one valid signature then use it by dll injection, or some toctou tricks over SMB, etc)

except the global variable that it sets, is set at the beginning of the sigcheck function, and it's not unset at all after that, not even if the sigcheck failed

lol

thegibson,

@Rairii SMH... I wonder if they even realize what they are doing? They have to, right?

Rairii,
@Rairii@haqueers.com avatar

@thegibson look, the driver in question uses KMDF and WDM in the same driver

(the KMDF stuff is unused, the actual implementation is WDM)

so I don't think they do

thegibson,

@Rairii I mean, I am professionally blue team at this point (common outcome when you've been doing this for a while) and that shit triggers false positives (that are actually true positive detections) all the damn time.

It's terrible form on those devs' part.

Rairii,
@Rairii@haqueers.com avatar

@thegibson yeah, KMDF and WDM in the same driver just screams "incompetent devs, this driver probably has at least one exploitable bug"

especially if KMDF is only present for its initialisation

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • ngwrru68w68
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • anitta
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • provamag3
  • tester
  • Leos
  • megavids
  • JUstTest
  • All magazines