Let $G$ be a finite group. It is possible that $Soc(G)=G$. For example: if $G=\prod_{i=1}^n \mathbb{Z}_{p_i}$ for some primes $p_1,\dotsc,p_n$ (not necessarily distinct), then $Soc(G)=G$.
Can this happen for non-abelian groups? If the answer is affirmative, can we find a condition that guarantees that $Soc(G)$ is a proper subgroup of $G$?
EDIT: It always happens if $G$ is simple, so there are non-abelian examples. The question about a general condition remains though.
EDIT: A related question is: for which groups does it hold that taking $Soc$ some finite number of times results in an abelian group. That is: $Soc(Soc(Soc(\dotsm G\dotsm)))$ is abelian for some finite number of iterations of taking the socle.