"Consulting Companies" - the culprits
Unfortunately, due to the way the H1B system is designed, not only do the CEOs of the US companies end up taking taking advantage of it but it also allows a large number of Indian "companies" to file petitions on behalf of people, who are ready to pay! Their modus operandi is very simple: lure the software Engineers working in India with a US H1B and demand the entire money required for the filing process in cash from these people. Some of these companies indeed do file for petitions and later also earn by making the consultants work on their behalf while some just take the money and then after the April deadline just apologize saying the lottery system did not select the certain person for a petition (and keep the money showing various non-refundable expenses).
Here, I am pointing out Indian companies because I have seen these companies at work quite up close. I don't know if there are people of any other country who create so many "companies" for this purpose. Sometimes these companies are no more than a single person with a one room office registered somewhere in the US. I came to know of quite a few such people who were waiting for their US Green Card to be granted just so that they could open up such one man companies and make loads of money out of unsuspecting Indian software Engineers!
The story just does not end here. If an Indian Engineer is granted a petition, these companies make them lie about many things including their experience, competency, skill set and even current location. The last one is quite interesting; once the petition is granted, these companies ask the Engineers to say that they are physically in the US and not in India! This is to let the client companies believe that they are hiring a contractor who is already present in the US (and has worked with US companies before).
Further, these companies even make up projects and imaginary products to get all the paperwork ready to get their candidates's visa stamped from the US consulates in India.
The result of all this deceit is that often incompetent or inexperienced people get hired for projects with the US client companies and perform poorly. That gives a bad name to Indian Engineers in general.
It's a sad thing that just because of such a badly designed work permit process, not only the American software Engineers and US client companies suffer, but also the Indian Software Engineers who somehow manage to pay for this process from their pocket and then get trapped with these "companies".
I really wish all this would change one day.