NoCheatPlus / Issues

Issues managment for the NoCheatPlus project.
13 stars 9 forks source link

Killuara Bot-Check #349

Closed CaptainObvious0 closed 7 years ago

CaptainObvious0 commented 7 years ago

This is not an issue, this is a enhancement request.

After taking on the challenge of making a community config (here), I have really come to appreciate the work that has gone into NoCheatPlus and the respect I have for keeping it free and active. Once I have perfected the config, I wish to discuss the potential of the config in future versions.

Yet, there is still a major flaw in NoCheatPlus, and that's KillAura. I am proposing that a KillAura check be added. A bot should spawn spawn next to a player and check how many times a player hits that bot. It won't solve all KillAura hacks but it will put a dent into them. I used to use NTAC alongside NoCheatPlus for KillAura checks. NTAC is now currently abandoned and is open-source. (Spigot Page) (GitHub) Since this project is open-source, I think you guys can at least get a good idea on how the KillAura-Bot check works.

I'm sure you already know and have seen this check but here's a explanation on how I see and how I think it should work. A bot floats around a player while they're playing. Depending on their looking direction, the bot will move and adjust. Every now and then the bot may pop in front of the player during pvp. If a player hits that bot too many times in a row or in certain amount of time, action will be taken. I think thic can be customizable in the action section. Such as one hit is equal to one violation level.

Heres what I imagine the config to look like: http://pastebin.com/rXzNppfL

Feedback is appreciated. I think the community will extremely appreciate the KillAura-Bot check. I will be happy to test any betas of the check.

Thanks :)

ghost commented 7 years ago

These 'bot' checks only add more strain onto the server and are trivial for any client developer to bypass.

CaptainObvious0 commented 7 years ago

Then, by default, it can be left disabled. Then, the server owner, has the choice to enable it if they wish. Currently, the current checks for KillAura don't do much. I said in my post "It won't solve all KillAura hacks but it will put a dent into them."

I'm not saying I disagree with you but I think it should be given a try.

asofold commented 7 years ago

Essentially it can be bypassed easily and will be bypassed in generic ways, so it doesn''t pay long term. A somewhat older rant/page i made is here: https://github.com/NoCheatPlus/Docs/blob/master/Development/Discussion/FakeEntities.md

Pointers for quick overview:

Results in:

reded1 commented 7 years ago

I'd recommend this too. Developers will be able to bypass it either way, but it would be useful for users that are not really experienced with the game/cheating.

asofold commented 7 years ago

My arguments go for doing something technically (almost) equivalent, but entirely server side, configurable/extendable by users - however it's not a small task, specifically to maintain it. The point about entities is that they'll get bypassed in generic ways, i.e. the method is dead then, while server-side pattern detection (or something similar) will still be updated and yield results. Fast and faster cat and mice, somewhat expensive to maintain, thus not our main direction, because once bypassed, it'll not provide any protection anymore and it's in general poossible if not easy to bypass.

CaptainObvious0 commented 7 years ago

Thanks for the information. I am definitely interested in another check for KillAura. It doesn't necessarily have to be a bot check, but it could be a learning tactic as you said. I can assist you with any testing that you need. I have no java experience and don't plan to learn it. I want to be able to help with my current ability.

CaptainObvious0 commented 7 years ago

Here's what checks I suggest to add/improve the combat check. Went around gathering information and combined it to this.

EDIT:

Heres a thread on detecting KillAura: https://www.spigotmc.org/threads/killaura-detection.143226/page-3

It's mostly users arguing but some posts have some useful stuff.

Thoughts?

asofold commented 7 years ago

Still we always have to think ahead that one step (adaption to NCP):

Further some technicalities are still in the way.

CaptainObvious0 commented 7 years ago

Thanks for responding. Adding more effective combat checks is a huge step in the right direction. I, and many others, would be really happy if this was completed.

Great progress and I look forward to what happens next.

asofold commented 7 years ago

Concerning yawrate: i'm not sure if all aspects are configurable, you're probably left with short-term and 'normal' limits, which will indirectly affect other stuff. Balancing what can be accessed and how could/should be redone perhaps...

The mob in front thing is an interesting method, but my stance stays clear: "Do you think client side code can not find out what the player is able to see [EDIT: and/or hit (!)] and what not?" :)

Wouldn't call it too much of progress yet :), there has been stuff like "some vehicles can fly now , and possibly go through walls, and there is an item that allows gliding now, and so on", so i got slightly stuck there. Plans are to nail down latency aspects better, using past positions to maintain some kind of latency-window for a rough but not an arbitrary estimation of what the latency is for a certain player, so we can go stricter on the limits of checks, having a somewhat exact past-position of the attacked player, which the attacker is hitting them at. Using that all kinds of extra estimations will be more interesting, like what distances were taken, accuracy of looking direction, deviations from target center etc. So the direction is somewhat clear here, but it still needs work + testing to get something more striking.

CaptainObvious0 commented 7 years ago

Definitely have my support I will be willing to test any new features. Just let me know :)

CaptainObvious0 commented 7 years ago

Little update on the Mob In Front idea.

Here's a video showing the results: https://www.youtube.com/watch?v=1VjJDbtk9Jg&feature=youtu.be

