The General contractor isn’t at fault, he probably has it in his contract that all workers will be legal and have proper identification. Since the job is obviously a govt project it probably pays Davis Bacon wages, meaning the sub has to submit a certified payroll each week with the ss# etc. on it and signed by the owner/officer of the subcontractor. The sub needs to be investigated because there is no way he was paying those guys appx $26.00 per hour plus fringes. He was pocketing the difference.