Best approach for image recognition/classification with few training data
Your data seem to be very small to be used for training a CNN. I do not fully understand what does it mean that an image "belongs" to "Twitter" and not to "Google". 

Nevertheless, my best advice to you is to use simple sklearn classifiers and gather some data that does not belong to any of your options to be used as the None class. The None class should include a similar amount of data as the other classes and then you can train any classier and check the scores.

Regarding the over-fitting situation, you should consider doing cross-validation (because your data is too small for hold out set). Try doing a 5-fold cross-validation and assess how good your model performs on average. 

Good Luck!