I babysat a kid that was EXACTLY like that. It was horrible, you have every ounce of empathy I can muster. I do think I've found a solution though, or at least one that worked with Justin. It might be worth a try for you since you're running out of ideas.
I figure it was the attention from the discipline that he was getting his kicks from, not the naughty act itself. For some reason, I guess the chaos that was created from making his sister cry and adults getting after him and getting upset was funny.
So assuming that idea was correct, I stopped wasting my time giving him warnings, putting him in time out, explaining what he did wrong and why it was wrong and having him apologize to his sister over and over again. Instead, I flat ignored him. 
If I saw him push his sister over or smack her or otherwise be mean, I silently, without even looking at Justin, picked up his sister and talked to her, comforted her and distracted her from the event. If we were playing together when he did it, play ended immediately and all my attention went to Elizabeth and Justin was ignored completely. If he tried to poke me or talk to me or taunt me to get my attention, it didn't work. 
Guess what? Smacking sister was no longer fun. It didn't get him any attention from me, it got him no reaction, no funny lectures or time outs. Instead, his sister was the one getting all of my attention.
He picked it up very quickly.