I use Blender, which is a free program. (i learned about it on this site, I don't remember from who or what thread)
I record the dialogue first (often improvised, or at least has some element of improv to it) then I have to do a lot of math to figure out precise keyframes (i'm terrible at math) and I animate. The characters are all clones of each other, I just paint the shirts and paints, occasionally skin-tones and add hair or other features. The scenery is sometimes made by me, but mostly downloaded from sites like turbosquid or blendswap.
Rendering takes a long time, so I make sure it happens when I'm at my day job. Then when it's done with animation, lip-syncing and sound comes next, which are actually the hardest parts, most of the time.