It is hard to explain in words, but here are some tips.
For all (except ㅅ/ㅆ), there are three kinds: plain(ㄱ,ㄷ,...), aspirated (ㅋ,ㅌ,...), and tensed (ㄲ,ㄸ,...). For the ㅅ group, there are plain and tensed versions only.
Of the three kinds, the aspirated one is nearly the same as their English counterpart: ㅋ=k, ㅌ=t, ㅍ=p, ㅊ=ch. So you can start from these as a reference point.
The plain sound (ㄱ,ㄷ,ㅂ,ㅅ,ㅈ) is made by reducing the amount of aspiration of ㅋ,ㅌ,ㅍ,ㅊ. You take off the sharp puff of air tomake it dull and heavy. Note that these sounds degenerate further and become a little like the English voiced consonants g,b,d,j when they come after another syllable. So 금 in 금성 is a fairly hard sound with reduced aspiration, but in 야금, it sounds almost like /g/ because it is further softened.
This principle of reduced aspiration and degeneration to a voiced sound applies to ㄱ,ㄷ,ㅂ,ㅈ.
ㅅ is slightly different, but you can just think of it as a soft version of English "s", like the sibilant "sh" turned into an "s"-like sound.
The tensed sound doesn't exist at all in English. You get this sound if you strengthen a non-aspirated counterpart of k,t,p, or ch found in Spanish or French. For example, "cuando" in Spanish is kind of like "kuando", except the initial consonant has almost no aspiration. If you give a lot more force to this sound, you get 꽌도. Similarly, "Paris" as pronounced by the French people has little aspiration for the "p", compared with the way English speakers pronounce it. If you strengthen this non-aspirated "p", you get 빠리.
In the case of ㅅ, English "s" sound with a stress (e.g. "Sam") is closer to ㅆ than ㅅ. When not stressed ("smooth"), it is like ㅅ.
With that in mind, you can watch videos explaining these sounds trying to pick up the differences in the same consonant family.