Wednesday, January 23, 2019

Tools for TCP packet tampering on windows?

I've got a bit of a annoyance that I'm trying to hack my way through.

I have an old chat app on my android phone that I use occasionally to keep in touch with some acquaintances. Once you've reached a contact limit you can no longer add any more. The problem is there's a bug in that app that appeared in one of the recent versions. It seems it's reading your "blocked contact" list (used for spammers etc) as part of your contacts. This in practice isn't that big a deal because you can just remove blocked contacts to free up space (doesn't fix the bug though). The problem is that the developer changed the flag (a single byte) to signify a blocked contact but didn't include it in the check. Contacts blocked before whatever version that changed was made still have the old flag. So while the app still receives this list of "old" blocked contacts it doesn't display them on-screen (it doesn't know how to interpret the "old" flag) so I can't delete them. The author isn't responding to any emails so I doubt this app is even supported any more.

I've already tried reverse engineering the APK, changing the generated SMALI and recompiling the APK but it didn't work so I'm guessing there's another obscure check hidden in the (obfuscated) code. But I reckon it would possibly be simpler to just alter the legacy "blocked contact" flags in the network packet itself to what the app expects.

I've already inspected the TCP packets and I've got a reasonable grasp of the particular packets I'm looking for (sadly, it's not as simple as HTTP tampering) so now I just need a tool to change them.

My home network:

WAN -> Opnsense -> Windows PC -> Android Emulator (virtual ethernet adapter).

I've read about netsed. Will this work? i.e. Forwarding data from the host server to netsed, then altering the TCP packet before forwarding to the emulator?

If not, are there are tools I can use to do this?



No comments:

Post a Comment