E.B.
Most likely, you won't get your son "out of this". He's young, immature (most 17 year old boys are), and she is a good enough storyteller to get you to become her source of shelter, food, and WiFi. If you, as a mom, fell for her lies imagine what a boy of 17 has believed. You have the life experience to have seen through the smoke screen. He doesn't yet.
But, from what I read, you're accommodating her on every level. You haven't drawn any boundaries! I think I'd like to move in with you too, because apparently I could be rude but get cooked-to-order meals, have free access to the WiFi you pay for, and have no responsibilities! What a break for me that would be!
So until you make her life uncomfortable, you will continue to make her comfortable. When you password-restrict the WiFi, stop cooking homemade meals to order, stop purchasing food she likes, change the locks, and demonstrate to your son how not to be a doormat to an abusive free-loading person, she will get the message. So far you've been her accomplice and enabler in her little games. Perhaps she does come from a damaging home situation and perhaps no one has ever shown her boundaries with kindness, which is NOT the same as boundaries with cruelty.
In the future, you should not become friends with your teen son's girlfriends. You should remain your son's parent. I'm not saying to remove yourself, but there's a difference between kindly getting to know your child's love interest and becoming a friend. Even when your son gets married someday, you won't be your daughter-in-law's best friend. You may enjoy wonderful times with her, and she may choose to share news of her life with you, and you may enjoy a wonderful in-law relationship, but her peers and her friends will be her friends. You may offer her a wealth of knowledge about marriage, babies, careers, etc, and that's ok if the situation is appropriate and you both are receptive to that, but it's not the same as a "friend".
So, I suggest you focus on protecting your home and family, not catering to this girl's wants, treating her kindly but firmly, establishing some ground rules and boundaries, and having a talk with your son. Apologize for not being the mom you should have been, and encourage him to take a clear look at his girlfriend. Do not trash her or complain or point out all her flaws - you'll drive him further away. Encourage him to do what you're doing: looking at the situation with fresh eyes and being bold enough to do what's right while maintaining kindness and decency.