Usually I agree with Benny, but this time I don't. Knowing your users personally makes a fundamental difference. Of course, you have all the tools you have for public websites (logs, etc), and you have to use most of them. But the most important is:
W A T C H Y O U R U S E R S
Watch them while they're working with the system. Watch newbies as they get stuck. Watch seniors as they look into their notes (most of them maintain a "personal user manual" for rarely used features). Ask for these notes.
If asked, tell them that you're not interested in whether they're lazy and watch Facebook, and won't tell anyone, you are their friend. Your sole job is to make their daily life as pleasant as possible, and all you doing is trying to understand what is their daily life exactly.
Make the prototypes run on their own machines, at their own desks. This way the tools are in their environment, the final environment.
Make users an integral part of the process. Be less formal towards them while still maintaining the formal quality testing documents.
For prototypes, show it in the kitchen (if it's on paper or a mobile app), ask for their opinion.
My desk was near to the entrance. So whenever I wanted to show a prototype, I only had to wait for noon, and ask people that when they come back, step by, I want to show them something.
Nothing formal required. Of course, I was still filling the usual formal forms, but I tried to make the conversation as informal as possible.
The keyword is co-design.
I still maintain, that internal UX is the real UX, as that's where you actually know enough about the users to actually design an experience.