The red over the NPC indicates that they are being attacked. As you can see, the attack is going through the zombie to hit the player. While normal hitting will hit the zombie.

So a method to catch the cheaters: Place an invisible bot in front of the player, while PvPing. If they hit through the invisible bot while pvping, then its safe to assume they are using KillAura. If they hit the bot, then it's an actual player hitting them. This can be spawned in for a second or two, so it's not heavily consuming the servers cpu with fake bots.

This is a really effective way to catch them. Since these aren't testing if they will hit the bot, its testing if it won't hit the bot. Let me know what you think!

asofold commented 7 years ago

Client side entities pose all sorts of issues, in this case it alters game play, as both left and right clicking will hit the invisible entities instead of what's behind - and what's behind needn't be the other player, who could also be invisible :). Then you have latency issues and all sorts of things.

Sending stuff client side is just a horrible way of doing things, besides NCP isn't about posing traps. Further, as i noted above, this will be bypassed in generic ways. We'll just have many/most clients evolve further with this, ending up with no gain on our side. The temporary ban count may be nice to have, due to actual cheaters having to spend a little more money+-effort due to banned accounts, but it literally does nothing to limit cheat clients in general.

So this is a clear "no" from my side, i'd rather add machine learning to catch specific client behavior with server side estimation, than to add entities sent client side.

Janmm14 commented 7 years ago
  1. lag is no real issue if you use 4 bots closely around every enemy player near
  2. a. clients will always be able to determine real & fake players b. clients are able to rotate inside of a tick to the real enemy and letting the client perform hitbox checking and then returning back to the player's view clientside
asofold commented 7 years ago
  1. Latency+congestion always can be an issue, because the attacker could move inside of the player and attack him (client side, attacker), but server side it won't be like that, because the attacked player already has moved on. So 'lag' can be latency, congestion, delay, lag... it might happen somewhere between in the internet and it might matter. Of course you can ignore special cases and so on, you can just not ignore these things, and programming something like this gets more complicated.
  2. :). Virtually every single bot is wasted.

As i said, instead of forcing client developers to do the little step in evolution, ignoring not well made bots, i'd rather invest the time to close the gap on traditional technique where feasible, infrastructure and possibly machine learning.

asofold commented 7 years ago

So closing as won't fix, because entities are out of the question for most.

The idea of catching simple clients fast is nice to have, but it does not increase protection against cheating in general. Something will be done to detect specific cheats some day, provided this projects will be there some day, but it will certainly not start with entities.

Janmm14 commented 7 years ago

One note about some older mentioned things like recorded pro aiming data & its analysis: That wouldn't neccessarily be a killaura with a significant advantage except maybe increased range anymore I guess.

asofold commented 7 years ago

The main point about replay of "pro" data, regardless of what you feed it to, could be that you'll be able to quickly compare if new concepts alter anything at all, e.g. comparing how/which paramters are adjusted. E.g. pros are not pros because they can do everything at once, in many cases (not only minecraft) they are better than average in all/most fields physically and perception wise, but they typically don't just so dwarf 4 world class defenders one after the other - they'll have better judgement and contextually will not make mistakes as much, so there usually is some potential with classic methods to cut down things a little.

With more flexible fight penalties, like reducing the attackers no damage ticks, or cancelling out a percentage of attacks, you could also make pros more fightable by ordinary players :) - not fit for top level pvp servers, but pretty/potentially ok for all others :p, provided you have a way to reduce the impact of very difficult/unlikely to do stuff without affecting ordinary game play.

Historically the default settings of NCP have been made such that i (pvp noob) have a distant chance against @MyPictures with cheats on (no difference to without :p). So of course they used to be too strict for real sophisticated pvp. When you turn the checks off or lower sensitivity, it'll depend on how powerful the old concepts are and how you configure it, concerning what remains in terms of both protection and detection.

Ideally NCP would set such envelopes that clients can't do (much) better than pros, unless they want to get detected - of course without affecting gameplay too much. Certainly there could also be an earlier point, where i see that we can't improve things in a significant way. Much is up to judgement there, currently we're not at the point where we can't improve the basic protection layer.

Eyremba commented 7 years ago

I've had some aspects of this in the queue already, in terms of a new targeting check, combining difficulty of hitting and miss rate and such.

What's with the idea of a hit/miss ratio check now? Will you implement such a check soon?

@asofold

0-x-2-2 commented 7 years ago

hmr checks are not only easy to bypass they also can have false positives for legit players

Janmm14 commented 7 years ago

Not long ago one wrote: Killaura NPC's are not detecting killaura, but a flaw in some killaura implementations.

asofold commented 6 years ago

These checks will kill a hundred implementations, especially fast/simple made ones.

It's just not the intent of NCP - as long as we don't have abundant development resources this won't happen. Interfering with the client also isn't what i'd want to do. You can implement that for your server network if you like - with NCP perhaps one day machine learning will be in use, possibly enabling users to train things themselves and also to have featured sets/people for training data.

Primary direction is to make NCP attract more substantial contribution code-wise, possibly enable automatic workarounds doable by server owners, otherwise implement methods that really limit the capabilities of an adaptiing client developer.